diff options
author | liuhongt <hongtao.liu@intel.com> | 2023-06-05 11:59:33 +0800 |
---|---|---|
committer | liuhongt <hongtao.liu@intel.com> | 2023-06-09 09:40:53 +0800 |
commit | 07b86ab138bf8be8cb331015cd2b9775c6856ac6 (patch) | |
tree | 702382ab44f694e9d5831f6695e4c00637f52312 /gcc/tree-vectorizer.h | |
parent | feae15aeab6bbbedf8fa26fdffd16d08c9fc4064 (diff) | |
download | gcc-07b86ab138bf8be8cb331015cd2b9775c6856ac6.zip gcc-07b86ab138bf8be8cb331015cd2b9775c6856ac6.tar.gz gcc-07b86ab138bf8be8cb331015cd2b9775c6856ac6.tar.bz2 |
Fold _mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple ABSU_EXPR + VCE.
r14-1145 fold the intrinsics into gimple ABS_EXPR which has UB for
TYPE_MIN, but PABSB will store unsigned result into dst. The patch
uses ABSU_EXPR + VCE instead of ABS_EXPR.
Also don't fold _mm_abs_{pi8,pi16,pi32} w/o TARGET_64BIT since 64-bit
vector absm2 is guarded with TARGET_MMX_WITH_SSE.
gcc/ChangeLog:
PR target/110108
* config/i386/i386.cc (ix86_gimple_fold_builtin): Fold
_mm{,256,512}_abs_{epi8,epi16,epi32,epi64} into gimple
ABSU_EXPR + VCE, don't fold _mm_abs_{pi8,pi16,pi32} w/o
TARGET_64BIT.
* config/i386/i386-builtin.def: Replace CODE_FOR_nothing with
real codename for __builtin_ia32_pabs{b,w,d}.
gcc/testsuite/ChangeLog:
* gcc.target/i386/pr110108.c: New test.
* gcc.target/i386/pr110108-3.c: New test.
* gcc.target/i386/pr109900.c: Adjust testcase.
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions