Cédric Le Goater
668a63140a
target/ppc: Rename variables to avoid local variable shadowing in VUPKPX
...
and fix such warnings :
../target/ppc/int_helper.c: In function ‘helper_vupklpx’:
../target/ppc/int_helper.c:2025:21: warning: declaration of ‘r’ shadows a parameter [-Wshadow=local]
2025 | uint8_t r = (e >> 10) & 0x1f; \
| ^
../target/ppc/int_helper.c:2033:1: note: in expansion of macro ‘VUPKPX’
2033 | VUPKPX(lpx, UPKLO)
| ^~~~~~
../target/ppc/int_helper.c:2017:41: note: shadowed declaration is here
2017 | void helper_vupk##suffix(ppc_avr_t *r, ppc_avr_t *b) \
| ~~~~~~~~~~~^
../target/ppc/int_helper.c:2033:1: note: in expansion of macro ‘VUPKPX’
2033 | VUPKPX(lpx, UPKLO)
| ^~~~~~
Signed-off-by: Cédric Le Goater <clg@kaod.org >
Message-ID: <20230929083143.234553-1-clg@kaod.org >
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru >
Signed-off-by: Markus Armbruster <armbru@redhat.com >
2023-10-06 10:56:54 +02:00
Richard Henderson
7bdbf233d9
target/ppc: Use clmul_64
...
Use generic routine for 64-bit carry-less multiply.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 13:57:00 +00:00
Richard Henderson
f56d3c1a14
target/ppc: Use clmul_32* routines
...
Use generic routines for 32-bit carry-less multiply.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 13:57:00 +00:00
Richard Henderson
a2c67342ee
target/ppc: Use clmul_16* routines
...
Use generic routines for 16-bit carry-less multiply.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 13:57:00 +00:00
Richard Henderson
cec4090d94
target/ppc: Use clmul_8* routines
...
Use generic routines for 8-bit carry-less multiply.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-09-15 13:57:00 +00:00
Philippe Mathieu-Daudé
73c1970676
target/helpers: Remove unnecessary 'qemu/main-loop.h' header
...
"qemu/main-loop.h" declares functions related to QEMU's
main loop mutex, which these files don't access. Remove
the unused "qemu/main-loop.h" header.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20230828221314.18435-8-philmd@linaro.org >
2023-08-31 19:47:43 +02:00
Richard Henderson
af4cb94555
target/ppc: Use aesdec_ISB_ISR_AK_IMC
...
This implements the VNCIPHER instruction.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-07-08 07:30:17 +01:00
Richard Henderson
ce9f5b371d
target/ppc: Use aesenc_SB_SR_MC_AK
...
This implements the VCIPHER instruction.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-07-08 07:30:17 +01:00
Richard Henderson
2cf44f3b8c
target/ppc: Use aesdec_ISB_ISR_AK
...
This implements the VNCIPHERLAST instruction.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-07-08 07:30:17 +01:00
Richard Henderson
7df34e4853
target/ppc: Use aesenc_SB_SR_AK
...
This implements the VCIPHERLAST instruction.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-07-08 07:30:17 +01:00
Lucas Mateus Castro (alqotel)
26c964f851
target/ppc: Move VABSDU[BHW] to decodetree and use gvec
...
Moved VABSDUB, VABSDUH and VABSDUW to decodetree and use gvec to
translate them.
vabsdub:
rept loop master patch
8 12500 0,03601600 0,00688500 (-80.9%)
25 4000 0,03651000 0,00532100 (-85.4%)
100 1000 0,03666900 0,00595300 (-83.8%)
500 200 0,04305800 0,01244600 (-71.1%)
2500 40 0,06893300 0,04273700 (-38.0%)
8000 12 0,14633200 0,12660300 (-13.5%)
vabsduh:
rept loop master patch
8 12500 0,02172400 0,00687500 (-68.4%)
25 4000 0,02154100 0,00531500 (-75.3%)
100 1000 0,02235400 0,00596300 (-73.3%)
500 200 0,02827500 0,01245100 (-56.0%)
2500 40 0,05638400 0,04285500 (-24.0%)
8000 12 0,13166000 0,12641400 (-4.0%)
vabsduw:
rept loop master patch
8 12500 0,01646400 0,00688300 (-58.2%)
25 4000 0,01454500 0,00475500 (-67.3%)
100 1000 0,01545800 0,00511800 (-66.9%)
500 200 0,02168200 0,01114300 (-48.6%)
2500 40 0,04571300 0,04138800 (-9.5%)
8000 12 0,12209500 0,12178500 (-0.3%)
Same as VADDCUW and VSUBCUW, overall performance gain but it uses more
TCGop (4 before the patch, 6 after).
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20221019125040.48028-8-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-10-28 13:15:22 -03:00
Lucas Mateus Castro (alqotel)
c85929b2dd
target/ppc: Move VAVG[SU][BHW] to decodetree and use gvec
...
Moved the instructions VAVGUB, VAVGUH, VAVGUW, VAVGSB, VAVGSH, VAVGSW,
to decodetree and use gvec with them. For these one the right shift
had to be made before the sum as to avoid an overflow, so add 1 at the
end if any of the entries had 1 in its LSB as to replicate the "+ 1"
before the shift described by the ISA.
vavgub:
rept loop master patch
8 12500 0,02616600 0,00754200 (-71.2%)
25 4000 0,02530000 0,00637700 (-74.8%)
100 1000 0,02604600 0,00790100 (-69.7%)
500 200 0,03189300 0,01838400 (-42.4%)
2500 40 0,06006900 0,06851000 (+14.1%)
8000 12 0,13941000 0,20548500 (+47.4%)
vavguh:
rept loop master patch
8 12500 0,01818200 0,00780600 (-57.1%)
25 4000 0,01789300 0,00641600 (-64.1%)
100 1000 0,01899100 0,00787200 (-58.5%)
500 200 0,02527200 0,01828400 (-27.7%)
2500 40 0,05361800 0,06773000 (+26.3%)
8000 12 0,12886600 0,20291400 (+57.5%)
vavguw:
rept loop master patch
8 12500 0,01423100 0,00776600 (-45.4%)
25 4000 0,01780800 0,00638600 (-64.1%)
100 1000 0,02085500 0,00787000 (-62.3%)
500 200 0,02737100 0,01828800 (-33.2%)
2500 40 0,05572600 0,06774200 (+21.6%)
8000 12 0,13101700 0,20311600 (+55.0%)
vavgsb:
rept loop master patch
8 12500 0,03006000 0,00788600 (-73.8%)
25 4000 0,02882200 0,00637800 (-77.9%)
100 1000 0,02958000 0,00791400 (-73.2%)
500 200 0,03548800 0,01860400 (-47.6%)
2500 40 0,06360000 0,06850800 (+7.7%)
8000 12 0,13816500 0,20550300 (+48.7%)
vavgsh:
rept loop master patch
8 12500 0,01965900 0,00776600 (-60.5%)
25 4000 0,01875400 0,00638700 (-65.9%)
100 1000 0,01952200 0,00786900 (-59.7%)
500 200 0,02562000 0,01760300 (-31.3%)
2500 40 0,05384300 0,06742800 (+25.2%)
8000 12 0,13240800 0,20330000 (+53.5%)
vavgsw:
rept loop master patch
8 12500 0,01407700 0,00775600 (-44.9%)
25 4000 0,01762300 0,00640000 (-63.7%)
100 1000 0,02046500 0,00788500 (-61.5%)
500 200 0,02745600 0,01843000 (-32.9%)
2500 40 0,05375500 0,06820500 (+26.9%)
8000 12 0,13068300 0,20304900 (+55.4%)
These results to me seems to indicate that with gvec the results have a
slower translation but faster execution.
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20221019125040.48028-7-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-10-28 13:15:22 -03:00
Lucas Mateus Castro (alqotel)
d57fbd8fd9
target/ppc: Move VPRTYB[WDQ] to decodetree and use gvec
...
Moved VPRTYBW and VPRTYBD to use gvec and both of them and VPRTYBQ to
decodetree. VPRTYBW and VPRTYBD now also use .fni4 and .fni8,
respectively.
vprtybw:
rept loop master patch
8 12500 0,01198900 0,00703100 (-41.4%)
25 4000 0,01070100 0,00571400 (-46.6%)
100 1000 0,01123300 0,00678200 (-39.6%)
500 200 0,01601500 0,01535600 (-4.1%)
2500 40 0,03872900 0,05562100 (43.6%)
8000 12 0,10047000 0,16643000 (65.7%)
vprtybd:
rept loop master patch
8 12500 0,00757700 0,00788100 (4.0%)
25 4000 0,00652500 0,00669600 (2.6%)
100 1000 0,00714400 0,00825400 (15.5%)
500 200 0,01211000 0,01903700 (57.2%)
2500 40 0,03483800 0,07021200 (101.5%)
8000 12 0,09591800 0,21036200 (119.3%)
vprtybq:
rept loop master patch
8 12500 0,00675600 0,00667200 (-1.2%)
25 4000 0,00619400 0,00643200 (3.8%)
100 1000 0,00707100 0,00751100 (6.2%)
500 200 0,01199300 0,01342000 (11.9%)
2500 40 0,03490900 0,04092900 (17.2%)
8000 12 0,09588200 0,11465100 (19.6%)
I wasn't expecting such a performance lost in both VPRTYBD and VPRTYBQ,
I'm not sure if it's worth to move those instructions. Comparing the
assembly of the helper with the TCGop they are pretty similar, so
I'm not sure why vprtybd took so much more time.
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20221019125040.48028-6-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-10-28 13:15:22 -03:00
Lucas Mateus Castro (alqotel)
90b5aadb09
target/ppc: Move VNEG[WD] to decodtree and use gvec
...
Moved the instructions VNEGW and VNEGD to decodetree and used gvec to
decode it.
vnegw:
rept loop master patch
8 12500 0,01053200 0,00548400 (-47.9%)
25 4000 0,01030500 0,00390000 (-62.2%)
100 1000 0,01096300 0,00395400 (-63.9%)
500 200 0,01472000 0,00712300 (-51.6%)
2500 40 0,03809000 0,02147700 (-43.6%)
8000 12 0,09957100 0,06202100 (-37.7%)
vnegd:
rept loop master patch
8 12500 0,00594600 0,00543800 (-8.5%)
25 4000 0,00575200 0,00396400 (-31.1%)
100 1000 0,00676100 0,00394800 (-41.6%)
500 200 0,01149300 0,00709400 (-38.3%)
2500 40 0,03441500 0,02169600 (-37.0%)
8000 12 0,09516900 0,06337000 (-33.4%)
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20221019125040.48028-5-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-10-28 13:15:22 -03:00
Lucas Mateus Castro (alqotel)
611bc69bf6
target/ppc: Move V(ADD|SUB)CUW to decodetree and use gvec
...
This patch moves VADDCUW and VSUBCUW to decodtree with gvec using an
implementation based on the helper, with the main difference being
changing the -1 (aka all bits set to 1) result returned by cmp when
true to +1. It also implemented a .fni4 version of those instructions
and dropped the helper.
vaddcuw:
rept loop master patch
8 12500 0,01008200 0,00612400 (-39.3%)
25 4000 0,01091500 0,00471600 (-56.8%)
100 1000 0,01332500 0,00593700 (-55.4%)
500 200 0,01998500 0,01275700 (-36.2%)
2500 40 0,04704300 0,04364300 (-7.2%)
8000 12 0,10748200 0,11241000 (+4.6%)
vsubcuw:
rept loop master patch
8 12500 0,01226200 0,00571600 (-53.4%)
25 4000 0,01493500 0,00462100 (-69.1%)
100 1000 0,01522700 0,00455100 (-70.1%)
500 200 0,02384600 0,01133500 (-52.5%)
2500 40 0,04935200 0,03178100 (-35.6%)
8000 12 0,09039900 0,09440600 (+4.4%)
Overall there was a gain in performance, but the TCGop code was still
slightly bigger in the new version (it went from 4 to 5).
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20221019125040.48028-4-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-10-28 13:15:22 -03:00
Lucas Mateus Castro (alqotel)
306e475335
target/ppc: Move VMH[R]ADDSHS instruction to decodetree
...
This patch moves VMHADDSHS and VMHRADDSHS to decodetree I couldn't find
a satisfactory implementation with TCG inline.
vmhaddshs:
rept loop master patch
8 12500 0,02983400 0,02648500 (-11.2%)
25 4000 0,02946000 0,02518000 (-14.5%)
100 1000 0,03104300 0,02638000 (-15.0%)
500 200 0,04002000 0,03502500 (-12.5%)
2500 40 0,08090100 0,07562200 (-6.5%)
8000 12 0,19242600 0,18626800 (-3.2%)
vmhraddshs:
rept loop master patch
8 12500 0,03078600 0,02851000 (-7.4%)
25 4000 0,02793200 0,02746900 (-1.7%)
100 1000 0,02886000 0,02839900 (-1.6%)
500 200 0,03714700 0,03799200 (+2.3%)
2500 40 0,07948000 0,07852200 (-1.2%)
8000 12 0,19049800 0,18813900 (-1.2%)
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20221019125040.48028-3-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-10-28 13:15:22 -03:00
Lucas Mateus Castro (alqotel)
dc46167a22
target/ppc: Moved VMLADDUHM to decodetree and use gvec
...
This patch moves VMLADDUHM to decodetree a creates a gvec implementation
using mul_vec and add_vec.
rept loop master patch
8 12500 0,01810500 0,00903100 (-50.1%)
25 4000 0,01739400 0,00747700 (-57.0%)
100 1000 0,01843600 0,00901400 (-51.1%)
500 200 0,02574600 0,01971000 (-23.4%)
2500 40 0,05921600 0,07121800 (+20.3%)
8000 12 0,15326700 0,21725200 (+41.7%)
The significant difference in performance when REPT is low and LOOP is
high I think is due to the fact that the new implementation has a higher
translation time, as when using a helper only 5 TCGop are used but with
the patch a total of 10 TCGop are needed (Power lacks a direct mul_vec
equivalent so this instruction is implemented with the help of 5 others,
vmuleu, vmulou, vmrgh, vmrgl and vpkum).
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20221019125040.48028-2-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-10-28 13:15:22 -03:00
Víctor Colombo
af721a3169
target/ppc: Set OV32 when OV is set
...
According to PowerISA: "OV32 is set whenever OV is implicitly set, and
is set to the same value that OV is defined to be set to in 32-bit
mode".
This patch changes helper_update_ov_legacy to set/clear ov32 when
applicable.
Signed-off-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Message-Id: <20220906125523.38765-7-victor.colombo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-09-20 10:54:06 -03:00
Matheus Ferst
b7d30fae5b
target/ppc: use int128.h methods in vsubcuq
...
And also move the insn to decodetree and remove the now unused
avr_qw_not, avr_qw_cmpu, and avr_qw_add methods.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Message-Id: <20220606150037.338931-8-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-07-06 10:22:38 -03:00
Matheus Ferst
e6a5ad43de
target/ppc: use int128.h methods in vsubecuq and vsubeuqm
...
And also move the insns to decodetree.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Message-Id: <20220606150037.338931-7-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-07-06 10:22:38 -03:00
Matheus Ferst
b132be53a4
target/ppc: use int128.h methods in vsubuqm
...
And also move the insn to decodetree
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Message-Id: <20220606150037.338931-6-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-07-06 10:22:38 -03:00
Matheus Ferst
8290ea509f
target/ppc: use int128.h methods in vaddcuq
...
And also move the insn to decodetree.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Message-Id: <20220606150037.338931-5-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-07-06 10:22:38 -03:00
Matheus Ferst
896d92c81d
target/ppc: use int128.h methods in vaddecuq and vaddeuqm
...
And also move the insns to decodetree and remove the now unused
avr_qw_addc method.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Message-Id: <20220606150037.338931-4-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-07-06 10:22:38 -03:00
Matheus Ferst
7ca0428687
target/ppc: use int128.h methods in vadduqm
...
And also move the insn to decodetree.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Message-Id: <20220606150037.338931-3-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-07-06 10:22:37 -03:00
Matheus Ferst
e82ca8acdd
target/ppc: use int128.h methods in vpmsumd
...
Also drop VECTOR_FOR_INORDER_I usage since there is no need to access
the elements in any particular order, and move the instruction to
decodetree.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Víctor Colombo <victor.colombo@eldorado.org.br >
Message-Id: <20220606150037.338931-2-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-07-06 10:22:37 -03:00
Daniel Henrique Barboza
feeef6b6dd
target/ppc: avoid int32 multiply overflow in int_helper.c
...
Coverity is not thrilled about the multiply operations being done in
ger_rank8() and ger_rank2(), giving an error like the following:
Integer handling issues (OVERFLOW_BEFORE_WIDEN)
Potentially overflowing expression "sextract32(a, 4 * i, 4) *
sextract32(b, 4 * i, 4)" with type "int" (32 bits, signed) is evaluated
using 32-bit arithmetic, and then used in a context that expects an
expression of type "int64_t" (64 bits, signed).
Fix both instances where this occur by adding an int64_t cast in the
first operand, forcing the result to be 64 bit.
Fixes: Coverity CID 1489444, 1489443
Fixes: 345531533f
("target/ppc: Implemented xvi*ger* instructions")
Cc: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Cc: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Message-Id: <20220602141449.118173-1-danielhb413@gmail.com >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-06-20 08:38:58 -03:00
Matheus Ferst
8f7d41e0c9
target/ppc: fix vbpermd in big endian hosts
...
The extract64 arguments are not endian dependent as they are only used
for bitwise operations. The current behavior in little-endian hosts is
correct; since the indexes in VRB are in PowerISA-ordering, we should
always invert the value before calling extract64. Also, using the VsrD
macro, we can have a single EXTRACT_BIT definition for big and
little-endian with the correct behavior.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220601125355.1266165-1-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-06-20 08:38:58 -03:00
Lucas Mateus Castro (alqotel)
b80bec3a07
target/ppc: Implemented vector module quadword
...
Implement the following PowerISA v3.1 instructions:
vmodsq: Vector Modulo Signed Quadword
vmoduq: Vector Modulo Unsigned Quadword
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/744
Message-Id: <20220525134954.85056-9-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-06-20 08:38:58 -03:00
Lucas Mateus Castro (alqotel)
a173ba88be
target/ppc: Implemented remaining vector divide extended
...
Implement the following PowerISA v3.1 instructions:
vdivesd: Vector Divide Extended Signed Doubleword
vdiveud: Vector Divide Extended Unsigned Doubleword
vdivesq: Vector Divide Extended Signed Quadword
vdiveuq: Vector Divide Extended Unsigned Quadword
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220525134954.85056-7-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-06-20 08:38:58 -03:00
Lucas Mateus Castro (alqotel)
1700f2bf97
target/ppc: Implemented vector divide quadword
...
Implement the following PowerISA v3.1 instructions:
vdivsq: Vector Divide Signed Quadword
vdivuq: Vector Divide Unsigned Quadword
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220525134954.85056-3-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-06-20 08:38:58 -03:00
Lucas Mateus Castro (alqotel)
345531533f
target/ppc: Implemented xvi*ger* instructions
...
Implement the following PowerISA v3.1 instructions:
xvi4ger8: VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update)
xvi4ger8pp: VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update)
Positive multiply, Positive accumulate
xvi8ger4: VSX Vector 4-bit Signed Integer GER (rank-8 update)
xvi8ger4pp: VSX Vector 4-bit Signed Integer GER (rank-8 update)
Positive multiply, Positive accumulate
xvi8ger4spp: VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update)
with Saturate Positive multiply, Positive accumulate
xvi16ger2: VSX Vector 16-bit Signed Integer GER (rank-2 update)
xvi16ger2pp: VSX Vector 16-bit Signed Integer GER (rank-2 update)
Positive multiply, Positive accumulate
xvi16ger2s: VSX Vector 16-bit Signed Integer GER (rank-2 update)
with Saturation
xvi16ger2spp: VSX Vector 16-bit Signed Integer GER (rank-2 update)
with Saturation Positive multiply, Positive accumulate
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220524140537.27451-3-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-05-26 17:11:33 -03:00
Matheus Ferst
6f52f731a6
target/ppc: declare vmsumsh[ms] helper with call flags
...
Move vmsumshm and vmsumshs to decodetree, declare vmsumshm helper with
TCG_CALL_NO_RWG, and drop the unused env argument.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220517123929.284511-13-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-05-26 17:11:33 -03:00
Matheus Ferst
89a5a1aee2
target/ppc: declare vmsumuh[ms] helper with call flags
...
Move vmsumuhm and vmsumuhs to decodetree, declare vmsumuhm helper with
TCG_CALL_NO_RWG, and drop the unused env argument.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220517123929.284511-12-matheus.ferst@eldorado.org.br >
[danielhb: added #undef VMSUMUHM to fix ppc64 build]
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-05-26 17:11:33 -03:00
Matheus Ferst
b2dc03a5c3
target/ppc: declare vmsum[um]bm helpers with call flags
...
Move vmsumubm and vmsummbm to decodetree, declare both helpers with
TCG_CALL_NO_RWG, and drop the unused env argument.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220517123929.284511-11-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-05-26 17:11:33 -03:00
Matheus Ferst
8f5eeee3f1
target/ppc: declare xxextractuw and xxinsertw helpers with call flags
...
Move xxextractuw and xxinsertw to decodetree, declare both helpers with
TCG_CALL_NO_RWG, and drop the unused env argument.
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220517123929.284511-9-matheus.ferst@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-05-26 17:11:32 -03:00
Marc-André Lureau
e03b56863d
Replace config-time define HOST_WORDS_BIGENDIAN
...
Replace a config-time define with a compile time condition
define (compatible with clang and gcc) that must be declared prior to
its usage. This avoids having a global configure time define, but also
prevents from bad usage, if the config header wasn't included before.
This can help to make some code independent from qemu too.
gcc supports __BYTE_ORDER__ from about 4.6 and clang from 3.2.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
[ For the s390x parts I'm involved in ]
Acked-by: Halil Pasic <pasic@linux.ibm.com >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220323155743.1585078-7-marcandre.lureau@redhat.com >
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2022-04-06 10:50:37 +02:00
Matheus Ferst
618574ddf7
target/ppc: split XXGENPCV macros for readability
...
Fixes: b090f4f1e3
("target/ppc: Implement xxgenpcv[bhwd]m instruction")
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220304175156.2012315-6-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-05 07:16:47 +01:00
Matheus Ferst
b090f4f1e3
target/ppc: Implement xxgenpcv[bhwd]m instruction
...
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220225210936.1749575-36-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:38 +01:00
Matheus Ferst
1015fcab89
target/ppc: Implement xxeval
...
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220225210936.1749575-35-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:38 +01:00
Matheus Ferst
41c2877f52
target/ppc: Implement xxpermx instruction
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-33-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:38 +01:00
Matheus Ferst
28347fe2a7
target/ppc: Move vsel and vperm/vpermr to decodetree
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-29-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:37 +01:00
Matheus Ferst
02c74f0efc
target/ppc: move vrl[bhwd]nm/vrl[bhwd]mi to decodetree
...
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220225210936.1749575-25-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:37 +01:00
Matheus Ferst
fb5303cc05
target/ppc: implement vstri[bh][lr]
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-15-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:37 +01:00
Matheus Ferst
eb936dc074
target/ppc: Move Vector Compare Not Equal or Zero to decodetree
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-11-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:37 +01:00
Matheus Ferst
6a394290df
target/ppc: Move Vector Compare Equal/Not Equal/Greater Than to decodetree
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-10-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:37 +01:00
Lucas Coutinho
9bfe92135b
target/ppc: Move vexts[bhw]2[wd] to decodetree
...
Move the following instructions to decodetree:
vextsb2w: Vector Extend Sign Byte To Word
vextsh2w: Vector Extend Sign Halfword To Word
vextsb2d: Vector Extend Sign Byte To Doubleword
vextsh2d: Vector Extend Sign Halfword To Doubleword
vextsw2d: Vector Extend Sign Word To Doubleword
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Lucas Coutinho <lucas.coutinho@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-8-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:37 +01:00
Lucas Mateus Castro (alqotel)
29e9dfcf75
target/ppc: vmulh* instructions without helpers
...
Changed vmulhuw, vmulhud, vmulhsw, vmulhsd to not
use helpers.
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220225210936.1749575-5-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:36 +01:00
Lucas Mateus Castro (alqotel)
d45da01428
target/ppc: Moved vector multiply high and low to decodetree
...
Moved instructions vmulld, vmulhuw, vmulhsw, vmulhud and vmulhsd to
decodetree
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-4-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:36 +01:00
Lucas Mateus Castro (alqotel)
80eca687c8
target/ppc: moved vector even and odd multiplication to decodetree
...
Moved the instructions vmulesb, vmulosb, vmuleub, vmuloub,
vmulesh, vmulosh, vmuleuh, vmulouh, vmulesw, vmulosw,
muleuw and vmulouw from legacy to decodetree. Implemented
the instructions vmulesd, vmulosd, vmuleud, vmuloud.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-3-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:36 +01:00
Cédric Le Goater
005b69fdcc
target/ppc: Remove PowerPC 601 CPUs
...
The PowerPC 601 processor is the first generation of processors to
implement the PowerPC architecture. It was designed as a bridge
processor and also could execute most of the instructions of the
previous POWER architecture. It was found on the first Macs and IBM
RS/6000 workstations.
There is not much interest in keeping the CPU model of this
POWER-PowerPC bridge processor. We have the 603 and 604 CPU models of
the 60x family which implement the complete PowerPC instruction set.
Cc: "Hervé Poussineau" <hpoussin@reactos.org >
Cc: Laurent Vivier <laurent@vivier.eu >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com >
Message-Id: <20220203142756.1302515-1-clg@kaod.org >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-02-09 09:08:55 +01:00