https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110118
Bug ID: 110118
Summary: Miss CSE optimization for vptest after
r14-1466-g3635e8c67e13e3da7e1e23a617dd9952218e93e0
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: crazylht at gmail dot com
Target Milestone: ---
#include <immintrin.h>
int do_stuff(__m256i Y0, __m256i Y1, __m128i X2) {
__m256i And01 = _mm256_and_si256(Y0, Y1);
int TestResult = _mm256_testc_si256(And01, And01);
int t1 = _mm256_testz_si256(And01, And01);
return TestResult + t1;
}
GCC 12.2 generates
do_stuff:
vpand %ymm1, %ymm0, %ymm0
xorl %eax, %eax
vptest %ymm0, %ymm0
sete %al
adcl $0, %eax
ret
GCC trunk generates
do_stuff:
vpand %ymm1, %ymm0, %ymm0
xorl %eax, %eax
vptest %ymm0, %ymm0
setc %al
xorl %edx, %edx
vptest %ymm0, %ymm0
sete %dl
addl %edx, %eax
ret