Manos Pitsidianakis
2bd55fd394
ppc: correct typos
...
Correct typos automatically found with the `typos` tool
<https://crates.io/crates/typos >
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru >
(mjt: remove 2 "arbitrer" hunks, suggested by BALATON)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2024-02-20 22:21:25 +03:00
Richard Henderson
ad75a51e84
tcg: Rename cpu_env to tcg_env
...
Allow the name 'cpu_env' to be used for something else.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-10-03 08:01:02 -07:00
Michael Tokarev
e6a19a6477
ppc: spelling fixes
...
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
Reviewed-by: Cédric Le Goater <clg@kaod.org >
2023-09-20 07:54:34 +03:00
Richard Henderson
253d110dba
target/ppc: Use tcg_gen_negsetcond_*
...
Tested-by: Nicholas Piggin <npiggin@gmail.com >
Reviewed-by: Nicholas Piggin <npiggin@gmail.com >
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-08-24 11:22:42 -07:00
Shivaprasad G Bhat
6a5d81b172
tcg: ppc64: Fix mask generation for vextractdm
...
In function do_extractm() the mask is calculated as
dup_const(1 << (element_width - 1)). '1' being signed int
works fine for MO_8,16,32. For MO_64, on PPC64 host
this ends up becoming 0 on compilation. The vextractdm
uses MO_64, and it ends up having mask as 0.
Explicitly use 1ULL instead of signed int 1 like its
used everywhere else.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1536
Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Lucas Mateus Castro <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Cédric Le Goater <clg@redhat.com >
Message-Id: <168319292809.1159309.5817546227121323288.stgit@ltc-boston1.aus.stglabs.ibm.com >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2023-05-05 12:34:22 -03:00
Richard Henderson
4528d720b4
target/ppc: Avoid tcg_const_* in vmx-impl.c.inc
...
All remaining uses are strictly read-only.
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-03-13 07:03:39 -07:00
Richard Henderson
ffc0ce24fd
target/ppc: Avoid tcg_const_i64 in do_vcntmb
...
Compute both partial results separately and accumulate
at the end, instead of accumulating in the middle.
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-03-13 07:03:39 -07:00
Richard Henderson
c3be8116d9
target/ppc: Avoid tcg_const_i64 in do_vector_shift_quad
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-03-13 06:44:37 -07:00
Richard Henderson
5b7a8b81d2
target/ppc: Split out gen_vx_vmul10
...
Move the body out of this large macro.
Use tcg_constant_i64.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-03-13 06:44:37 -07:00
Richard Henderson
571f850722
target/ppc: Drop tcg_temp_free
...
Translators are no longer required to free tcg temporaries.
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-03-05 13:44:08 -08:00
Richard Henderson
9723281fbb
target/ppc: Don't use tcg_temp_local_new
...
Since tcg_temp_new is now identical, use that.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2023-03-01 07:33:28 -10: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
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
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)
5adb27cd8f
target/ppc: Implemented vector module word/doubleword
...
Implement the following PowerISA v3.1 instructions:
vmodsw: Vector Modulo Signed Word
vmoduw: Vector Modulo Unsigned Word
vmodsd: Vector Modulo Signed Doubleword
vmodud: Vector Modulo Unsigned Doubleword
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220525134954.85056-8-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)
9a1f0866a3
target/ppc: Implemented vector divide extended word
...
Implement the following PowerISA v3.1 instructions:
vdivesw: Vector Divide Extended Signed Word
vdiveuw: Vector Divide Extended Unsigned Word
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220525134954.85056-4-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)
61f302615a
target/ppc: Implemented vector divide instructions
...
Implement the following PowerISA v3.1 instructions:
vdivsw: Vector Divide Signed Word
vdivuw: Vector Divide Unsigned Word
vdivsd: Vector Divide Signed Doubleword
vdivud: Vector Divide Unsigned Doubleword
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220525134954.85056-2-lucas.araujo@eldorado.org.br >
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com >
2022-06-20 08:38:58 -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
ffc2a2818a
target/ppc: introduce do_va_helper
...
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220517123929.284511-10-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
4e4dd9e7ca
target/ppc: use andc in vrlqmi
...
Fixes: 7e5947df6e
("target/ppc: implement vrlqmi")
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220304175156.2012315-5-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
5460ca8490
target/ppc: use extract/extract2 to create vrlqnm mask
...
Fixes: 4e27266840
("target/ppc: implement vrlqnm")
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220304175156.2012315-4-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
9f264141ec
target/ppc: use ext32u and deposit in do_vx_vmulhw_i64
...
Fixes: 29e9dfcf75
("target/ppc: vmulh* instructions without helpers")
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220304175156.2012315-3-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-05 07:16:47 +01:00
Lucas Mateus Castro (alqotel)
0241ccb163
target/ppc: Fix vmul[eo]* instructions marked 2.07
...
Some ISA v2.03 Vector Multiply instructions marked to be ISA v2.07 only.
This patch fixes it.
Fixes: 80eca687c8
("target/ppc: moved vector even and odd multiplication to decodetree")
Reported-by: Howard Spoelstra <hsp.cat7@gmail.com >
Suggested-by: Fabiano Rosas <farosas@linux.ibm.com >
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: <20220304175156.2012315-2-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
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
7e5947df6e
target/ppc: implement vrlqmi
...
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220225210936.1749575-28-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
4e27266840
target/ppc: implement vrlqnm
...
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20220225210936.1749575-27-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
aa0f34ec3f
target/ppc: implement vrlq
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-26-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
df489ad69c
target/ppc: move vrl[bhwd] to decodetree
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-24-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
85085bbc63
target/ppc: implement vsraq
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-23-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
946c3491c6
target/ppc: implement vsrq
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-22-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
3e39edb688
target/ppc: implement vslq
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-21-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
0f05200782
target/ppc: move vs[lr][a][bhwd] to decodetree
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br >
Message-Id: <20220225210936.1749575-20-matheus.ferst@eldorado.org.br >
Signed-off-by: Cédric Le Goater <clg@kaod.org >
2022-03-02 06:51:37 +01:00