[clang] Added vector intrinsics for shift left (PR #187516)

Andrzej WarzyƄski via cfe-commits cfe-commits at lists.llvm.org
Fri Mar 20 00:49:53 PDT 2026


================
@@ -982,3 +982,166 @@ int64_t test_vshld_u64(int64_t a,int64_t b) {
   return (int64_t)vshld_u64(a, b);
 }
 
+// ALL-LABEL: test_vshlq_n_s8
+int8x16_t test_vshlq_n_s8(int8x16_t a, int64_t b) {
+ // CIR: [[RES:%.*]] = cir.shift(left, %{{.*}} : !cir.vector<16 x !s8i>, %{{.*}} : !cir.vector<16 x !s8i>) -> !cir.vector<16 x !s8i>
+  
+ // LLVM-SAME: <16 x i8> {{.*}} [[A:%.*]], i64 {{.*}} [[B:%.*]]) #[[ATTR0:[0-9]+]] {
+ // LLVM: [[SHL:%.*]] = shl <16 x i8> {{.*}}, splat (i8 1)
+ // LLVM: ret <16 x i8> [[SHL]]
+ return vshlq_n_s8(a, 1);
----------------
banach-space wrote:

Indeed, that's the intended approach for testing, documented in: https://github.com/llvm/llvm-project/issues/185382#issuecomment-4022508229

https://github.com/llvm/llvm-project/pull/187516


More information about the cfe-commits mailing list