D111986 added the generic __builtin_elementwise_abs() intrinsic with the same integer absolute behaviour as the SSE/AVX instructions (abs(INT__MIN) == INT_MIN)
This patch removes the __builtin_ia32_pabs* intrinsics and just uses __builtin_elementwise_abs - the existing tests see no changes:
__m256i test_mm256_abs_epi8(__m256i a) { // CHECK-LABEL: test_mm256_abs_epi8 // CHECK: [[ABS:%.*]] = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %{{.*}}, i1 false) return _mm256_abs_epi8(a); }
This requires us to add a __v64qs explicitly signed char vector type (we already have __v16qs and __v32qs).
Do we need to declare explicit signed?