================
@@ -209,3 +209,470 @@ svfloat64_t test_svdup_n_f64(float64_t op) MODE_ATTR
 // LLVM_OGCG_CIR:    [[RES:%.*]] = call <vscale x 2 x double> 
@llvm.aarch64.sve.dup.x.nxv2f64(double [[OP_LOAD]])
   return SVE_ACLE_FUNC(svdup,_n,_f64,)(op);
 }
+
+// ALL-LABEL: @test_svdup_n_s8_z
+svint8_t test_svdup_n_s8_z(svbool_t pg, int8_t op) MODE_ATTR
+{
+// CIR-SAME:      %[[PG:.*]]: !cir.vector<[16] x !cir.int<u, 1>>
+// CIR-SAME:      %[[OP:.*]]: !s8i
+// CIR-SAME:        -> !cir.vector<[16] x !s8i>
+// CIR:           %[[ALLOCA_PG:.*]] = cir.alloca !cir.vector<[16] x 
!cir.int<u, 1>>
+// CIR:           %[[ALLOCA_OP:.*]] = cir.alloca !s8i
+// CIR:           %[[ALLOCA_RES:.*]] = cir.alloca !cir.vector<[16] x !s8i>
+// CIR:           cir.store %[[PG]], %[[ALLOCA_PG]]
+// CIR:           cir.store %[[OP]], %[[ALLOCA_OP]]
+// CIR:           %[[LOAD_PG:.*]] = cir.load align(2) %[[ALLOCA_PG]]
+// CIR:           %[[LOAD_OP:.*]] = cir.load align(1) %[[ALLOCA_OP]]
+// CIR:           %[[CONST_0:.*]] = cir.const #cir.zero : !cir.vector<[16] x 
!s8i>
+// CIR:           %[[CONVERT_PG:.*]] = cir.call_llvm_intrinsic 
"aarch64.sve.dup" %[[CONST_0]], %[[LOAD_PG]], %[[LOAD_OP]]
+// CIR-SAME:        -> !cir.vector<[16] x !s8i>
+// CIR:           cir.store %[[CONVERT_PG]], %[[ALLOCA_RES]]
+// CIR:           %[[RES:.*]] = cir.load %[[ALLOCA_RES]]
+// CIR:           cir.return %[[RES]]
+
+// LLVM_OGCG_CIR-SAME: <vscale x 16 x i1> [[PG:%.*]], i8 
{{(noundef)?[[:space:]]?}}[[OP:%.*]])
----------------
bcardosolopes wrote:

Nit: I didn't see this before, but CIR, LLVM and OGCG are the more default way 
to write these.

https://github.com/llvm/llvm-project/pull/175976
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to