[all-commits] [llvm/llvm-project] 4727d2: [X86] Remove __builtin_ia32_pabs intrinsics and us...
Simon Pilgrim via All-commits
all-commits at lists.llvm.org
Fri Jan 21 03:59:25 PST 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 4727d29d908f9dd608dd97a58c0af1ad579fd3ca
https://github.com/llvm/llvm-project/commit/4727d29d908f9dd608dd97a58c0af1ad579fd3ca
Author: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: 2022-01-21 (Fri, 21 Jan 2022)
Changed paths:
M clang/include/clang/Basic/BuiltinsX86.def
M clang/lib/CodeGen/CGBuiltin.cpp
M clang/lib/Headers/avx2intrin.h
M clang/lib/Headers/avx512bwintrin.h
M clang/lib/Headers/avx512fintrin.h
M clang/lib/Headers/avx512vlintrin.h
M clang/lib/Headers/tmmintrin.h
M clang/test/CodeGen/builtins-x86.c
Log Message:
-----------
[X86] Remove __builtin_ia32_pabs intrinsics and use generic __builtin_elementwise_abs
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`).
Differential Revision: https://reviews.llvm.org/D117791
More information about the All-commits
mailing list