================
@@ -32,3 +36,39 @@ vint32m1_t test_no_vector_cc_attr(vint32m1_t input, int32_t 
*base, size_t vl) {
   __riscv_vse32_v_i32m1(base, val, vl);
   return ret;
 }
+
+// CHECK-LLVM: define dso_local void @test_vls_no_cc(i128 noundef %arg.coerce)
+// CHECK-LLVM-ABI-VLEN: define dso_local void @test_vls_no_cc(<vscale x 1 x 
i32> noundef %arg.coerce)
+void test_vls_no_cc(__attribute__((vector_size(16))) int arg) {}
+
+// CHECK-LLVM: define dso_local riscv_vls_cc void 
@test_vls_default_abi_vlen(<vscale x 2 x i32> noundef %arg.coerce)
+// CHECK-LLVM-ABI-VLEN: define dso_local riscv_vls_cc void 
@test_vls_default_abi_vlen(<vscale x 2 x i32> noundef %arg.coerce)
+void __attribute__((riscv_vls_cc)) 
test_vls_default_abi_vlen(__attribute__((vector_size(16))) int arg) {}
+
+// CHECK-LLVM: define dso_local riscv_vls_cc void 
@test_vls_default_abi_vlen_c23(<vscale x 2 x i32> noundef %arg.coerce)
+// CHECK-LLVM-ABI-VLEN: define dso_local riscv_vls_cc void 
@test_vls_default_abi_vlen_c23(<vscale x 2 x i32> noundef %arg.coerce)
+[[riscv::vls_cc]] void 
test_vls_default_abi_vlen_c23(__attribute__((vector_size(16))) int arg) {}
+
+// CHECK-LLVM: define dso_local riscv_vls_cc void 
@test_vls_default_abi_vlen_unsupported_feature(<vscale x 2 x i32> noundef 
%arg.coerce)
+// CHECK-LLVM-ABI-VLEN: define dso_local riscv_vls_cc void 
@test_vls_default_abi_vlen_unsupported_feature(<vscale x 2 x i32> noundef 
%arg.coerce)
+void __attribute__((riscv_vls_cc)) 
test_vls_default_abi_vlen_unsupported_feature(__attribute__((vector_size(16))) 
_Float16 arg) {}
----------------
kito-cheng wrote:

I would suggest either always use `i8` or integer type with same width as the 
element (`i16` in this case),
also could you add test case for zve64x with `__attribute__((vector_size(16))) 
float arg`

https://github.com/llvm/llvm-project/pull/100346
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to