@@ -207,6 +207,7 @@ SYCL_ESIMD_FUNCTION SYCL_EXTERNAL void xmx_func() {
207
207
constexpr int K_half = 8 * 2 ;
208
208
constexpr int K_bf16 = 8 * 2 ;
209
209
constexpr int K_int8x2 = 8 * 4 ;
210
+ constexpr int K_tf32 = 8 * 1 ;
210
211
constexpr int N_pvc = 16 ;
211
212
constexpr int N_dg2 = 8 ;
212
213
@@ -338,6 +339,26 @@ SYCL_ESIMD_FUNCTION SYCL_EXTERNAL void xmx_func() {
338
339
// CHECK: call <8 x float> @llvm.genx.dpasw.nosrc0.v8f32.v64i32.v4i32(<64 x i32> {{[^,]+}}, <4 x i32> {{[^,]+}}, i32 17304074)
339
340
}
340
341
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
+
341
362
xmx_func_end ();
342
363
// CHECK: call spir_func void @_Z12xmx_func_endv()
343
364
}
0 commit comments