diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2021-05-18 17:25:54 +0200 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2021-05-18 17:27:37 +0200 |
commit | 46ca31d65092e5afcef292f807fcf14c5363280d (patch) | |
tree | bf4070431fa8bed5ef42d23e03cf3fb97d6e8d50 /gcc/cp/class.c | |
parent | 7d3711a5a58674bd17b19bcf4e3f2edd60ba76c1 (diff) | |
download | gcc-46ca31d65092e5afcef292f807fcf14c5363280d.zip gcc-46ca31d65092e5afcef292f807fcf14c5363280d.tar.gz gcc-46ca31d65092e5afcef292f807fcf14c5363280d.tar.bz2 |
i386: Implement 4-byte vector support [PR100637]
Add infrastructure, logic and arithmetic support for 4-byte vectors.
These can be used with SSE2 targets, where movd instructions from/to
XMM registers are available. x86_64 ABI passes 4-byte vectors in
integer registers, so also add logic operations with integer registers.
2021-05-18 Uroš Bizjak <ubizjak@gmail.com>
gcc/
PR target/100637
* config/i386/i386.h (VALID_SSE2_REG_MODE):
Add V4QI and V2HI modes.
(VALID_INT_MODE_P): Ditto.
* config/i386/mmx.md (VI_32): New mode iterator.
(mmxvecsize): Handle V4QI and V2HI.
(Yv_Yw): Ditto.
(mov<VI_32:mode>): New expander.
(*mov<mode>_internal): New insn pattern.
(movmisalign<VI_32:mode>): New expander.
(neg<VI_32:mode>): New expander.
(<plusminus:insn><VI_32:mode>3): New expander.
(*<plusminus:insn><VI_32:mode>3): New insn pattern.
(mulv2hi3): New expander.
(*mulv2hi3): New insn pattern.
(one_cmpl<VI_32:mode>2): New expander.
(*andnot<VI_32:mode>3): New insn pattern.
(<any_logic:code><VI_32:mode>3): New expander.
(*<any_logic:code><VI_32:mode>3): New insn pattern.
gcc/testsuite/
PR target/100637
* gcc.target/i386/pr100637-1b.c: New test.
* gcc.target/i386/pr100637-1w.c: Ditto.
* gcc.target/i386/pr92658-avx2-2.c: Do not XFAIL scan for pmovsxbq.
* gcc.target/i386/pr92658-avx2.c: Do not XFAIL scan for pmovzxbq.
* gcc.target/i386/pr92658-avx512vl.c: Do not XFAIL scan for vpmovdb.
* gcc.target/i386/pr92658-sse4-2.c: Do not XFAIL scan for
pmovsxbd and pmovsxwq.
* gcc.target/i386/pr92658-sse4.c: Do not XFAIL scan for
pmovzxbd and pmovzxwq.
Diffstat (limited to 'gcc/cp/class.c')
0 files changed, 0 insertions, 0 deletions