@@ -207,6 +207,7 @@ SYCL_ESIMD_FUNCTION SYCL_EXTERNAL void xmx_func() {
207207 constexpr int K_half = 8 * 2 ;
208208 constexpr int K_bf16 = 8 * 2 ;
209209 constexpr int K_int8x2 = 8 * 4 ;
210+ constexpr int K_tf32 = 8 * 1 ;
210211 constexpr int N_pvc = 16 ;
211212 constexpr int N_dg2 = 8 ;
212213
@@ -338,6 +339,26 @@ SYCL_ESIMD_FUNCTION SYCL_EXTERNAL void xmx_func() {
338339 // CHECK: call <8 x float> @llvm.genx.dpasw.nosrc0.v8f32.v64i32.v4i32(<64 x i32> {{[^,]+}}, <4 x i32> {{[^,]+}}, i32 17304074)
339340 }
340341
342+ { // ======= DPAS TFLOAT32 ===================================================
343+ simd<float , M_one *N_pvc> R_f = 0 ;
344+ simd<float , M_one *N_pvc> C_f = 0 ;
345+
346+ simd<sycl::ext::intel::experimental::esimd::tfloat32, K_tf32 *N_pvc> B_tf =
347+ 0 ;
348+ simd<sycl::ext::intel::experimental::esimd::tfloat32, M_one *K_tf32> A_tf =
349+ 0 ;
350+
351+ // ------------------- TFLOAT32: WITH ACC OPERAND --------------------------
352+ R_f = xmx::dpas<8 , 1 , float >(C_f, B_tf, A_tf);
353+ zoo (R_f);
354+ // CHECK: call <16 x float> @llvm.genx.dpas2.v16f32.v16f32.v128i32.v8i32(<16 x float> {{[^,]+}}, <128 x i32> {{[^,]+}}, <8 x i32> {{[^,]+}}, i32 12, i32 12, i32 8, i32 1, i32 1, i32 1)
355+
356+ // ------------------- TFLOAT32: NO ACC OPERAND ----------------------------
357+ R_f = xmx::dpas<8 , 1 , float >(B_tf, A_tf);
358+ zoo (R_f);
359+ // CHECK: call <16 x float> @llvm.genx.dpas.nosrc0.v16f32.v128i32.v8i32(<128 x i32> {{[^,]+}}, <8 x i32> {{[^,]+}}, i32 17304588)
360+ }
361+
341362 xmx_func_end ();
342363 // CHECK: call spir_func void @_Z12xmx_func_endv()
343364}
0 commit comments