llvm-project
6e17b2ef - [CIR][AArch64] Upstream NEON shift left builtins (#186406)

Commit
3 days ago
[CIR][AArch64] Upstream NEON shift left builtins (#186406) This PR adds CIR generation for the following AArch64 NEON builtins: __builtin_neon_vshld_n_s64 and __builtin_neon_vshld_n_u64 (constant shifts) extracted the constant value and use it directly for shift left __builtin_neon_vshld_s64 and __builtin_neon_vshld_u64 (variable shifts) there is an existing function to handles SISD (SIngle Instruction Single Data), reusing this to create the right CIR instructions __builtin_neon_vshld_s64 -- call i64 @llvm.aarch64.neon.sshl.i64(i64 [[A]], i64 [[B]]) __builtin_neon_vshld_u64 -- call i64 @llvm.aarch64.neon.ushl.i64(i64 [[A]], i64 [[B]]) added test cases in intrinsics.c by looking at the test cases present in https://github.com/llvm/llvm-project/blob/main/clang/test/CodeGen/AArch64/neon-shifts.c before adding the code it gave a not implemented error and after adding the code changes the error is not present the code succeeds. ran the test cases using ``` bin/llvm-lit -v \ /Users/albertbolt/projects/llvm-project/clang/test/CodeGen/AArch64/neon/intrinsics.c ``` #185382 --------- Co-authored-by: Andrzej WarzyƄski <andrzej.warzynski@gmail.com>
Author
Parents
Loading