================
@@ -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