aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorliuhongt <hongtao.liu@intel.com>2023-06-05 11:59:33 +0800
committerliuhongt <hongtao.liu@intel.com>2023-06-09 09:40:53 +0800
commit07b86ab138bf8be8cb331015cd2b9775c6856ac6 (patch)
tree702382ab44f694e9d5831f6695e4c00637f52312 /gcc/tree-vectorizer.h
parentfeae15aeab6bbbedf8fa26fdffd16d08c9fc4064 (diff)
downloadgcc-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