@@ -80,7 +80,7 @@ void test_dmxvi8gerx4spp(unsigned char *vdmrp, unsigned char *vpp, vector unsign
8080
8181// CHECK-LABEL: @test_pmdmxvi8gerx4spp(
8282// CHECK-NEXT: entry:
83- // CHECK-NEXT: [[TMP0:%.*]] = load <1024 x i1>, ptr [[VDMRP:%.*]], align 128, !tbaa [[TBAA6]]
83+ // CHECK-NEXT: [[TMP0:%.*]] = load <1024 x i1>, ptr [[VDMRP:%.*]], align 128, !tbaa [[TBAA6]]
8484// CHECK-NEXT: [[TMP1:%.*]] = load <256 x i1>, ptr [[VPP:%.*]], align 32, !tbaa [[TBAA2]]
8585// CHECK-NEXT: [[TMP2:%.*]] = tail call <1024 x i1> @llvm.ppc.mma.pmdmxvi8gerx4spp(<1024 x i1> [[TMP0]], <256 x i1> [[TMP1]], <16 x i8> [[VC:%.*]], i32 0, i32 0, i32 0)
8686// CHECK-NEXT: store <1024 x i1> [[TMP2]], ptr [[RESP:%.*]], align 128, !tbaa [[TBAA6]]
@@ -92,3 +92,19 @@ void test_pmdmxvi8gerx4spp(unsigned char *vdmrp, unsigned char *vpp, vector unsi
9292 __builtin_mma_pmdmxvi8gerx4spp (& vdmr , vp , vc , 0 , 0 , 0 );
9393 * ((__dmr1024 * )resp ) = vdmr ;
9494}
95+
96+ // CHECK-LABEL: @test_dmf_basic
97+ // CHECK-NEXT: entry:
98+ // CHECK-NEXT: [[TMP0:%.*]] = tail call <1024 x i1> @llvm.ppc.mma.dmsetdmrz()
99+ // CHECK-NEXT: [[TMP1:%.*]] = tail call <1024 x i1> @llvm.ppc.mma.dmmr(<1024 x i1> [[TMP0]])
100+ // CHECK-NEXT: store <1024 x i1> [[TMP1]], ptr %res1, align 128
101+ // CHECK-NEXT: [[TMP2:%.*]] = load <1024 x i1>, ptr %res2, align 128
102+ // CHECK-NEXT: [[TMP3:%.*]] = load <1024 x i1>, ptr %p, align 128
103+ // CHECK-NEXT: [[TMP4:%.*]] = tail call <1024 x i1> @llvm.ppc.mma.dmxor(<1024 x i1> [[TMP2]], <1024 x i1> [[TMP3]])
104+ // CHECK-NEXT: store <1024 x i1> [[TMP4]], ptr %res2, align 128
105+ void test_dmf_basic (char * p , char * res1 , char * res2 ) {
106+ __dmr1024 x [2 ];
107+ __builtin_mma_dmsetdmrz (& x [0 ]);
108+ __builtin_mma_dmmr ((__dmr1024 * )res1 , & x [0 ]);
109+ __builtin_mma_dmxor ((__dmr1024 * )res2 , (__dmr1024 * )p );
110+ }
0 commit comments