4827 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck --check-prefixes=GFX942,GFX942-VGPRCD,GFX942-SDAG,GFX942-VGPRCD-SDAG %s3; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck --check-prefixes=GFX942,GFX942-VGPRCD,GFX942-GISEL,GFX942-VGPRCD-GISEL %s4 5; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx950 < %s | FileCheck --check-prefixes=GFX950,GFX950-VGPRCD,GFX950-SDAG,GFX950-VGPRCD-SDAG %s6; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx950 < %s | FileCheck --check-prefixes=GFX950,GFX950-VGPRCD,GFX950-GISEL,GFX950-VGPRCD-GISEL %s7 8declare <4 x i32> @llvm.amdgcn.mfma.i32.16x16x32.i8(i64, i64, <4 x i32>, i32, i32, i32)9declare <16 x i32> @llvm.amdgcn.mfma.i32.32x32x16.i8(i64, i64, <16 x i32>, i32, i32, i32)10declare <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8(i64, i64, <4 x float>, i32, i32, i32)11declare <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.bf8.fp8(i64, i64, <4 x float>, i32, i32, i32)12declare <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.fp8.bf8(i64, i64, <4 x float>, i32, i32, i32)13declare <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8(i64, i64, <4 x float>, i32, i32, i32)14declare <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8(i64, i64, <16 x float>, i32, i32, i32)15declare <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.bf8.fp8(i64, i64, <16 x float>, i32, i32, i32)16declare <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.fp8.bf8(i64, i64, <16 x float>, i32, i32, i32)17declare <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8(i64, i64, <16 x float>, i32, i32, i32)18declare <4 x float> @llvm.amdgcn.smfmac.f32.16x16x32.f16(<4 x half>, <8 x half>, <4 x float>, i32, i32, i32)19declare <16 x float> @llvm.amdgcn.smfmac.f32.32x32x16.f16(<4 x half>, <8 x half>, <16 x float>, i32, i32, i32)20declare <4 x float> @llvm.amdgcn.smfmac.f32.16x16x32.bf16(<4 x i16>, <8 x i16>, <4 x float>, i32, i32, i32)21declare <16 x float> @llvm.amdgcn.smfmac.f32.32x32x16.bf16(<4 x i16>, <8 x i16>, <16 x float>, i32, i32, i32)22declare <4 x i32> @llvm.amdgcn.smfmac.i32.16x16x64.i8(<2 x i32>, <4 x i32>, <4 x i32>, i32, i32, i32)23declare <16 x i32> @llvm.amdgcn.smfmac.i32.32x32x32.i8(<2 x i32>, <4 x i32>, <16 x i32>, i32, i32, i32)24declare <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.bf8.bf8(<2 x i32>, <4 x i32>, <4 x float>, i32, i32, i32)25declare <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.bf8.fp8(<2 x i32>, <4 x i32>, <4 x float>, i32, i32, i32)26declare <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.fp8.bf8(<2 x i32>, <4 x i32>, <4 x float>, i32, i32, i32)27declare <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.fp8.fp8(<2 x i32>, <4 x i32>, <4 x float>, i32, i32, i32)28declare <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.bf8.bf8(<2 x i32>, <4 x i32>, <16 x float>, i32, i32, i32)29declare <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.bf8.fp8(<2 x i32>, <4 x i32>, <16 x float>, i32, i32, i32)30declare <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.fp8.bf8(<2 x i32>, <4 x i32>, <16 x float>, i32, i32, i32)31declare <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.fp8.fp8(<2 x i32>, <4 x i32>, <16 x float>, i32, i32, i32)32 33define amdgpu_kernel void @test_mfma_i32_16x16x32i8(ptr addrspace(1) %arg) #0 {34; GFX942-SDAG-LABEL: test_mfma_i32_16x16x32i8:35; GFX942-SDAG: ; %bb.0: ; %bb36; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x2437; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 238; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 139; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, 440; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, 341; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)42; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x043; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 044; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)45; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s046; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s147; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s248; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s349; GFX942-SDAG-NEXT: s_nop 150; GFX942-SDAG-NEXT: v_mfma_i32_16x16x32_i8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:351; GFX942-SDAG-NEXT: s_nop 652; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]53; GFX942-SDAG-NEXT: s_endpgm54;55; GFX942-GISEL-LABEL: test_mfma_i32_16x16x32i8:56; GFX942-GISEL: ; %bb.0: ; %bb57; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x2458; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 259; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 160; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 461; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 362; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)63; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x064; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)65; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s066; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s167; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s268; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s369; GFX942-GISEL-NEXT: s_nop 170; GFX942-GISEL-NEXT: v_mfma_i32_16x16x32_i8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:371; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 072; GFX942-GISEL-NEXT: s_nop 573; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]74; GFX942-GISEL-NEXT: s_endpgm75;76; GFX950-SDAG-LABEL: test_mfma_i32_16x16x32i8:77; GFX950-SDAG: ; %bb.0: ; %bb78; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x2479; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 280; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 181; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, 482; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, 383; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)84; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x085; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 086; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)87; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s088; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s189; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s290; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s391; GFX950-SDAG-NEXT: s_nop 192; GFX950-SDAG-NEXT: v_mfma_i32_16x16x32_i8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:393; GFX950-SDAG-NEXT: s_nop 794; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]95; GFX950-SDAG-NEXT: s_endpgm96;97; GFX950-GISEL-LABEL: test_mfma_i32_16x16x32i8:98; GFX950-GISEL: ; %bb.0: ; %bb99; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24100; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 2101; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 1102; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 4103; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 3104; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)105; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0106; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)107; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s0108; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s1109; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s2110; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s3111; GFX950-GISEL-NEXT: s_nop 1112; GFX950-GISEL-NEXT: v_mfma_i32_16x16x32_i8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3113; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 0114; GFX950-GISEL-NEXT: s_nop 6115; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]116; GFX950-GISEL-NEXT: s_endpgm117; GFX942-AGPRCD-SDAG-LABEL: test_mfma_i32_16x16x32i8:118; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb119; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24120; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2121; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1122; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4123; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3124; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)125; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0126; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0127; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)128; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0129; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1130; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2131; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3132; GFX942-AGPRCD-SDAG-NEXT: s_nop 1133; GFX942-AGPRCD-SDAG-NEXT: v_mfma_i32_16x16x32_i8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3134; GFX942-AGPRCD-SDAG-NEXT: s_nop 6135; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]136; GFX942-AGPRCD-SDAG-NEXT: s_endpgm137; GFX950-AGPRCD-SDAG-LABEL: test_mfma_i32_16x16x32i8:138; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb139; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24140; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2141; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1142; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4143; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3144; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)145; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0146; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0147; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)148; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0149; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1150; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2151; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3152; GFX950-AGPRCD-SDAG-NEXT: s_nop 1153; GFX950-AGPRCD-SDAG-NEXT: v_mfma_i32_16x16x32_i8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3154; GFX950-AGPRCD-SDAG-NEXT: s_nop 7155; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]156; GFX950-AGPRCD-SDAG-NEXT: s_endpgm157bb:158 %in.1 = load <4 x i32>, ptr addrspace(1) %arg159 %mai.1 = tail call <4 x i32> @llvm.amdgcn.mfma.i32.16x16x32.i8(i64 4294967298, i64 12884901892, <4 x i32> %in.1, i32 1, i32 2, i32 3)160 store <4 x i32> %mai.1, ptr addrspace(1) %arg161 ret void162}163 164define amdgpu_kernel void @test_mfma_i32_32x32x16i8(ptr addrspace(1) %arg) #0 {165; GFX942-SDAG-LABEL: test_mfma_i32_32x32x16i8:166; GFX942-SDAG: ; %bb.0: ; %bb167; GFX942-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24168; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 2169; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, 1170; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 4171; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 3172; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)173; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0174; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)175; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s0176; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s1177; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s2178; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s3179; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a4, s4180; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a5, s5181; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a6, s6182; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a7, s7183; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a8, s8184; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a9, s9185; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a10, s10186; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a11, s11187; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a12, s12188; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a13, s13189; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a14, s14190; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a15, s15191; GFX942-SDAG-NEXT: s_nop 1192; GFX942-SDAG-NEXT: v_mfma_i32_32x32x16_i8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3193; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 0194; GFX942-SDAG-NEXT: s_nop 9195; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48196; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32197; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16198; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]199; GFX942-SDAG-NEXT: s_endpgm200;201; GFX942-GISEL-LABEL: test_mfma_i32_32x32x16i8:202; GFX942-GISEL: ; %bb.0: ; %bb203; GFX942-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24204; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 2205; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 1206; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 4207; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 3208; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)209; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0210; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)211; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s0212; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s1213; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s2214; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s3215; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a4, s4216; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a5, s5217; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a6, s6218; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a7, s7219; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a8, s8220; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a9, s9221; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a10, s10222; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a11, s11223; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a12, s12224; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a13, s13225; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a14, s14226; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a15, s15227; GFX942-GISEL-NEXT: s_nop 1228; GFX942-GISEL-NEXT: v_mfma_i32_32x32x16_i8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3229; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 0230; GFX942-GISEL-NEXT: s_nop 9231; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]232; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16233; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32234; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48235; GFX942-GISEL-NEXT: s_endpgm236;237; GFX950-SDAG-LABEL: test_mfma_i32_32x32x16i8:238; GFX950-SDAG: ; %bb.0: ; %bb239; GFX950-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24240; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 2241; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, 1242; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 4243; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 3244; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)245; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0246; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)247; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s0248; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s1249; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s2250; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s3251; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a4, s4252; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a5, s5253; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a6, s6254; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a7, s7255; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a8, s8256; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a9, s9257; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a10, s10258; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a11, s11259; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a12, s12260; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a13, s13261; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a14, s14262; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a15, s15263; GFX950-SDAG-NEXT: s_nop 1264; GFX950-SDAG-NEXT: v_mfma_i32_32x32x16_i8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3265; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 0266; GFX950-SDAG-NEXT: s_nop 10267; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48268; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32269; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16270; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]271; GFX950-SDAG-NEXT: s_endpgm272;273; GFX950-GISEL-LABEL: test_mfma_i32_32x32x16i8:274; GFX950-GISEL: ; %bb.0: ; %bb275; GFX950-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24276; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 2277; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 1278; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 4279; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 3280; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)281; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0282; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)283; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s0284; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s1285; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s2286; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s3287; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a4, s4288; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a5, s5289; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a6, s6290; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a7, s7291; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a8, s8292; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a9, s9293; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a10, s10294; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a11, s11295; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a12, s12296; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a13, s13297; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a14, s14298; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a15, s15299; GFX950-GISEL-NEXT: s_nop 1300; GFX950-GISEL-NEXT: v_mfma_i32_32x32x16_i8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3301; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 0302; GFX950-GISEL-NEXT: s_nop 10303; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]304; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16305; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32306; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48307; GFX950-GISEL-NEXT: s_endpgm308bb:309 %in.1 = load <16 x i32>, ptr addrspace(1) %arg310 %mai.1 = tail call <16 x i32> @llvm.amdgcn.mfma.i32.32x32x16.i8(i64 4294967298, i64 12884901892, <16 x i32> %in.1, i32 1, i32 2, i32 3)311 store <16 x i32> %mai.1, ptr addrspace(1) %arg312 ret void313}314 315define amdgpu_kernel void @test_mfma_f32_16x16x32_bf8_bf8(ptr addrspace(1) %arg) #0 {316; GFX942-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_bf8:317; GFX942-SDAG: ; %bb.0: ; %bb318; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24319; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 2320; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 1321; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, 4322; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, 3323; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)324; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0325; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 0326; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)327; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s0328; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s1329; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s2330; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s3331; GFX942-SDAG-NEXT: s_nop 1332; GFX942-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_bf8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3333; GFX942-SDAG-NEXT: s_nop 6334; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]335; GFX942-SDAG-NEXT: s_endpgm336;337; GFX942-GISEL-LABEL: test_mfma_f32_16x16x32_bf8_bf8:338; GFX942-GISEL: ; %bb.0: ; %bb339; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24340; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 2341; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 1342; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 4343; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 3344; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)345; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0346; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)347; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s0348; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s1349; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s2350; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s3351; GFX942-GISEL-NEXT: s_nop 1352; GFX942-GISEL-NEXT: v_mfma_f32_16x16x32_bf8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3353; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 0354; GFX942-GISEL-NEXT: s_nop 5355; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]356; GFX942-GISEL-NEXT: s_endpgm357;358; GFX950-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_bf8:359; GFX950-SDAG: ; %bb.0: ; %bb360; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24361; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 2362; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 1363; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, 4364; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, 3365; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)366; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0367; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 0368; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)369; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s0370; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s1371; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s2372; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s3373; GFX950-SDAG-NEXT: s_nop 1374; GFX950-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_bf8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3375; GFX950-SDAG-NEXT: s_nop 7376; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]377; GFX950-SDAG-NEXT: s_endpgm378;379; GFX950-GISEL-LABEL: test_mfma_f32_16x16x32_bf8_bf8:380; GFX950-GISEL: ; %bb.0: ; %bb381; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24382; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 2383; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 1384; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 4385; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 3386; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)387; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0388; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)389; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s0390; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s1391; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s2392; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s3393; GFX950-GISEL-NEXT: s_nop 1394; GFX950-GISEL-NEXT: v_mfma_f32_16x16x32_bf8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3395; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 0396; GFX950-GISEL-NEXT: s_nop 6397; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]398; GFX950-GISEL-NEXT: s_endpgm399; GFX942-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_bf8:400; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb401; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24402; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2403; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1404; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4405; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3406; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)407; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0408; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0409; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)410; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0411; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1412; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2413; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3414; GFX942-AGPRCD-SDAG-NEXT: s_nop 1415; GFX942-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3416; GFX942-AGPRCD-SDAG-NEXT: s_nop 6417; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]418; GFX942-AGPRCD-SDAG-NEXT: s_endpgm419; GFX950-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_bf8:420; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb421; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24422; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2423; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1424; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4425; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3426; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)427; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0428; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0429; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)430; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0431; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1432; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2433; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3434; GFX950-AGPRCD-SDAG-NEXT: s_nop 1435; GFX950-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3436; GFX950-AGPRCD-SDAG-NEXT: s_nop 7437; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]438; GFX950-AGPRCD-SDAG-NEXT: s_endpgm439bb:440 %in.1 = load <4 x float>, ptr addrspace(1) %arg441 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.bf8.bf8(i64 4294967298, i64 12884901892, <4 x float> %in.1, i32 1, i32 2, i32 3)442 store <4 x float> %mai.1, ptr addrspace(1) %arg443 ret void444}445 446define amdgpu_kernel void @test_mfma_f32_16x16x32_bf8_fp8(ptr addrspace(1) %arg) #0 {447; GFX942-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_fp8:448; GFX942-SDAG: ; %bb.0: ; %bb449; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24450; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 2451; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 1452; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, 4453; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, 3454; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)455; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0456; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 0457; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)458; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s0459; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s1460; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s2461; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s3462; GFX942-SDAG-NEXT: s_nop 1463; GFX942-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_fp8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3464; GFX942-SDAG-NEXT: s_nop 6465; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]466; GFX942-SDAG-NEXT: s_endpgm467;468; GFX942-GISEL-LABEL: test_mfma_f32_16x16x32_bf8_fp8:469; GFX942-GISEL: ; %bb.0: ; %bb470; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24471; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 2472; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 1473; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 4474; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 3475; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)476; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0477; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)478; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s0479; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s1480; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s2481; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s3482; GFX942-GISEL-NEXT: s_nop 1483; GFX942-GISEL-NEXT: v_mfma_f32_16x16x32_bf8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3484; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 0485; GFX942-GISEL-NEXT: s_nop 5486; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]487; GFX942-GISEL-NEXT: s_endpgm488;489; GFX950-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_fp8:490; GFX950-SDAG: ; %bb.0: ; %bb491; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24492; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 2493; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 1494; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, 4495; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, 3496; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)497; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0498; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 0499; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)500; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s0501; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s1502; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s2503; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s3504; GFX950-SDAG-NEXT: s_nop 1505; GFX950-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_fp8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3506; GFX950-SDAG-NEXT: s_nop 7507; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]508; GFX950-SDAG-NEXT: s_endpgm509;510; GFX950-GISEL-LABEL: test_mfma_f32_16x16x32_bf8_fp8:511; GFX950-GISEL: ; %bb.0: ; %bb512; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24513; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 2514; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 1515; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 4516; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 3517; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)518; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0519; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)520; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s0521; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s1522; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s2523; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s3524; GFX950-GISEL-NEXT: s_nop 1525; GFX950-GISEL-NEXT: v_mfma_f32_16x16x32_bf8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3526; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 0527; GFX950-GISEL-NEXT: s_nop 6528; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]529; GFX950-GISEL-NEXT: s_endpgm530; GFX942-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_fp8:531; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb532; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24533; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2534; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1535; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4536; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3537; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)538; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0539; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0540; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)541; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0542; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1543; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2544; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3545; GFX942-AGPRCD-SDAG-NEXT: s_nop 1546; GFX942-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3547; GFX942-AGPRCD-SDAG-NEXT: s_nop 6548; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]549; GFX942-AGPRCD-SDAG-NEXT: s_endpgm550; GFX950-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_bf8_fp8:551; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb552; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24553; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2554; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1555; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4556; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3557; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)558; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0559; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0560; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)561; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0562; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1563; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2564; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3565; GFX950-AGPRCD-SDAG-NEXT: s_nop 1566; GFX950-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_bf8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3567; GFX950-AGPRCD-SDAG-NEXT: s_nop 7568; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]569; GFX950-AGPRCD-SDAG-NEXT: s_endpgm570bb:571 %in.1 = load <4 x float>, ptr addrspace(1) %arg572 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.bf8.fp8(i64 4294967298, i64 12884901892, <4 x float> %in.1, i32 1, i32 2, i32 3)573 store <4 x float> %mai.1, ptr addrspace(1) %arg574 ret void575}576 577define amdgpu_kernel void @test_mfma_f32_16x16x32_fp8_bf8(ptr addrspace(1) %arg) #0 {578; GFX942-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_bf8:579; GFX942-SDAG: ; %bb.0: ; %bb580; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24581; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 2582; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 1583; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, 4584; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, 3585; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)586; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0587; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 0588; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)589; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s0590; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s1591; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s2592; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s3593; GFX942-SDAG-NEXT: s_nop 1594; GFX942-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_bf8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3595; GFX942-SDAG-NEXT: s_nop 6596; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]597; GFX942-SDAG-NEXT: s_endpgm598;599; GFX942-GISEL-LABEL: test_mfma_f32_16x16x32_fp8_bf8:600; GFX942-GISEL: ; %bb.0: ; %bb601; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24602; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 2603; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 1604; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 4605; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 3606; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)607; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0608; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)609; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s0610; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s1611; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s2612; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s3613; GFX942-GISEL-NEXT: s_nop 1614; GFX942-GISEL-NEXT: v_mfma_f32_16x16x32_fp8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3615; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 0616; GFX942-GISEL-NEXT: s_nop 5617; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]618; GFX942-GISEL-NEXT: s_endpgm619;620; GFX950-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_bf8:621; GFX950-SDAG: ; %bb.0: ; %bb622; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24623; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 2624; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 1625; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, 4626; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, 3627; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)628; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0629; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 0630; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)631; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s0632; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s1633; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s2634; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s3635; GFX950-SDAG-NEXT: s_nop 1636; GFX950-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_bf8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3637; GFX950-SDAG-NEXT: s_nop 7638; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]639; GFX950-SDAG-NEXT: s_endpgm640;641; GFX950-GISEL-LABEL: test_mfma_f32_16x16x32_fp8_bf8:642; GFX950-GISEL: ; %bb.0: ; %bb643; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24644; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 2645; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 1646; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 4647; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 3648; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)649; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0650; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)651; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s0652; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s1653; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s2654; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s3655; GFX950-GISEL-NEXT: s_nop 1656; GFX950-GISEL-NEXT: v_mfma_f32_16x16x32_fp8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3657; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 0658; GFX950-GISEL-NEXT: s_nop 6659; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]660; GFX950-GISEL-NEXT: s_endpgm661; GFX942-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_bf8:662; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb663; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24664; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2665; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1666; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4667; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3668; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)669; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0670; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0671; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)672; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0673; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1674; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2675; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3676; GFX942-AGPRCD-SDAG-NEXT: s_nop 1677; GFX942-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3678; GFX942-AGPRCD-SDAG-NEXT: s_nop 6679; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]680; GFX942-AGPRCD-SDAG-NEXT: s_endpgm681; GFX950-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_bf8:682; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb683; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24684; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2685; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1686; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4687; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3688; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)689; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0690; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0691; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)692; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0693; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1694; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2695; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3696; GFX950-AGPRCD-SDAG-NEXT: s_nop 1697; GFX950-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_bf8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3698; GFX950-AGPRCD-SDAG-NEXT: s_nop 7699; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]700; GFX950-AGPRCD-SDAG-NEXT: s_endpgm701bb:702 %in.1 = load <4 x float>, ptr addrspace(1) %arg703 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.fp8.bf8(i64 4294967298, i64 12884901892, <4 x float> %in.1, i32 1, i32 2, i32 3)704 store <4 x float> %mai.1, ptr addrspace(1) %arg705 ret void706}707 708define amdgpu_kernel void @test_mfma_f32_16x16x32_fp8_fp8(ptr addrspace(1) %arg) #0 {709; GFX942-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_fp8:710; GFX942-SDAG: ; %bb.0: ; %bb711; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24712; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 2713; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 1714; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, 4715; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, 3716; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)717; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0718; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 0719; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)720; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s0721; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s1722; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s2723; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s3724; GFX942-SDAG-NEXT: s_nop 1725; GFX942-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_fp8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3726; GFX942-SDAG-NEXT: s_nop 6727; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]728; GFX942-SDAG-NEXT: s_endpgm729;730; GFX942-GISEL-LABEL: test_mfma_f32_16x16x32_fp8_fp8:731; GFX942-GISEL: ; %bb.0: ; %bb732; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24733; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 2734; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 1735; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 4736; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 3737; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)738; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0739; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)740; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s0741; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s1742; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s2743; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s3744; GFX942-GISEL-NEXT: s_nop 1745; GFX942-GISEL-NEXT: v_mfma_f32_16x16x32_fp8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3746; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 0747; GFX942-GISEL-NEXT: s_nop 5748; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]749; GFX942-GISEL-NEXT: s_endpgm750;751; GFX950-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_fp8:752; GFX950-SDAG: ; %bb.0: ; %bb753; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24754; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 2755; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 1756; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, 4757; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, 3758; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)759; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0760; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 0761; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)762; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s0763; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s1764; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s2765; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s3766; GFX950-SDAG-NEXT: s_nop 1767; GFX950-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_fp8 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:3768; GFX950-SDAG-NEXT: s_nop 7769; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]770; GFX950-SDAG-NEXT: s_endpgm771;772; GFX950-GISEL-LABEL: test_mfma_f32_16x16x32_fp8_fp8:773; GFX950-GISEL: ; %bb.0: ; %bb774; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24775; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 2776; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 1777; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 4778; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 3779; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)780; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0781; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)782; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s0783; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s1784; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s2785; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s3786; GFX950-GISEL-NEXT: s_nop 1787; GFX950-GISEL-NEXT: v_mfma_f32_16x16x32_fp8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3788; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 0789; GFX950-GISEL-NEXT: s_nop 6790; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]791; GFX950-GISEL-NEXT: s_endpgm792; GFX942-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_fp8:793; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb794; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24795; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2796; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1797; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4798; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3799; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)800; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0801; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0802; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)803; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0804; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1805; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2806; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3807; GFX942-AGPRCD-SDAG-NEXT: s_nop 1808; GFX942-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3809; GFX942-AGPRCD-SDAG-NEXT: s_nop 6810; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]811; GFX942-AGPRCD-SDAG-NEXT: s_endpgm812; GFX950-AGPRCD-SDAG-LABEL: test_mfma_f32_16x16x32_fp8_fp8:813; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb814; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24815; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 2816; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, 1817; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, 4818; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, 3819; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)820; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0821; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, 0822; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)823; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s0824; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s1825; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s2826; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s3827; GFX950-AGPRCD-SDAG-NEXT: s_nop 1828; GFX950-AGPRCD-SDAG-NEXT: v_mfma_f32_16x16x32_fp8_fp8 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:3829; GFX950-AGPRCD-SDAG-NEXT: s_nop 7830; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v4, a[0:3], s[6:7]831; GFX950-AGPRCD-SDAG-NEXT: s_endpgm832bb:833 %in.1 = load <4 x float>, ptr addrspace(1) %arg834 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.16x16x32.fp8.fp8(i64 4294967298, i64 12884901892, <4 x float> %in.1, i32 1, i32 2, i32 3)835 store <4 x float> %mai.1, ptr addrspace(1) %arg836 ret void837}838 839define amdgpu_kernel void @test_mfma_f32_32x32x16_bf8_bf8(ptr addrspace(1) %arg) #0 {840; GFX942-SDAG-LABEL: test_mfma_f32_32x32x16_bf8_bf8:841; GFX942-SDAG: ; %bb.0: ; %bb842; GFX942-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24843; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 2844; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, 1845; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 4846; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 3847; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)848; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0849; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)850; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s0851; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s1852; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s2853; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s3854; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a4, s4855; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a5, s5856; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a6, s6857; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a7, s7858; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a8, s8859; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a9, s9860; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a10, s10861; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a11, s11862; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a12, s12863; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a13, s13864; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a14, s14865; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a15, s15866; GFX942-SDAG-NEXT: s_nop 1867; GFX942-SDAG-NEXT: v_mfma_f32_32x32x16_bf8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3868; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 0869; GFX942-SDAG-NEXT: s_nop 9870; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48871; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32872; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16873; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]874; GFX942-SDAG-NEXT: s_endpgm875;876; GFX942-GISEL-LABEL: test_mfma_f32_32x32x16_bf8_bf8:877; GFX942-GISEL: ; %bb.0: ; %bb878; GFX942-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24879; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 2880; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 1881; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 4882; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 3883; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)884; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0885; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)886; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s0887; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s1888; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s2889; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s3890; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a4, s4891; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a5, s5892; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a6, s6893; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a7, s7894; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a8, s8895; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a9, s9896; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a10, s10897; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a11, s11898; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a12, s12899; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a13, s13900; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a14, s14901; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a15, s15902; GFX942-GISEL-NEXT: s_nop 1903; GFX942-GISEL-NEXT: v_mfma_f32_32x32x16_bf8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3904; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 0905; GFX942-GISEL-NEXT: s_nop 9906; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]907; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16908; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32909; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48910; GFX942-GISEL-NEXT: s_endpgm911;912; GFX950-SDAG-LABEL: test_mfma_f32_32x32x16_bf8_bf8:913; GFX950-SDAG: ; %bb.0: ; %bb914; GFX950-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24915; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 2916; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, 1917; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 4918; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 3919; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)920; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0921; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)922; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s0923; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s1924; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s2925; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s3926; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a4, s4927; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a5, s5928; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a6, s6929; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a7, s7930; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a8, s8931; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a9, s9932; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a10, s10933; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a11, s11934; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a12, s12935; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a13, s13936; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a14, s14937; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a15, s15938; GFX950-SDAG-NEXT: s_nop 1939; GFX950-SDAG-NEXT: v_mfma_f32_32x32x16_bf8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3940; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 0941; GFX950-SDAG-NEXT: s_nop 10942; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48943; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32944; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16945; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]946; GFX950-SDAG-NEXT: s_endpgm947;948; GFX950-GISEL-LABEL: test_mfma_f32_32x32x16_bf8_bf8:949; GFX950-GISEL: ; %bb.0: ; %bb950; GFX950-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24951; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 2952; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 1953; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 4954; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 3955; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)956; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0957; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)958; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s0959; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s1960; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s2961; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s3962; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a4, s4963; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a5, s5964; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a6, s6965; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a7, s7966; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a8, s8967; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a9, s9968; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a10, s10969; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a11, s11970; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a12, s12971; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a13, s13972; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a14, s14973; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a15, s15974; GFX950-GISEL-NEXT: s_nop 1975; GFX950-GISEL-NEXT: v_mfma_f32_32x32x16_bf8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:3976; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 0977; GFX950-GISEL-NEXT: s_nop 10978; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]979; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16980; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32981; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48982; GFX950-GISEL-NEXT: s_endpgm983bb:984 %in.1 = load <16 x float>, ptr addrspace(1) %arg985 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.bf8.bf8(i64 4294967298, i64 12884901892, <16 x float> %in.1, i32 1, i32 2, i32 3)986 store <16 x float> %mai.1, ptr addrspace(1) %arg987 ret void988}989 990define amdgpu_kernel void @test_mfma_f32_32x32x16_bf8_fp8(ptr addrspace(1) %arg) #0 {991; GFX942-SDAG-LABEL: test_mfma_f32_32x32x16_bf8_fp8:992; GFX942-SDAG: ; %bb.0: ; %bb993; GFX942-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24994; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 2995; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, 1996; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 4997; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 3998; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)999; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01000; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1001; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s01002; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s11003; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s21004; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s31005; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a4, s41006; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a5, s51007; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a6, s61008; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a7, s71009; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a8, s81010; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a9, s91011; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a10, s101012; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a11, s111013; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a12, s121014; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a13, s131015; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a14, s141016; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a15, s151017; GFX942-SDAG-NEXT: s_nop 11018; GFX942-SDAG-NEXT: v_mfma_f32_32x32x16_bf8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31019; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 01020; GFX942-SDAG-NEXT: s_nop 91021; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481022; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321023; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161024; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1025; GFX942-SDAG-NEXT: s_endpgm1026;1027; GFX942-GISEL-LABEL: test_mfma_f32_32x32x16_bf8_fp8:1028; GFX942-GISEL: ; %bb.0: ; %bb1029; GFX942-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241030; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 21031; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 11032; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 41033; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 31034; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1035; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01036; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1037; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s01038; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s11039; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s21040; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s31041; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a4, s41042; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a5, s51043; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a6, s61044; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a7, s71045; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a8, s81046; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a9, s91047; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a10, s101048; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a11, s111049; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a12, s121050; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a13, s131051; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a14, s141052; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a15, s151053; GFX942-GISEL-NEXT: s_nop 11054; GFX942-GISEL-NEXT: v_mfma_f32_32x32x16_bf8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31055; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 01056; GFX942-GISEL-NEXT: s_nop 91057; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1058; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161059; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321060; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481061; GFX942-GISEL-NEXT: s_endpgm1062;1063; GFX950-SDAG-LABEL: test_mfma_f32_32x32x16_bf8_fp8:1064; GFX950-SDAG: ; %bb.0: ; %bb1065; GFX950-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241066; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 21067; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, 11068; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 41069; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 31070; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1071; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01072; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1073; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s01074; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s11075; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s21076; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s31077; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a4, s41078; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a5, s51079; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a6, s61080; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a7, s71081; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a8, s81082; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a9, s91083; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a10, s101084; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a11, s111085; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a12, s121086; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a13, s131087; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a14, s141088; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a15, s151089; GFX950-SDAG-NEXT: s_nop 11090; GFX950-SDAG-NEXT: v_mfma_f32_32x32x16_bf8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31091; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 01092; GFX950-SDAG-NEXT: s_nop 101093; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481094; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321095; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161096; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1097; GFX950-SDAG-NEXT: s_endpgm1098;1099; GFX950-GISEL-LABEL: test_mfma_f32_32x32x16_bf8_fp8:1100; GFX950-GISEL: ; %bb.0: ; %bb1101; GFX950-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241102; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 21103; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 11104; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 41105; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 31106; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1107; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01108; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1109; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s01110; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s11111; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s21112; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s31113; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a4, s41114; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a5, s51115; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a6, s61116; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a7, s71117; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a8, s81118; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a9, s91119; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a10, s101120; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a11, s111121; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a12, s121122; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a13, s131123; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a14, s141124; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a15, s151125; GFX950-GISEL-NEXT: s_nop 11126; GFX950-GISEL-NEXT: v_mfma_f32_32x32x16_bf8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31127; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 01128; GFX950-GISEL-NEXT: s_nop 101129; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1130; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161131; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321132; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481133; GFX950-GISEL-NEXT: s_endpgm1134bb:1135 %in.1 = load <16 x float>, ptr addrspace(1) %arg1136 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.bf8.fp8(i64 4294967298, i64 12884901892, <16 x float> %in.1, i32 1, i32 2, i32 3)1137 store <16 x float> %mai.1, ptr addrspace(1) %arg1138 ret void1139}1140 1141define amdgpu_kernel void @test_mfma_f32_32x32x16_fp8_bf8(ptr addrspace(1) %arg) #0 {1142; GFX942-SDAG-LABEL: test_mfma_f32_32x32x16_fp8_bf8:1143; GFX942-SDAG: ; %bb.0: ; %bb1144; GFX942-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241145; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 21146; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, 11147; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 41148; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 31149; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1150; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01151; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1152; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s01153; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s11154; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s21155; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s31156; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a4, s41157; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a5, s51158; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a6, s61159; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a7, s71160; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a8, s81161; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a9, s91162; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a10, s101163; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a11, s111164; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a12, s121165; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a13, s131166; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a14, s141167; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a15, s151168; GFX942-SDAG-NEXT: s_nop 11169; GFX942-SDAG-NEXT: v_mfma_f32_32x32x16_fp8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31170; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 01171; GFX942-SDAG-NEXT: s_nop 91172; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481173; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321174; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161175; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1176; GFX942-SDAG-NEXT: s_endpgm1177;1178; GFX942-GISEL-LABEL: test_mfma_f32_32x32x16_fp8_bf8:1179; GFX942-GISEL: ; %bb.0: ; %bb1180; GFX942-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241181; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 21182; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 11183; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 41184; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 31185; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1186; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01187; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1188; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s01189; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s11190; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s21191; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s31192; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a4, s41193; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a5, s51194; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a6, s61195; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a7, s71196; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a8, s81197; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a9, s91198; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a10, s101199; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a11, s111200; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a12, s121201; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a13, s131202; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a14, s141203; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a15, s151204; GFX942-GISEL-NEXT: s_nop 11205; GFX942-GISEL-NEXT: v_mfma_f32_32x32x16_fp8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31206; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 01207; GFX942-GISEL-NEXT: s_nop 91208; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1209; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161210; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321211; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481212; GFX942-GISEL-NEXT: s_endpgm1213;1214; GFX950-SDAG-LABEL: test_mfma_f32_32x32x16_fp8_bf8:1215; GFX950-SDAG: ; %bb.0: ; %bb1216; GFX950-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241217; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 21218; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, 11219; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 41220; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 31221; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1222; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01223; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1224; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s01225; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s11226; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s21227; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s31228; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a4, s41229; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a5, s51230; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a6, s61231; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a7, s71232; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a8, s81233; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a9, s91234; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a10, s101235; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a11, s111236; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a12, s121237; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a13, s131238; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a14, s141239; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a15, s151240; GFX950-SDAG-NEXT: s_nop 11241; GFX950-SDAG-NEXT: v_mfma_f32_32x32x16_fp8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31242; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 01243; GFX950-SDAG-NEXT: s_nop 101244; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481245; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321246; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161247; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1248; GFX950-SDAG-NEXT: s_endpgm1249;1250; GFX950-GISEL-LABEL: test_mfma_f32_32x32x16_fp8_bf8:1251; GFX950-GISEL: ; %bb.0: ; %bb1252; GFX950-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241253; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 21254; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 11255; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 41256; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 31257; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1258; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01259; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1260; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s01261; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s11262; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s21263; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s31264; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a4, s41265; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a5, s51266; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a6, s61267; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a7, s71268; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a8, s81269; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a9, s91270; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a10, s101271; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a11, s111272; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a12, s121273; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a13, s131274; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a14, s141275; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a15, s151276; GFX950-GISEL-NEXT: s_nop 11277; GFX950-GISEL-NEXT: v_mfma_f32_32x32x16_fp8_bf8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31278; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 01279; GFX950-GISEL-NEXT: s_nop 101280; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1281; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161282; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321283; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481284; GFX950-GISEL-NEXT: s_endpgm1285bb:1286 %in.1 = load <16 x float>, ptr addrspace(1) %arg1287 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.fp8.bf8(i64 4294967298, i64 12884901892, <16 x float> %in.1, i32 1, i32 2, i32 3)1288 store <16 x float> %mai.1, ptr addrspace(1) %arg1289 ret void1290}1291 1292define amdgpu_kernel void @test_mfma_f32_32x32x16_fp8_fp8(ptr addrspace(1) %arg) #0 {1293; GFX942-SDAG-LABEL: test_mfma_f32_32x32x16_fp8_fp8:1294; GFX942-SDAG: ; %bb.0: ; %bb1295; GFX942-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241296; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 21297; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, 11298; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, 41299; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, 31300; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1301; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01302; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1303; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a0, s01304; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a1, s11305; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a2, s21306; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a3, s31307; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a4, s41308; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a5, s51309; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a6, s61310; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a7, s71311; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a8, s81312; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a9, s91313; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a10, s101314; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a11, s111315; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a12, s121316; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a13, s131317; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a14, s141318; GFX942-SDAG-NEXT: v_accvgpr_write_b32 a15, s151319; GFX942-SDAG-NEXT: s_nop 11320; GFX942-SDAG-NEXT: v_mfma_f32_32x32x16_fp8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31321; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 01322; GFX942-SDAG-NEXT: s_nop 91323; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481324; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321325; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161326; GFX942-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1327; GFX942-SDAG-NEXT: s_endpgm1328;1329; GFX942-GISEL-LABEL: test_mfma_f32_32x32x16_fp8_fp8:1330; GFX942-GISEL: ; %bb.0: ; %bb1331; GFX942-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241332; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 21333; GFX942-GISEL-NEXT: v_mov_b32_e32 v1, 11334; GFX942-GISEL-NEXT: v_mov_b32_e32 v2, 41335; GFX942-GISEL-NEXT: v_mov_b32_e32 v3, 31336; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1337; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01338; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1339; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a0, s01340; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a1, s11341; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a2, s21342; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a3, s31343; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a4, s41344; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a5, s51345; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a6, s61346; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a7, s71347; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a8, s81348; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a9, s91349; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a10, s101350; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a11, s111351; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a12, s121352; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a13, s131353; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a14, s141354; GFX942-GISEL-NEXT: v_accvgpr_write_b32 a15, s151355; GFX942-GISEL-NEXT: s_nop 11356; GFX942-GISEL-NEXT: v_mfma_f32_32x32x16_fp8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31357; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 01358; GFX942-GISEL-NEXT: s_nop 91359; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1360; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161361; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321362; GFX942-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481363; GFX942-GISEL-NEXT: s_endpgm1364;1365; GFX950-SDAG-LABEL: test_mfma_f32_32x32x16_fp8_fp8:1366; GFX950-SDAG: ; %bb.0: ; %bb1367; GFX950-SDAG-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241368; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 21369; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, 11370; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, 41371; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, 31372; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1373; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01374; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1375; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a0, s01376; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a1, s11377; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a2, s21378; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a3, s31379; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a4, s41380; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a5, s51381; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a6, s61382; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a7, s71383; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a8, s81384; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a9, s91385; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a10, s101386; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a11, s111387; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a12, s121388; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a13, s131389; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a14, s141390; GFX950-SDAG-NEXT: v_accvgpr_write_b32 a15, s151391; GFX950-SDAG-NEXT: s_nop 11392; GFX950-SDAG-NEXT: v_mfma_f32_32x32x16_fp8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31393; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 01394; GFX950-SDAG-NEXT: s_nop 101395; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481396; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321397; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161398; GFX950-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1399; GFX950-SDAG-NEXT: s_endpgm1400;1401; GFX950-GISEL-LABEL: test_mfma_f32_32x32x16_fp8_fp8:1402; GFX950-GISEL: ; %bb.0: ; %bb1403; GFX950-GISEL-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241404; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 21405; GFX950-GISEL-NEXT: v_mov_b32_e32 v1, 11406; GFX950-GISEL-NEXT: v_mov_b32_e32 v2, 41407; GFX950-GISEL-NEXT: v_mov_b32_e32 v3, 31408; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1409; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01410; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1411; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a0, s01412; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a1, s11413; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a2, s21414; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a3, s31415; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a4, s41416; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a5, s51417; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a6, s61418; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a7, s71419; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a8, s81420; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a9, s91421; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a10, s101422; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a11, s111423; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a12, s121424; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a13, s131425; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a14, s141426; GFX950-GISEL-NEXT: v_accvgpr_write_b32 a15, s151427; GFX950-GISEL-NEXT: s_nop 11428; GFX950-GISEL-NEXT: v_mfma_f32_32x32x16_fp8_fp8 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31429; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 01430; GFX950-GISEL-NEXT: s_nop 101431; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1432; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161433; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321434; GFX950-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481435; GFX950-GISEL-NEXT: s_endpgm1436bb:1437 %in.1 = load <16 x float>, ptr addrspace(1) %arg1438 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.32x32x16.fp8.fp8(i64 4294967298, i64 12884901892, <16 x float> %in.1, i32 1, i32 2, i32 3)1439 store <16 x float> %mai.1, ptr addrspace(1) %arg1440 ret void1441}1442 1443define amdgpu_kernel void @test_smfmac_f32_16x16x32_f16(ptr addrspace(1) %arg, <4 x half> %a, <8 x half> %b, i32 %idx) #0 {1444; GFX942-SDAG-LABEL: test_smfmac_f32_16x16x32_f16:1445; GFX942-SDAG: ; %bb.0: ; %bb1446; GFX942-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241447; GFX942-SDAG-NEXT: s_load_dword s6, s[4:5], 0x441448; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 01449; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1450; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01451; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1452; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[12:13]1453; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[14:15]1454; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, s61455; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1456; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]1457; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]1458; GFX942-SDAG-NEXT: s_nop 11459; GFX942-SDAG-NEXT: v_smfmac_f32_16x16x32_f16 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:21460; GFX942-SDAG-NEXT: s_nop 61461; GFX942-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[8:9]1462; GFX942-SDAG-NEXT: s_endpgm1463;1464; GFX942-GISEL-LABEL: test_smfmac_f32_16x16x32_f16:1465; GFX942-GISEL: ; %bb.0: ; %bb1466; GFX942-GISEL-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241467; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1468; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01469; GFX942-GISEL-NEXT: s_load_dword s6, s[4:5], 0x441470; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1471; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1472; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1473; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1474; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[2:3]1475; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[0:1]1476; GFX942-GISEL-NEXT: v_mov_b32_e32 v6, s61477; GFX942-GISEL-NEXT: s_nop 11478; GFX942-GISEL-NEXT: v_smfmac_f32_16x16x32_f16 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:21479; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 01480; GFX942-GISEL-NEXT: s_nop 51481; GFX942-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[8:9]1482; GFX942-GISEL-NEXT: s_endpgm1483;1484; GFX950-SDAG-LABEL: test_smfmac_f32_16x16x32_f16:1485; GFX950-SDAG: ; %bb.0: ; %bb1486; GFX950-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241487; GFX950-SDAG-NEXT: s_load_dword s6, s[4:5], 0x441488; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 01489; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1490; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01491; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1492; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[12:13]1493; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[14:15]1494; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, s61495; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1496; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]1497; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]1498; GFX950-SDAG-NEXT: s_nop 11499; GFX950-SDAG-NEXT: v_smfmac_f32_16x16x32_f16 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:21500; GFX950-SDAG-NEXT: s_nop 71501; GFX950-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[8:9]1502; GFX950-SDAG-NEXT: s_endpgm1503;1504; GFX950-GISEL-LABEL: test_smfmac_f32_16x16x32_f16:1505; GFX950-GISEL: ; %bb.0: ; %bb1506; GFX950-GISEL-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241507; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1508; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01509; GFX950-GISEL-NEXT: s_load_dword s6, s[4:5], 0x441510; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1511; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1512; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1513; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1514; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[2:3]1515; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[0:1]1516; GFX950-GISEL-NEXT: v_mov_b32_e32 v6, s61517; GFX950-GISEL-NEXT: s_nop 11518; GFX950-GISEL-NEXT: v_smfmac_f32_16x16x32_f16 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:21519; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 01520; GFX950-GISEL-NEXT: s_nop 61521; GFX950-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[8:9]1522; GFX950-GISEL-NEXT: s_endpgm1523; GFX942-AGPRCD-LABEL: test_smfmac_f32_16x16x32_f16:1524; GFX942-AGPRCD: ; %bb.0: ; %bb1525; GFX942-AGPRCD-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241526; GFX942-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1527; GFX942-AGPRCD-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1528; GFX942-AGPRCD-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01529; GFX942-AGPRCD-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1530; GFX942-AGPRCD-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1531; GFX942-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1532; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a0, s01533; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a1, s11534; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a2, s21535; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a3, s31536; GFX942-AGPRCD-NEXT: s_load_dword s0, s[4:5], 0x441537; GFX942-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1538; GFX942-AGPRCD-NEXT: v_mov_b32_e32 v6, s01539; GFX942-AGPRCD-NEXT: s_nop 11540; GFX942-AGPRCD-NEXT: v_smfmac_f32_16x16x32_f16 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:21541; GFX942-AGPRCD-NEXT: v_mov_b32_e32 v0, 01542; GFX942-AGPRCD-NEXT: s_nop 51543; GFX942-AGPRCD-NEXT: global_store_dwordx4 v0, a[0:3], s[8:9]1544; GFX942-AGPRCD-NEXT: s_endpgm1545; GFX950-AGPRCD-LABEL: test_smfmac_f32_16x16x32_f16:1546; GFX950-AGPRCD: ; %bb.0: ; %bb1547; GFX950-AGPRCD-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241548; GFX950-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1549; GFX950-AGPRCD-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1550; GFX950-AGPRCD-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01551; GFX950-AGPRCD-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1552; GFX950-AGPRCD-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1553; GFX950-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1554; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a0, s01555; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a1, s11556; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a2, s21557; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a3, s31558; GFX950-AGPRCD-NEXT: s_load_dword s0, s[4:5], 0x441559; GFX950-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1560; GFX950-AGPRCD-NEXT: v_mov_b32_e32 v6, s01561; GFX950-AGPRCD-NEXT: s_nop 11562; GFX950-AGPRCD-NEXT: v_smfmac_f32_16x16x32_f16 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:21563; GFX950-AGPRCD-NEXT: v_mov_b32_e32 v0, 01564; GFX950-AGPRCD-NEXT: s_nop 61565; GFX950-AGPRCD-NEXT: global_store_dwordx4 v0, a[0:3], s[8:9]1566; GFX950-AGPRCD-NEXT: s_endpgm1567bb:1568 %in.1 = load <4 x float>, ptr addrspace(1) %arg1569 %mai.1 = tail call <4 x float> @llvm.amdgcn.smfmac.f32.16x16x32.f16(<4 x half> %a, <8 x half> %b, <4 x float> %in.1, i32 %idx, i32 1, i32 2)1570 store <4 x float> %mai.1, ptr addrspace(1) %arg1571 ret void1572}1573 1574define amdgpu_kernel void @test_smfmac_f32_32x32x16_f16(ptr addrspace(1) %arg, <4 x half> %a, <8 x half> %b, i32 %idx) #0 {1575; GFX942-SDAG-LABEL: test_smfmac_f32_32x32x16_f16:1576; GFX942-SDAG: ; %bb.0: ; %bb1577; GFX942-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x241578; GFX942-SDAG-NEXT: s_load_dword s24, s[4:5], 0x441579; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1580; GFX942-SDAG-NEXT: v_mov_b64_e32 v[22:23], s[18:19]1581; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01582; GFX942-SDAG-NEXT: v_mov_b64_e32 v[18:19], s[20:21]1583; GFX942-SDAG-NEXT: v_mov_b64_e32 v[20:21], s[22:23]1584; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, s241585; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1586; GFX942-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1587; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1588; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]1589; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]1590; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]1591; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1592; GFX942-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]1593; GFX942-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]1594; GFX942-SDAG-NEXT: s_nop 11595; GFX942-SDAG-NEXT: v_smfmac_f32_32x32x16_f16 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:21596; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, 01597; GFX942-SDAG-NEXT: s_nop 91598; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:481599; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:321600; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:161601; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]1602; GFX942-SDAG-NEXT: s_endpgm1603;1604; GFX942-GISEL-LABEL: test_smfmac_f32_32x32x16_f16:1605; GFX942-GISEL: ; %bb.0: ; %bb1606; GFX942-GISEL-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x241607; GFX942-GISEL-NEXT: s_load_dword s24, s[4:5], 0x441608; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1609; GFX942-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[18:19]1610; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01611; GFX942-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]1612; GFX942-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]1613; GFX942-GISEL-NEXT: v_mov_b32_e32 v22, s241614; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1615; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1616; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1617; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]1618; GFX942-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]1619; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]1620; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1621; GFX942-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]1622; GFX942-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]1623; GFX942-GISEL-NEXT: s_nop 11624; GFX942-GISEL-NEXT: v_smfmac_f32_32x32x16_f16 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:21625; GFX942-GISEL-NEXT: v_mov_b32_e32 v16, 01626; GFX942-GISEL-NEXT: s_nop 91627; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]1628; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:161629; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:321630; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:481631; GFX942-GISEL-NEXT: s_endpgm1632;1633; GFX950-SDAG-LABEL: test_smfmac_f32_32x32x16_f16:1634; GFX950-SDAG: ; %bb.0: ; %bb1635; GFX950-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x241636; GFX950-SDAG-NEXT: s_load_dword s24, s[4:5], 0x441637; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1638; GFX950-SDAG-NEXT: v_mov_b64_e32 v[22:23], s[18:19]1639; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01640; GFX950-SDAG-NEXT: v_mov_b64_e32 v[18:19], s[20:21]1641; GFX950-SDAG-NEXT: v_mov_b64_e32 v[20:21], s[22:23]1642; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, s241643; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1644; GFX950-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1645; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1646; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]1647; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]1648; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]1649; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1650; GFX950-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]1651; GFX950-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]1652; GFX950-SDAG-NEXT: s_nop 11653; GFX950-SDAG-NEXT: v_smfmac_f32_32x32x16_f16 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:21654; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, 01655; GFX950-SDAG-NEXT: s_nop 101656; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:481657; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:321658; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:161659; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]1660; GFX950-SDAG-NEXT: s_endpgm1661;1662; GFX950-GISEL-LABEL: test_smfmac_f32_32x32x16_f16:1663; GFX950-GISEL: ; %bb.0: ; %bb1664; GFX950-GISEL-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x241665; GFX950-GISEL-NEXT: s_load_dword s24, s[4:5], 0x441666; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1667; GFX950-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[18:19]1668; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01669; GFX950-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]1670; GFX950-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]1671; GFX950-GISEL-NEXT: v_mov_b32_e32 v22, s241672; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1673; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1674; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1675; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]1676; GFX950-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]1677; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]1678; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1679; GFX950-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]1680; GFX950-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]1681; GFX950-GISEL-NEXT: s_nop 11682; GFX950-GISEL-NEXT: v_smfmac_f32_32x32x16_f16 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:21683; GFX950-GISEL-NEXT: v_mov_b32_e32 v16, 01684; GFX950-GISEL-NEXT: s_nop 101685; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]1686; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:161687; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:321688; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:481689; GFX950-GISEL-NEXT: s_endpgm1690; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_f32_32x32x16_f16:1691; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb1692; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x241693; GFX942-AGPRCD-SDAG-NEXT: s_load_dword s0, s[4:5], 0x441694; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)1695; GFX942-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[26:27]1696; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x01697; GFX942-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[28:29]1698; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s01699; GFX942-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[30:31]1700; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)1701; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s81702; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s91703; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s101704; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s111705; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s121706; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s131707; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s141708; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s151709; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s161710; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s171711; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s181712; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s191713; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s201714; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s211715; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s221716; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s231717; GFX942-AGPRCD-SDAG-NEXT: s_nop 11718; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x16_f16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:21719; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 01720; GFX942-AGPRCD-SDAG-NEXT: s_nop 71721; GFX942-AGPRCD-SDAG-NEXT: s_nop 11722; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:481723; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:321724; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:161725; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]1726; GFX942-AGPRCD-SDAG-NEXT: s_endpgm1727; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_f32_32x32x16_f16:1728; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb1729; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x241730; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x441731; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)1732; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[26:27]1733; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x01734; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[28:29]1735; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s01736; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[30:31]1737; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)1738; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s81739; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s91740; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s101741; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s111742; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s121743; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s131744; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s141745; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s151746; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s161747; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s171748; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s181749; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s191750; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s201751; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s211752; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s221753; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s231754; GFX942-AGPRCD-GISEL-NEXT: s_nop 11755; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x16_f16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:21756; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 01757; GFX942-AGPRCD-GISEL-NEXT: s_nop 71758; GFX942-AGPRCD-GISEL-NEXT: s_nop 11759; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]1760; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:161761; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:321762; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:481763; GFX942-AGPRCD-GISEL-NEXT: s_endpgm1764; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_f32_32x32x16_f16:1765; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb1766; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x241767; GFX950-AGPRCD-SDAG-NEXT: s_load_dword s0, s[4:5], 0x441768; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)1769; GFX950-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[26:27]1770; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x01771; GFX950-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[28:29]1772; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s01773; GFX950-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[30:31]1774; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)1775; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s81776; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s91777; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s101778; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s111779; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s121780; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s131781; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s141782; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s151783; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s161784; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s171785; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s181786; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s191787; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s201788; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s211789; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s221790; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s231791; GFX950-AGPRCD-SDAG-NEXT: s_nop 11792; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x16_f16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:21793; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 01794; GFX950-AGPRCD-SDAG-NEXT: s_nop 71795; GFX950-AGPRCD-SDAG-NEXT: s_nop 21796; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:481797; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:321798; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:161799; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]1800; GFX950-AGPRCD-SDAG-NEXT: s_endpgm1801; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_f32_32x32x16_f16:1802; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb1803; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x241804; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x441805; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)1806; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[26:27]1807; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x01808; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[28:29]1809; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s01810; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[30:31]1811; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)1812; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s81813; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s91814; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s101815; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s111816; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s121817; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s131818; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s141819; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s151820; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s161821; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s171822; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s181823; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s191824; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s201825; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s211826; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s221827; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s231828; GFX950-AGPRCD-GISEL-NEXT: s_nop 11829; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x16_f16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:21830; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 01831; GFX950-AGPRCD-GISEL-NEXT: s_nop 71832; GFX950-AGPRCD-GISEL-NEXT: s_nop 21833; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]1834; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:161835; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:321836; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:481837; GFX950-AGPRCD-GISEL-NEXT: s_endpgm1838bb:1839 %in.1 = load <16 x float>, ptr addrspace(1) %arg1840 %mai.1 = tail call <16 x float> @llvm.amdgcn.smfmac.f32.32x32x16.f16(<4 x half> %a, <8 x half> %b, <16 x float> %in.1, i32 %idx, i32 1, i32 2)1841 store <16 x float> %mai.1, ptr addrspace(1) %arg1842 ret void1843}1844 1845define amdgpu_kernel void @test_smfmac_f32_16x16x32_bf16(ptr addrspace(1) %arg, <4 x i16> %a, <8 x i16> %b, i32 %idx) #0 {1846; GFX942-SDAG-LABEL: test_smfmac_f32_16x16x32_bf16:1847; GFX942-SDAG: ; %bb.0: ; %bb1848; GFX942-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241849; GFX942-SDAG-NEXT: s_load_dword s6, s[4:5], 0x441850; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 01851; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1852; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01853; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1854; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[12:13]1855; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[14:15]1856; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, s61857; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1858; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]1859; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]1860; GFX942-SDAG-NEXT: s_nop 11861; GFX942-SDAG-NEXT: v_smfmac_f32_16x16x32_bf16 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:21862; GFX942-SDAG-NEXT: s_nop 61863; GFX942-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[8:9]1864; GFX942-SDAG-NEXT: s_endpgm1865;1866; GFX942-GISEL-LABEL: test_smfmac_f32_16x16x32_bf16:1867; GFX942-GISEL: ; %bb.0: ; %bb1868; GFX942-GISEL-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241869; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1870; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01871; GFX942-GISEL-NEXT: s_load_dword s6, s[4:5], 0x441872; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1873; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1874; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1875; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)1876; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[2:3]1877; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[0:1]1878; GFX942-GISEL-NEXT: v_mov_b32_e32 v6, s61879; GFX942-GISEL-NEXT: s_nop 11880; GFX942-GISEL-NEXT: v_smfmac_f32_16x16x32_bf16 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:21881; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 01882; GFX942-GISEL-NEXT: s_nop 51883; GFX942-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[8:9]1884; GFX942-GISEL-NEXT: s_endpgm1885;1886; GFX950-SDAG-LABEL: test_smfmac_f32_16x16x32_bf16:1887; GFX950-SDAG: ; %bb.0: ; %bb1888; GFX950-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241889; GFX950-SDAG-NEXT: s_load_dword s6, s[4:5], 0x441890; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 01891; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1892; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01893; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1894; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[12:13]1895; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[14:15]1896; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, s61897; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)1898; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]1899; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]1900; GFX950-SDAG-NEXT: s_nop 11901; GFX950-SDAG-NEXT: v_smfmac_f32_16x16x32_bf16 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:21902; GFX950-SDAG-NEXT: s_nop 71903; GFX950-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[8:9]1904; GFX950-SDAG-NEXT: s_endpgm1905;1906; GFX950-GISEL-LABEL: test_smfmac_f32_16x16x32_bf16:1907; GFX950-GISEL: ; %bb.0: ; %bb1908; GFX950-GISEL-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241909; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1910; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01911; GFX950-GISEL-NEXT: s_load_dword s6, s[4:5], 0x441912; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1913; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1914; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1915; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)1916; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[2:3]1917; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[0:1]1918; GFX950-GISEL-NEXT: v_mov_b32_e32 v6, s61919; GFX950-GISEL-NEXT: s_nop 11920; GFX950-GISEL-NEXT: v_smfmac_f32_16x16x32_bf16 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:21921; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 01922; GFX950-GISEL-NEXT: s_nop 61923; GFX950-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[8:9]1924; GFX950-GISEL-NEXT: s_endpgm1925; GFX942-AGPRCD-LABEL: test_smfmac_f32_16x16x32_bf16:1926; GFX942-AGPRCD: ; %bb.0: ; %bb1927; GFX942-AGPRCD-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241928; GFX942-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1929; GFX942-AGPRCD-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1930; GFX942-AGPRCD-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01931; GFX942-AGPRCD-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1932; GFX942-AGPRCD-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1933; GFX942-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1934; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a0, s01935; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a1, s11936; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a2, s21937; GFX942-AGPRCD-NEXT: v_accvgpr_write_b32 a3, s31938; GFX942-AGPRCD-NEXT: s_load_dword s0, s[4:5], 0x441939; GFX942-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1940; GFX942-AGPRCD-NEXT: v_mov_b32_e32 v6, s01941; GFX942-AGPRCD-NEXT: s_nop 11942; GFX942-AGPRCD-NEXT: v_smfmac_f32_16x16x32_bf16 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:21943; GFX942-AGPRCD-NEXT: v_mov_b32_e32 v0, 01944; GFX942-AGPRCD-NEXT: s_nop 51945; GFX942-AGPRCD-NEXT: global_store_dwordx4 v0, a[0:3], s[8:9]1946; GFX942-AGPRCD-NEXT: s_endpgm1947; GFX950-AGPRCD-LABEL: test_smfmac_f32_16x16x32_bf16:1948; GFX950-AGPRCD: ; %bb.0: ; %bb1949; GFX950-AGPRCD-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x241950; GFX950-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1951; GFX950-AGPRCD-NEXT: v_mov_b64_e32 v[4:5], s[10:11]1952; GFX950-AGPRCD-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x01953; GFX950-AGPRCD-NEXT: v_mov_b64_e32 v[0:1], s[12:13]1954; GFX950-AGPRCD-NEXT: v_mov_b64_e32 v[2:3], s[14:15]1955; GFX950-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1956; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a0, s01957; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a1, s11958; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a2, s21959; GFX950-AGPRCD-NEXT: v_accvgpr_write_b32 a3, s31960; GFX950-AGPRCD-NEXT: s_load_dword s0, s[4:5], 0x441961; GFX950-AGPRCD-NEXT: s_waitcnt lgkmcnt(0)1962; GFX950-AGPRCD-NEXT: v_mov_b32_e32 v6, s01963; GFX950-AGPRCD-NEXT: s_nop 11964; GFX950-AGPRCD-NEXT: v_smfmac_f32_16x16x32_bf16 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:21965; GFX950-AGPRCD-NEXT: v_mov_b32_e32 v0, 01966; GFX950-AGPRCD-NEXT: s_nop 61967; GFX950-AGPRCD-NEXT: global_store_dwordx4 v0, a[0:3], s[8:9]1968; GFX950-AGPRCD-NEXT: s_endpgm1969bb:1970 %in.1 = load <4 x float>, ptr addrspace(1) %arg1971 %mai.1 = tail call <4 x float> @llvm.amdgcn.smfmac.f32.16x16x32.bf16(<4 x i16> %a, <8 x i16> %b, <4 x float> %in.1, i32 %idx, i32 1, i32 2)1972 store <4 x float> %mai.1, ptr addrspace(1) %arg1973 ret void1974}1975 1976define amdgpu_kernel void @test_smfmac_f32_32x32x16_bf16(ptr addrspace(1) %arg, <4 x i16> %a, <8 x i16> %b, i32 %idx) #0 {1977; GFX942-SDAG-LABEL: test_smfmac_f32_32x32x16_bf16:1978; GFX942-SDAG: ; %bb.0: ; %bb1979; GFX942-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x241980; GFX942-SDAG-NEXT: s_load_dword s24, s[4:5], 0x441981; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1982; GFX942-SDAG-NEXT: v_mov_b64_e32 v[22:23], s[18:19]1983; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01984; GFX942-SDAG-NEXT: v_mov_b64_e32 v[18:19], s[20:21]1985; GFX942-SDAG-NEXT: v_mov_b64_e32 v[20:21], s[22:23]1986; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, s241987; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)1988; GFX942-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1989; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1990; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]1991; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]1992; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]1993; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1994; GFX942-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]1995; GFX942-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]1996; GFX942-SDAG-NEXT: s_nop 11997; GFX942-SDAG-NEXT: v_smfmac_f32_32x32x16_bf16 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:21998; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, 01999; GFX942-SDAG-NEXT: s_nop 92000; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:482001; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:322002; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:162003; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]2004; GFX942-SDAG-NEXT: s_endpgm2005;2006; GFX942-GISEL-LABEL: test_smfmac_f32_32x32x16_bf16:2007; GFX942-GISEL: ; %bb.0: ; %bb2008; GFX942-GISEL-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x242009; GFX942-GISEL-NEXT: s_load_dword s24, s[4:5], 0x442010; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2011; GFX942-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[18:19]2012; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02013; GFX942-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]2014; GFX942-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]2015; GFX942-GISEL-NEXT: v_mov_b32_e32 v22, s242016; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2017; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2018; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2019; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2020; GFX942-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2021; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2022; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2023; GFX942-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2024; GFX942-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2025; GFX942-GISEL-NEXT: s_nop 12026; GFX942-GISEL-NEXT: v_smfmac_f32_32x32x16_bf16 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:22027; GFX942-GISEL-NEXT: v_mov_b32_e32 v16, 02028; GFX942-GISEL-NEXT: s_nop 92029; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]2030; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:162031; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:322032; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:482033; GFX942-GISEL-NEXT: s_endpgm2034;2035; GFX950-SDAG-LABEL: test_smfmac_f32_32x32x16_bf16:2036; GFX950-SDAG: ; %bb.0: ; %bb2037; GFX950-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x242038; GFX950-SDAG-NEXT: s_load_dword s24, s[4:5], 0x442039; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2040; GFX950-SDAG-NEXT: v_mov_b64_e32 v[22:23], s[18:19]2041; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02042; GFX950-SDAG-NEXT: v_mov_b64_e32 v[18:19], s[20:21]2043; GFX950-SDAG-NEXT: v_mov_b64_e32 v[20:21], s[22:23]2044; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, s242045; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2046; GFX950-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2047; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2048; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2049; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2050; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2051; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2052; GFX950-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2053; GFX950-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2054; GFX950-SDAG-NEXT: s_nop 12055; GFX950-SDAG-NEXT: v_smfmac_f32_32x32x16_bf16 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:22056; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, 02057; GFX950-SDAG-NEXT: s_nop 102058; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:482059; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:322060; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:162061; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]2062; GFX950-SDAG-NEXT: s_endpgm2063;2064; GFX950-GISEL-LABEL: test_smfmac_f32_32x32x16_bf16:2065; GFX950-GISEL: ; %bb.0: ; %bb2066; GFX950-GISEL-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x242067; GFX950-GISEL-NEXT: s_load_dword s24, s[4:5], 0x442068; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2069; GFX950-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[18:19]2070; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02071; GFX950-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]2072; GFX950-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]2073; GFX950-GISEL-NEXT: v_mov_b32_e32 v22, s242074; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2075; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2076; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2077; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2078; GFX950-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2079; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2080; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2081; GFX950-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2082; GFX950-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2083; GFX950-GISEL-NEXT: s_nop 12084; GFX950-GISEL-NEXT: v_smfmac_f32_32x32x16_bf16 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:22085; GFX950-GISEL-NEXT: v_mov_b32_e32 v16, 02086; GFX950-GISEL-NEXT: s_nop 102087; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]2088; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:162089; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:322090; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:482091; GFX950-GISEL-NEXT: s_endpgm2092; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_f32_32x32x16_bf16:2093; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb2094; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x242095; GFX942-AGPRCD-SDAG-NEXT: s_load_dword s0, s[4:5], 0x442096; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2097; GFX942-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[26:27]2098; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x02099; GFX942-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[28:29]2100; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s02101; GFX942-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[30:31]2102; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2103; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82104; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92105; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102106; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112107; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s122108; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s132109; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s142110; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s152111; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s162112; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s172113; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s182114; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s192115; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s202116; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s212117; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s222118; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s232119; GFX942-AGPRCD-SDAG-NEXT: s_nop 12120; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x16_bf16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22121; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02122; GFX942-AGPRCD-SDAG-NEXT: s_nop 72123; GFX942-AGPRCD-SDAG-NEXT: s_nop 12124; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:482125; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:322126; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:162127; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]2128; GFX942-AGPRCD-SDAG-NEXT: s_endpgm2129; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_f32_32x32x16_bf16:2130; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb2131; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x242132; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x442133; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2134; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[26:27]2135; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x02136; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[28:29]2137; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s02138; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[30:31]2139; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2140; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s82141; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s92142; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s102143; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s112144; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s122145; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s132146; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s142147; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s152148; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s162149; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s172150; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s182151; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s192152; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s202153; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s212154; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s222155; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s232156; GFX942-AGPRCD-GISEL-NEXT: s_nop 12157; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x16_bf16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22158; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02159; GFX942-AGPRCD-GISEL-NEXT: s_nop 72160; GFX942-AGPRCD-GISEL-NEXT: s_nop 12161; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]2162; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:162163; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:322164; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:482165; GFX942-AGPRCD-GISEL-NEXT: s_endpgm2166; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_f32_32x32x16_bf16:2167; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb2168; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x242169; GFX950-AGPRCD-SDAG-NEXT: s_load_dword s0, s[4:5], 0x442170; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2171; GFX950-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[26:27]2172; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x02173; GFX950-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[28:29]2174; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s02175; GFX950-AGPRCD-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[30:31]2176; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2177; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82178; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92179; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102180; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112181; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s122182; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s132183; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s142184; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s152185; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s162186; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s172187; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s182188; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s192189; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s202190; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s212191; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s222192; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s232193; GFX950-AGPRCD-SDAG-NEXT: s_nop 12194; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x16_bf16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22195; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02196; GFX950-AGPRCD-SDAG-NEXT: s_nop 72197; GFX950-AGPRCD-SDAG-NEXT: s_nop 22198; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:482199; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:322200; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:162201; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]2202; GFX950-AGPRCD-SDAG-NEXT: s_endpgm2203; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_f32_32x32x16_bf16:2204; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb2205; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx8 s[24:31], s[4:5], 0x242206; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x442207; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2208; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[26:27]2209; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[24:25], 0x02210; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[28:29]2211; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s02212; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[30:31]2213; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2214; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s82215; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s92216; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s102217; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s112218; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s122219; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s132220; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s142221; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s152222; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s162223; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s172224; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s182225; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s192226; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s202227; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s212228; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s222229; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s232230; GFX950-AGPRCD-GISEL-NEXT: s_nop 12231; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x16_bf16 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22232; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02233; GFX950-AGPRCD-GISEL-NEXT: s_nop 72234; GFX950-AGPRCD-GISEL-NEXT: s_nop 22235; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[24:25]2236; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[24:25] offset:162237; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[24:25] offset:322238; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[24:25] offset:482239; GFX950-AGPRCD-GISEL-NEXT: s_endpgm2240bb:2241 %in.1 = load <16 x float>, ptr addrspace(1) %arg2242 %mai.1 = tail call <16 x float> @llvm.amdgcn.smfmac.f32.32x32x16.bf16(<4 x i16> %a, <8 x i16> %b, <16 x float> %in.1, i32 %idx, i32 1, i32 2)2243 store <16 x float> %mai.1, ptr addrspace(1) %arg2244 ret void2245}2246 2247define amdgpu_kernel void @test_smfmac_i32_16x16x64_i8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {2248; GFX942-SDAG-LABEL: test_smfmac_i32_16x16x64_i8:2249; GFX942-SDAG: ; %bb.0: ; %bb2250; GFX942-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2251; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242252; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 02253; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2254; GFX942-SDAG-NEXT: v_mov_b32_e32 v10, s82255; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02256; GFX942-SDAG-NEXT: v_mov_b32_e32 v11, s92257; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, s102258; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, s112259; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, s122260; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2261; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]2262; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, s132263; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, s142264; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]2265; GFX942-SDAG-NEXT: s_nop 12266; GFX942-SDAG-NEXT: v_smfmac_i32_16x16x64_i8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:22267; GFX942-SDAG-NEXT: s_nop 62268; GFX942-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]2269; GFX942-SDAG-NEXT: s_endpgm2270;2271; GFX942-GISEL-LABEL: test_smfmac_i32_16x16x64_i8:2272; GFX942-GISEL: ; %bb.0: ; %bb2273; GFX942-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x242274; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2275; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c2276; GFX942-GISEL-NEXT: s_load_dword s14, s[4:5], 0x442277; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2278; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2279; GFX942-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x02280; GFX942-GISEL-NEXT: s_mov_b32 s4, s22281; GFX942-GISEL-NEXT: s_mov_b32 s5, s32282; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]2283; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]2284; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2285; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2286; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2287; GFX942-GISEL-NEXT: v_mov_b32_e32 v6, s142288; GFX942-GISEL-NEXT: s_nop 12289; GFX942-GISEL-NEXT: v_smfmac_i32_16x16x64_i8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:22290; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 02291; GFX942-GISEL-NEXT: s_nop 52292; GFX942-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]2293; GFX942-GISEL-NEXT: s_endpgm2294;2295; GFX950-SDAG-LABEL: test_smfmac_i32_16x16x64_i8:2296; GFX950-SDAG: ; %bb.0: ; %bb2297; GFX950-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2298; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242299; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 02300; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2301; GFX950-SDAG-NEXT: v_mov_b32_e32 v10, s82302; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02303; GFX950-SDAG-NEXT: v_mov_b32_e32 v11, s92304; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, s102305; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, s112306; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, s122307; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2308; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]2309; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, s132310; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, s142311; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]2312; GFX950-SDAG-NEXT: s_nop 12313; GFX950-SDAG-NEXT: v_smfmac_i32_16x16x64_i8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:22314; GFX950-SDAG-NEXT: s_nop 72315; GFX950-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]2316; GFX950-SDAG-NEXT: s_endpgm2317;2318; GFX950-GISEL-LABEL: test_smfmac_i32_16x16x64_i8:2319; GFX950-GISEL: ; %bb.0: ; %bb2320; GFX950-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x242321; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2322; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c2323; GFX950-GISEL-NEXT: s_load_dword s14, s[4:5], 0x442324; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2325; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2326; GFX950-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x02327; GFX950-GISEL-NEXT: s_mov_b32 s4, s22328; GFX950-GISEL-NEXT: s_mov_b32 s5, s32329; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]2330; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]2331; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2332; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2333; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2334; GFX950-GISEL-NEXT: v_mov_b32_e32 v6, s142335; GFX950-GISEL-NEXT: s_nop 12336; GFX950-GISEL-NEXT: v_smfmac_i32_16x16x64_i8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:22337; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 02338; GFX950-GISEL-NEXT: s_nop 62339; GFX950-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]2340; GFX950-GISEL-NEXT: s_endpgm2341; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_i8:2342; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb2343; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242344; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2345; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02346; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2347; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82348; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92349; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102350; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112351; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2352; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2353; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s82354; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s92355; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s102356; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s112357; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s122358; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s132359; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s142360; GFX942-AGPRCD-SDAG-NEXT: s_nop 12361; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_i32_16x16x64_i8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22362; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02363; GFX942-AGPRCD-SDAG-NEXT: s_nop 52364; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2365; GFX942-AGPRCD-SDAG-NEXT: s_endpgm2366; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_i8:2367; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb2368; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2369; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242370; GFX942-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane2371; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2372; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2373; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c2374; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x442375; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s22376; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s32377; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2378; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2379; GFX942-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 02380; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02381; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2382; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2383; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s02384; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s12385; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s22386; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s32387; GFX942-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 02388; GFX942-AGPRCD-GISEL-NEXT: s_nop 12389; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s02390; GFX942-AGPRCD-GISEL-NEXT: s_nop 12391; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_i32_16x16x64_i8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22392; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02393; GFX942-AGPRCD-GISEL-NEXT: s_nop 52394; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]2395; GFX942-AGPRCD-GISEL-NEXT: s_endpgm2396; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_i8:2397; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb2398; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242399; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2400; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02401; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2402; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82403; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92404; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102405; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112406; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2407; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2408; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s82409; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s92410; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s102411; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s112412; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s122413; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s132414; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s142415; GFX950-AGPRCD-SDAG-NEXT: s_nop 12416; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_i32_16x16x64_i8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22417; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02418; GFX950-AGPRCD-SDAG-NEXT: s_nop 62419; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2420; GFX950-AGPRCD-SDAG-NEXT: s_endpgm2421; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_i8:2422; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb2423; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2424; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242425; GFX950-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane2426; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2427; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2428; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c2429; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x442430; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s22431; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s32432; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2433; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2434; GFX950-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 02435; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02436; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2437; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2438; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s02439; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s12440; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s22441; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s32442; GFX950-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 02443; GFX950-AGPRCD-GISEL-NEXT: s_nop 12444; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s02445; GFX950-AGPRCD-GISEL-NEXT: s_nop 12446; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_i32_16x16x64_i8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22447; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02448; GFX950-AGPRCD-GISEL-NEXT: s_nop 62449; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]2450; GFX950-AGPRCD-GISEL-NEXT: s_endpgm2451bb:2452 %in.1 = load <4 x i32>, ptr addrspace(1) %arg2453 %mai.1 = tail call <4 x i32> @llvm.amdgcn.smfmac.i32.16x16x64.i8(<2 x i32> %a, <4 x i32> %b, <4 x i32> %in.1, i32 %idx, i32 1, i32 2)2454 store <4 x i32> %mai.1, ptr addrspace(1) %arg2455 ret void2456}2457 2458define amdgpu_kernel void @test_smfmac_i32_32x32x32_i8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {2459; GFX942-SDAG-LABEL: test_smfmac_i32_32x32x32_i8:2460; GFX942-SDAG: ; %bb.0: ; %bb2461; GFX942-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c2462; GFX942-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x242463; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2464; GFX942-SDAG-NEXT: v_mov_b32_e32 v22, s162465; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x02466; GFX942-SDAG-NEXT: v_mov_b32_e32 v23, s172467; GFX942-SDAG-NEXT: v_mov_b32_e32 v18, s182468; GFX942-SDAG-NEXT: v_mov_b32_e32 v19, s192469; GFX942-SDAG-NEXT: v_mov_b32_e32 v20, s202470; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2471; GFX942-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2472; GFX942-SDAG-NEXT: v_mov_b32_e32 v21, s212473; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, s222474; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2475; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2476; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2477; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2478; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2479; GFX942-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2480; GFX942-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2481; GFX942-SDAG-NEXT: s_nop 12482; GFX942-SDAG-NEXT: v_smfmac_i32_32x32x32_i8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:22483; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, 02484; GFX942-SDAG-NEXT: s_nop 92485; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:482486; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:322487; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:162488; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]2489; GFX942-SDAG-NEXT: s_endpgm2490;2491; GFX942-GISEL-LABEL: test_smfmac_i32_32x32x32_i8:2492; GFX942-GISEL: ; %bb.0: ; %bb2493; GFX942-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c2494; GFX942-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x242495; GFX942-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c2496; GFX942-GISEL-NEXT: s_load_dword s26, s[4:5], 0x442497; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2498; GFX942-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]2499; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x02500; GFX942-GISEL-NEXT: s_mov_b32 s20, s182501; GFX942-GISEL-NEXT: s_mov_b32 s21, s192502; GFX942-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]2503; GFX942-GISEL-NEXT: v_mov_b32_e32 v22, s262504; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2505; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2506; GFX942-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]2507; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2508; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2509; GFX942-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2510; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2511; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2512; GFX942-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2513; GFX942-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2514; GFX942-GISEL-NEXT: s_nop 12515; GFX942-GISEL-NEXT: v_smfmac_i32_32x32x32_i8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:22516; GFX942-GISEL-NEXT: v_mov_b32_e32 v16, 02517; GFX942-GISEL-NEXT: s_nop 92518; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]2519; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:162520; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:322521; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:482522; GFX942-GISEL-NEXT: s_endpgm2523;2524; GFX950-SDAG-LABEL: test_smfmac_i32_32x32x32_i8:2525; GFX950-SDAG: ; %bb.0: ; %bb2526; GFX950-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c2527; GFX950-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x242528; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2529; GFX950-SDAG-NEXT: v_mov_b32_e32 v22, s162530; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x02531; GFX950-SDAG-NEXT: v_mov_b32_e32 v23, s172532; GFX950-SDAG-NEXT: v_mov_b32_e32 v18, s182533; GFX950-SDAG-NEXT: v_mov_b32_e32 v19, s192534; GFX950-SDAG-NEXT: v_mov_b32_e32 v20, s202535; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2536; GFX950-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2537; GFX950-SDAG-NEXT: v_mov_b32_e32 v21, s212538; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, s222539; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2540; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2541; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2542; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2543; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2544; GFX950-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2545; GFX950-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2546; GFX950-SDAG-NEXT: s_nop 12547; GFX950-SDAG-NEXT: v_smfmac_i32_32x32x32_i8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:22548; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, 02549; GFX950-SDAG-NEXT: s_nop 102550; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:482551; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:322552; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:162553; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]2554; GFX950-SDAG-NEXT: s_endpgm2555;2556; GFX950-GISEL-LABEL: test_smfmac_i32_32x32x32_i8:2557; GFX950-GISEL: ; %bb.0: ; %bb2558; GFX950-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c2559; GFX950-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x242560; GFX950-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c2561; GFX950-GISEL-NEXT: s_load_dword s26, s[4:5], 0x442562; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2563; GFX950-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]2564; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x02565; GFX950-GISEL-NEXT: s_mov_b32 s20, s182566; GFX950-GISEL-NEXT: s_mov_b32 s21, s192567; GFX950-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]2568; GFX950-GISEL-NEXT: v_mov_b32_e32 v22, s262569; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2570; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2571; GFX950-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]2572; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2573; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2574; GFX950-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2575; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2576; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2577; GFX950-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2578; GFX950-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2579; GFX950-GISEL-NEXT: s_nop 12580; GFX950-GISEL-NEXT: v_smfmac_i32_32x32x32_i8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:22581; GFX950-GISEL-NEXT: v_mov_b32_e32 v16, 02582; GFX950-GISEL-NEXT: s_nop 102583; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]2584; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:162585; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:322586; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:482587; GFX950-GISEL-NEXT: s_endpgm2588; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_i8:2589; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb2590; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242591; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2592; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x02593; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2594; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82595; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92596; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102597; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112598; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s122599; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s132600; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s142601; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s152602; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s162603; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s172604; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s182605; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s192606; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s202607; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s212608; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s222609; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s232610; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2611; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2612; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s82613; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s92614; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s102615; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s112616; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s122617; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s132618; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s142619; GFX942-AGPRCD-SDAG-NEXT: s_nop 12620; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_i32_32x32x32_i8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22621; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02622; GFX942-AGPRCD-SDAG-NEXT: s_nop 72623; GFX942-AGPRCD-SDAG-NEXT: s_nop 12624; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:482625; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:322626; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:162627; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2628; GFX942-AGPRCD-SDAG-NEXT: s_endpgm2629; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_i8:2630; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb2631; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242632; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c2633; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2634; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]2635; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x02636; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2637; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s82638; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s92639; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s102640; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s112641; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s122642; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s132643; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s142644; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s152645; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s162646; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s172647; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s182648; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s192649; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s202650; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s212651; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s222652; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s232653; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c2654; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x442655; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s262656; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s272657; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2658; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2659; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s22660; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2661; GFX942-AGPRCD-GISEL-NEXT: s_nop 12662; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_i32_32x32x32_i8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22663; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02664; GFX942-AGPRCD-GISEL-NEXT: s_nop 72665; GFX942-AGPRCD-GISEL-NEXT: s_nop 12666; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2667; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:162668; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:322669; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:482670; GFX942-AGPRCD-GISEL-NEXT: s_endpgm2671; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_i8:2672; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb2673; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242674; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2675; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x02676; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2677; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82678; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92679; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102680; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112681; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s122682; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s132683; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s142684; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s152685; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s162686; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s172687; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s182688; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s192689; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s202690; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s212691; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s222692; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s232693; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2694; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2695; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s82696; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s92697; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s102698; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s112699; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s122700; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s132701; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s142702; GFX950-AGPRCD-SDAG-NEXT: s_nop 12703; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_i32_32x32x32_i8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22704; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02705; GFX950-AGPRCD-SDAG-NEXT: s_nop 72706; GFX950-AGPRCD-SDAG-NEXT: s_nop 22707; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:482708; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:322709; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:162710; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2711; GFX950-AGPRCD-SDAG-NEXT: s_endpgm2712; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_i8:2713; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb2714; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242715; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c2716; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2717; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]2718; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x02719; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2720; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s82721; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s92722; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s102723; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s112724; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s122725; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s132726; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s142727; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s152728; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s162729; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s172730; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s182731; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s192732; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s202733; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s212734; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s222735; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s232736; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c2737; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x442738; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s262739; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s272740; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2741; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2742; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s22743; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2744; GFX950-AGPRCD-GISEL-NEXT: s_nop 12745; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_i32_32x32x32_i8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:22746; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02747; GFX950-AGPRCD-GISEL-NEXT: s_nop 72748; GFX950-AGPRCD-GISEL-NEXT: s_nop 22749; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2750; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:162751; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:322752; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:482753; GFX950-AGPRCD-GISEL-NEXT: s_endpgm2754bb:2755 %in.1 = load <16 x i32>, ptr addrspace(1) %arg2756 %mai.1 = tail call <16 x i32> @llvm.amdgcn.smfmac.i32.32x32x32.i8(<2 x i32> %a, <4 x i32> %b, <16 x i32> %in.1, i32 %idx, i32 1, i32 2)2757 store <16 x i32> %mai.1, ptr addrspace(1) %arg2758 ret void2759}2760 2761define amdgpu_kernel void @test_smfmac_i32_16x16x64_bf8_bf8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {2762; GFX942-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2763; GFX942-SDAG: ; %bb.0: ; %bb2764; GFX942-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2765; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242766; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 02767; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2768; GFX942-SDAG-NEXT: v_mov_b32_e32 v10, s82769; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02770; GFX942-SDAG-NEXT: v_mov_b32_e32 v11, s92771; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, s102772; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, s112773; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, s122774; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2775; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]2776; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, s132777; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, s142778; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]2779; GFX942-SDAG-NEXT: s_nop 12780; GFX942-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:22781; GFX942-SDAG-NEXT: s_nop 62782; GFX942-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]2783; GFX942-SDAG-NEXT: s_endpgm2784;2785; GFX942-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2786; GFX942-GISEL: ; %bb.0: ; %bb2787; GFX942-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x242788; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2789; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c2790; GFX942-GISEL-NEXT: s_load_dword s14, s[4:5], 0x442791; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2792; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2793; GFX942-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x02794; GFX942-GISEL-NEXT: s_mov_b32 s4, s22795; GFX942-GISEL-NEXT: s_mov_b32 s5, s32796; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]2797; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]2798; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)2799; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2800; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2801; GFX942-GISEL-NEXT: v_mov_b32_e32 v6, s142802; GFX942-GISEL-NEXT: s_nop 12803; GFX942-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:22804; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 02805; GFX942-GISEL-NEXT: s_nop 52806; GFX942-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]2807; GFX942-GISEL-NEXT: s_endpgm2808;2809; GFX950-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2810; GFX950-SDAG: ; %bb.0: ; %bb2811; GFX950-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2812; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242813; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 02814; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2815; GFX950-SDAG-NEXT: v_mov_b32_e32 v10, s82816; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02817; GFX950-SDAG-NEXT: v_mov_b32_e32 v11, s92818; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, s102819; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, s112820; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, s122821; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)2822; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]2823; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, s132824; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, s142825; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]2826; GFX950-SDAG-NEXT: s_nop 12827; GFX950-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:22828; GFX950-SDAG-NEXT: s_nop 72829; GFX950-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]2830; GFX950-SDAG-NEXT: s_endpgm2831;2832; GFX950-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2833; GFX950-GISEL: ; %bb.0: ; %bb2834; GFX950-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x242835; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2836; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c2837; GFX950-GISEL-NEXT: s_load_dword s14, s[4:5], 0x442838; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2839; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2840; GFX950-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x02841; GFX950-GISEL-NEXT: s_mov_b32 s4, s22842; GFX950-GISEL-NEXT: s_mov_b32 s5, s32843; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]2844; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]2845; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)2846; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2847; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2848; GFX950-GISEL-NEXT: v_mov_b32_e32 v6, s142849; GFX950-GISEL-NEXT: s_nop 12850; GFX950-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:22851; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 02852; GFX950-GISEL-NEXT: s_nop 62853; GFX950-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]2854; GFX950-GISEL-NEXT: s_endpgm2855; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2856; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb2857; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242858; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2859; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02860; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2861; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82862; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92863; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102864; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112865; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2866; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2867; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s82868; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s92869; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s102870; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s112871; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s122872; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s132873; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s142874; GFX942-AGPRCD-SDAG-NEXT: s_nop 12875; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22876; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02877; GFX942-AGPRCD-SDAG-NEXT: s_nop 52878; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2879; GFX942-AGPRCD-SDAG-NEXT: s_endpgm2880; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2881; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb2882; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2883; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242884; GFX942-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane2885; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2886; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2887; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c2888; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x442889; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s22890; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s32891; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2892; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2893; GFX942-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 02894; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02895; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2896; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2897; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s02898; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s12899; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s22900; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s32901; GFX942-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 02902; GFX942-AGPRCD-GISEL-NEXT: s_nop 12903; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s02904; GFX942-AGPRCD-GISEL-NEXT: s_nop 12905; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22906; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02907; GFX942-AGPRCD-GISEL-NEXT: s_nop 52908; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]2909; GFX942-AGPRCD-GISEL-NEXT: s_endpgm2910; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2911; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb2912; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x242913; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2914; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02915; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2916; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s82917; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s92918; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s102919; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s112920; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2921; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)2922; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s82923; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s92924; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s102925; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s112926; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s122927; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s132928; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s142929; GFX950-AGPRCD-SDAG-NEXT: s_nop 12930; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22931; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 02932; GFX950-AGPRCD-SDAG-NEXT: s_nop 62933; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2934; GFX950-AGPRCD-SDAG-NEXT: s_endpgm2935; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_bf8:2936; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb2937; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c2938; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242939; GFX950-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane2940; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2941; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]2942; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c2943; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x442944; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s22945; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s32946; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2947; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2948; GFX950-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 02949; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02950; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2951; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)2952; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s02953; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s12954; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s22955; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s32956; GFX950-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 02957; GFX950-AGPRCD-GISEL-NEXT: s_nop 12958; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s02959; GFX950-AGPRCD-GISEL-NEXT: s_nop 12960; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:22961; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 02962; GFX950-AGPRCD-GISEL-NEXT: s_nop 62963; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]2964; GFX950-AGPRCD-GISEL-NEXT: s_endpgm2965bb:2966 %in.1 = load <4 x float>, ptr addrspace(1) %arg2967 %mai.1 = tail call <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.bf8.bf8(<2 x i32> %a, <4 x i32> %b, <4 x float> %in.1, i32 %idx, i32 1, i32 2)2968 store <4 x float> %mai.1, ptr addrspace(1) %arg2969 ret void2970}2971 2972define amdgpu_kernel void @test_smfmac_i32_16x16x64_bf8_fp8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {2973; GFX942-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:2974; GFX942-SDAG: ; %bb.0: ; %bb2975; GFX942-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c2976; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x242977; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 02978; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2979; GFX942-SDAG-NEXT: v_mov_b32_e32 v10, s82980; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x02981; GFX942-SDAG-NEXT: v_mov_b32_e32 v11, s92982; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, s102983; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, s112984; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, s122985; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)2986; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]2987; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, s132988; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, s142989; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]2990; GFX942-SDAG-NEXT: s_nop 12991; GFX942-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:22992; GFX942-SDAG-NEXT: s_nop 62993; GFX942-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]2994; GFX942-SDAG-NEXT: s_endpgm2995;2996; GFX942-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:2997; GFX942-GISEL: ; %bb.0: ; %bb2998; GFX942-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x242999; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3000; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c3001; GFX942-GISEL-NEXT: s_load_dword s14, s[4:5], 0x443002; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3003; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3004; GFX942-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x03005; GFX942-GISEL-NEXT: s_mov_b32 s4, s23006; GFX942-GISEL-NEXT: s_mov_b32 s5, s33007; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]3008; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]3009; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3010; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3011; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3012; GFX942-GISEL-NEXT: v_mov_b32_e32 v6, s143013; GFX942-GISEL-NEXT: s_nop 13014; GFX942-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:23015; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 03016; GFX942-GISEL-NEXT: s_nop 53017; GFX942-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]3018; GFX942-GISEL-NEXT: s_endpgm3019;3020; GFX950-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:3021; GFX950-SDAG: ; %bb.0: ; %bb3022; GFX950-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3023; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243024; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 03025; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3026; GFX950-SDAG-NEXT: v_mov_b32_e32 v10, s83027; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03028; GFX950-SDAG-NEXT: v_mov_b32_e32 v11, s93029; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, s103030; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, s113031; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, s123032; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3033; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]3034; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, s133035; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, s143036; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]3037; GFX950-SDAG-NEXT: s_nop 13038; GFX950-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:23039; GFX950-SDAG-NEXT: s_nop 73040; GFX950-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]3041; GFX950-SDAG-NEXT: s_endpgm3042;3043; GFX950-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:3044; GFX950-GISEL: ; %bb.0: ; %bb3045; GFX950-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x243046; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3047; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c3048; GFX950-GISEL-NEXT: s_load_dword s14, s[4:5], 0x443049; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3050; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3051; GFX950-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x03052; GFX950-GISEL-NEXT: s_mov_b32 s4, s23053; GFX950-GISEL-NEXT: s_mov_b32 s5, s33054; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]3055; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]3056; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3057; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3058; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3059; GFX950-GISEL-NEXT: v_mov_b32_e32 v6, s143060; GFX950-GISEL-NEXT: s_nop 13061; GFX950-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:23062; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 03063; GFX950-GISEL-NEXT: s_nop 63064; GFX950-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]3065; GFX950-GISEL-NEXT: s_endpgm3066; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:3067; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb3068; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243069; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3070; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x03071; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3072; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83073; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93074; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103075; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113076; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3077; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3078; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83079; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93080; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103081; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113082; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123083; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133084; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143085; GFX942-AGPRCD-SDAG-NEXT: s_nop 13086; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23087; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03088; GFX942-AGPRCD-SDAG-NEXT: s_nop 53089; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3090; GFX942-AGPRCD-SDAG-NEXT: s_endpgm3091; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:3092; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb3093; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3094; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243095; GFX942-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane3096; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3097; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3098; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3099; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x443100; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s23101; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s33102; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3103; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3104; GFX942-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 03105; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03106; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3107; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3108; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s03109; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s13110; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s23111; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s33112; GFX942-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 03113; GFX942-AGPRCD-GISEL-NEXT: s_nop 13114; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s03115; GFX942-AGPRCD-GISEL-NEXT: s_nop 13116; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23117; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03118; GFX942-AGPRCD-GISEL-NEXT: s_nop 53119; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]3120; GFX942-AGPRCD-GISEL-NEXT: s_endpgm3121; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:3122; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb3123; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243124; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3125; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x03126; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3127; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83128; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93129; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103130; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113131; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3132; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3133; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83134; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93135; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103136; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113137; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123138; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133139; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143140; GFX950-AGPRCD-SDAG-NEXT: s_nop 13141; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23142; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03143; GFX950-AGPRCD-SDAG-NEXT: s_nop 63144; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3145; GFX950-AGPRCD-SDAG-NEXT: s_endpgm3146; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_bf8_fp8:3147; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb3148; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3149; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243150; GFX950-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane3151; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3152; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3153; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3154; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x443155; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s23156; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s33157; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3158; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3159; GFX950-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 03160; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03161; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3162; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3163; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s03164; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s13165; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s23166; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s33167; GFX950-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 03168; GFX950-AGPRCD-GISEL-NEXT: s_nop 13169; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s03170; GFX950-AGPRCD-GISEL-NEXT: s_nop 13171; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_bf8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23172; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03173; GFX950-AGPRCD-GISEL-NEXT: s_nop 63174; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]3175; GFX950-AGPRCD-GISEL-NEXT: s_endpgm3176bb:3177 %in.1 = load <4 x float>, ptr addrspace(1) %arg3178 %mai.1 = tail call <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.bf8.fp8(<2 x i32> %a, <4 x i32> %b, <4 x float> %in.1, i32 %idx, i32 1, i32 2)3179 store <4 x float> %mai.1, ptr addrspace(1) %arg3180 ret void3181}3182 3183define amdgpu_kernel void @test_smfmac_i32_16x16x64_fp8_bf8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {3184; GFX942-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3185; GFX942-SDAG: ; %bb.0: ; %bb3186; GFX942-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3187; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243188; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 03189; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3190; GFX942-SDAG-NEXT: v_mov_b32_e32 v10, s83191; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03192; GFX942-SDAG-NEXT: v_mov_b32_e32 v11, s93193; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, s103194; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, s113195; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, s123196; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3197; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]3198; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, s133199; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, s143200; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]3201; GFX942-SDAG-NEXT: s_nop 13202; GFX942-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:23203; GFX942-SDAG-NEXT: s_nop 63204; GFX942-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]3205; GFX942-SDAG-NEXT: s_endpgm3206;3207; GFX942-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3208; GFX942-GISEL: ; %bb.0: ; %bb3209; GFX942-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x243210; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3211; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c3212; GFX942-GISEL-NEXT: s_load_dword s14, s[4:5], 0x443213; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3214; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3215; GFX942-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x03216; GFX942-GISEL-NEXT: s_mov_b32 s4, s23217; GFX942-GISEL-NEXT: s_mov_b32 s5, s33218; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]3219; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]3220; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3221; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3222; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3223; GFX942-GISEL-NEXT: v_mov_b32_e32 v6, s143224; GFX942-GISEL-NEXT: s_nop 13225; GFX942-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:23226; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 03227; GFX942-GISEL-NEXT: s_nop 53228; GFX942-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]3229; GFX942-GISEL-NEXT: s_endpgm3230;3231; GFX950-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3232; GFX950-SDAG: ; %bb.0: ; %bb3233; GFX950-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3234; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243235; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 03236; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3237; GFX950-SDAG-NEXT: v_mov_b32_e32 v10, s83238; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03239; GFX950-SDAG-NEXT: v_mov_b32_e32 v11, s93240; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, s103241; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, s113242; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, s123243; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3244; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]3245; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, s133246; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, s143247; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]3248; GFX950-SDAG-NEXT: s_nop 13249; GFX950-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:23250; GFX950-SDAG-NEXT: s_nop 73251; GFX950-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]3252; GFX950-SDAG-NEXT: s_endpgm3253;3254; GFX950-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3255; GFX950-GISEL: ; %bb.0: ; %bb3256; GFX950-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x243257; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3258; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c3259; GFX950-GISEL-NEXT: s_load_dword s14, s[4:5], 0x443260; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3261; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3262; GFX950-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x03263; GFX950-GISEL-NEXT: s_mov_b32 s4, s23264; GFX950-GISEL-NEXT: s_mov_b32 s5, s33265; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]3266; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]3267; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3268; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3269; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3270; GFX950-GISEL-NEXT: v_mov_b32_e32 v6, s143271; GFX950-GISEL-NEXT: s_nop 13272; GFX950-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:23273; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 03274; GFX950-GISEL-NEXT: s_nop 63275; GFX950-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]3276; GFX950-GISEL-NEXT: s_endpgm3277; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3278; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb3279; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243280; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3281; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x03282; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3283; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83284; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93285; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103286; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113287; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3288; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3289; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83290; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93291; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103292; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113293; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123294; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133295; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143296; GFX942-AGPRCD-SDAG-NEXT: s_nop 13297; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23298; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03299; GFX942-AGPRCD-SDAG-NEXT: s_nop 53300; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3301; GFX942-AGPRCD-SDAG-NEXT: s_endpgm3302; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3303; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb3304; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3305; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243306; GFX942-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane3307; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3308; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3309; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3310; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x443311; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s23312; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s33313; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3314; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3315; GFX942-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 03316; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03317; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3318; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3319; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s03320; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s13321; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s23322; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s33323; GFX942-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 03324; GFX942-AGPRCD-GISEL-NEXT: s_nop 13325; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s03326; GFX942-AGPRCD-GISEL-NEXT: s_nop 13327; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23328; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03329; GFX942-AGPRCD-GISEL-NEXT: s_nop 53330; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]3331; GFX942-AGPRCD-GISEL-NEXT: s_endpgm3332; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3333; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb3334; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243335; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3336; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x03337; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3338; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83339; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93340; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103341; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113342; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3343; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3344; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83345; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93346; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103347; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113348; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123349; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133350; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143351; GFX950-AGPRCD-SDAG-NEXT: s_nop 13352; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23353; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03354; GFX950-AGPRCD-SDAG-NEXT: s_nop 63355; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3356; GFX950-AGPRCD-SDAG-NEXT: s_endpgm3357; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_bf8:3358; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb3359; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3360; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243361; GFX950-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane3362; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3363; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3364; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3365; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x443366; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s23367; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s33368; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3369; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3370; GFX950-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 03371; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03372; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3373; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3374; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s03375; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s13376; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s23377; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s33378; GFX950-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 03379; GFX950-AGPRCD-GISEL-NEXT: s_nop 13380; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s03381; GFX950-AGPRCD-GISEL-NEXT: s_nop 13382; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_bf8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23383; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03384; GFX950-AGPRCD-GISEL-NEXT: s_nop 63385; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]3386; GFX950-AGPRCD-GISEL-NEXT: s_endpgm3387bb:3388 %in.1 = load <4 x float>, ptr addrspace(1) %arg3389 %mai.1 = tail call <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.fp8.bf8(<2 x i32> %a, <4 x i32> %b, <4 x float> %in.1, i32 %idx, i32 1, i32 2)3390 store <4 x float> %mai.1, ptr addrspace(1) %arg3391 ret void3392}3393 3394define amdgpu_kernel void @test_smfmac_i32_16x16x64_fp8_fp8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {3395; GFX942-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3396; GFX942-SDAG: ; %bb.0: ; %bb3397; GFX942-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3398; GFX942-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243399; GFX942-SDAG-NEXT: v_mov_b32_e32 v0, 03400; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3401; GFX942-SDAG-NEXT: v_mov_b32_e32 v10, s83402; GFX942-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03403; GFX942-SDAG-NEXT: v_mov_b32_e32 v11, s93404; GFX942-SDAG-NEXT: v_mov_b32_e32 v2, s103405; GFX942-SDAG-NEXT: v_mov_b32_e32 v3, s113406; GFX942-SDAG-NEXT: v_mov_b32_e32 v4, s123407; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3408; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]3409; GFX942-SDAG-NEXT: v_mov_b32_e32 v5, s133410; GFX942-SDAG-NEXT: v_mov_b32_e32 v1, s143411; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]3412; GFX942-SDAG-NEXT: s_nop 13413; GFX942-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:23414; GFX942-SDAG-NEXT: s_nop 63415; GFX942-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]3416; GFX942-SDAG-NEXT: s_endpgm3417;3418; GFX942-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3419; GFX942-GISEL: ; %bb.0: ; %bb3420; GFX942-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x243421; GFX942-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3422; GFX942-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c3423; GFX942-GISEL-NEXT: s_load_dword s14, s[4:5], 0x443424; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3425; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3426; GFX942-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x03427; GFX942-GISEL-NEXT: s_mov_b32 s4, s23428; GFX942-GISEL-NEXT: s_mov_b32 s5, s33429; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]3430; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]3431; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3432; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3433; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3434; GFX942-GISEL-NEXT: v_mov_b32_e32 v6, s143435; GFX942-GISEL-NEXT: s_nop 13436; GFX942-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:23437; GFX942-GISEL-NEXT: v_mov_b32_e32 v0, 03438; GFX942-GISEL-NEXT: s_nop 53439; GFX942-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]3440; GFX942-GISEL-NEXT: s_endpgm3441;3442; GFX950-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3443; GFX950-SDAG: ; %bb.0: ; %bb3444; GFX950-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3445; GFX950-SDAG-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243446; GFX950-SDAG-NEXT: v_mov_b32_e32 v0, 03447; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3448; GFX950-SDAG-NEXT: v_mov_b32_e32 v10, s83449; GFX950-SDAG-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03450; GFX950-SDAG-NEXT: v_mov_b32_e32 v11, s93451; GFX950-SDAG-NEXT: v_mov_b32_e32 v2, s103452; GFX950-SDAG-NEXT: v_mov_b32_e32 v3, s113453; GFX950-SDAG-NEXT: v_mov_b32_e32 v4, s123454; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3455; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[2:3]3456; GFX950-SDAG-NEXT: v_mov_b32_e32 v5, s133457; GFX950-SDAG-NEXT: v_mov_b32_e32 v1, s143458; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[0:1]3459; GFX950-SDAG-NEXT: s_nop 13460; GFX950-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 v[6:9], v[10:11], v[2:5], v1 cbsz:1 abid:23461; GFX950-SDAG-NEXT: s_nop 73462; GFX950-SDAG-NEXT: global_store_dwordx4 v0, v[6:9], s[6:7]3463; GFX950-SDAG-NEXT: s_endpgm3464;3465; GFX950-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3466; GFX950-GISEL: ; %bb.0: ; %bb3467; GFX950-GISEL-NEXT: s_load_dwordx2 s[12:13], s[4:5], 0x243468; GFX950-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3469; GFX950-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x3c3470; GFX950-GISEL-NEXT: s_load_dword s14, s[4:5], 0x443471; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3472; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3473; GFX950-GISEL-NEXT: s_load_dwordx4 s[8:11], s[12:13], 0x03474; GFX950-GISEL-NEXT: s_mov_b32 s4, s23475; GFX950-GISEL-NEXT: s_mov_b32 s5, s33476; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[4:5]3477; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[6:7]3478; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3479; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3480; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3481; GFX950-GISEL-NEXT: v_mov_b32_e32 v6, s143482; GFX950-GISEL-NEXT: s_nop 13483; GFX950-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 v[8:11], v[4:5], v[0:3], v6 cbsz:1 abid:23484; GFX950-GISEL-NEXT: v_mov_b32_e32 v0, 03485; GFX950-GISEL-NEXT: s_nop 63486; GFX950-GISEL-NEXT: global_store_dwordx4 v0, v[8:11], s[12:13]3487; GFX950-GISEL-NEXT: s_endpgm3488; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3489; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb3490; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243491; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3492; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x03493; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3494; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83495; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93496; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103497; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113498; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3499; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3500; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83501; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93502; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103503; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113504; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123505; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133506; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143507; GFX942-AGPRCD-SDAG-NEXT: s_nop 13508; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23509; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03510; GFX942-AGPRCD-SDAG-NEXT: s_nop 53511; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3512; GFX942-AGPRCD-SDAG-NEXT: s_endpgm3513; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3514; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb3515; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3516; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243517; GFX942-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane3518; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3519; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3520; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3521; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x443522; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s23523; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s33524; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3525; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3526; GFX942-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 03527; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03528; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3529; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3530; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s03531; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s13532; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s23533; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s33534; GFX942-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 03535; GFX942-AGPRCD-GISEL-NEXT: s_nop 13536; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s03537; GFX942-AGPRCD-GISEL-NEXT: s_nop 13538; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23539; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03540; GFX942-AGPRCD-GISEL-NEXT: s_nop 53541; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]3542; GFX942-AGPRCD-GISEL-NEXT: s_endpgm3543; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3544; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb3545; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243546; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3547; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x03548; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3549; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83550; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93551; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103552; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113553; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3554; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3555; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83556; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93557; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103558; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113559; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123560; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133561; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143562; GFX950-AGPRCD-SDAG-NEXT: s_nop 13563; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23564; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03565; GFX950-AGPRCD-SDAG-NEXT: s_nop 63566; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3567; GFX950-AGPRCD-SDAG-NEXT: s_endpgm3568; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_16x16x64_fp8_fp8:3569; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb3570; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x2c3571; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243572; GFX950-AGPRCD-GISEL-NEXT: ; implicit-def: $vgpr7 : SGPR spill to VGPR lane3573; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3574; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[0:1]3575; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3576; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s0, s[4:5], 0x443577; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s23578; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s33579; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3580; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3581; GFX950-AGPRCD-GISEL-NEXT: v_writelane_b32 v7, s0, 03582; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03583; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3584; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3585; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s03586; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s13587; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s23588; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s33589; GFX950-AGPRCD-GISEL-NEXT: v_readlane_b32 s0, v7, 03590; GFX950-AGPRCD-GISEL-NEXT: s_nop 13591; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s03592; GFX950-AGPRCD-GISEL-NEXT: s_nop 13593; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_16x16x64_fp8_fp8 a[0:3], v[4:5], v[0:3], v6 cbsz:1 abid:23594; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03595; GFX950-AGPRCD-GISEL-NEXT: s_nop 63596; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[6:7]3597; GFX950-AGPRCD-GISEL-NEXT: s_endpgm3598bb:3599 %in.1 = load <4 x float>, ptr addrspace(1) %arg3600 %mai.1 = tail call <4 x float> @llvm.amdgcn.smfmac.f32.16x16x64.fp8.fp8(<2 x i32> %a, <4 x i32> %b, <4 x float> %in.1, i32 %idx, i32 1, i32 2)3601 store <4 x float> %mai.1, ptr addrspace(1) %arg3602 ret void3603}3604 3605define amdgpu_kernel void @test_smfmac_i32_32x32x32_bf8_bf8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {3606; GFX942-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3607; GFX942-SDAG: ; %bb.0: ; %bb3608; GFX942-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c3609; GFX942-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x243610; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3611; GFX942-SDAG-NEXT: v_mov_b32_e32 v22, s163612; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x03613; GFX942-SDAG-NEXT: v_mov_b32_e32 v23, s173614; GFX942-SDAG-NEXT: v_mov_b32_e32 v18, s183615; GFX942-SDAG-NEXT: v_mov_b32_e32 v19, s193616; GFX942-SDAG-NEXT: v_mov_b32_e32 v20, s203617; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3618; GFX942-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3619; GFX942-SDAG-NEXT: v_mov_b32_e32 v21, s213620; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, s223621; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3622; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3623; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3624; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3625; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3626; GFX942-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3627; GFX942-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3628; GFX942-SDAG-NEXT: s_nop 13629; GFX942-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:23630; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, 03631; GFX942-SDAG-NEXT: s_nop 93632; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:483633; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:323634; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:163635; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]3636; GFX942-SDAG-NEXT: s_endpgm3637;3638; GFX942-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3639; GFX942-GISEL: ; %bb.0: ; %bb3640; GFX942-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c3641; GFX942-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x243642; GFX942-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c3643; GFX942-GISEL-NEXT: s_load_dword s26, s[4:5], 0x443644; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3645; GFX942-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]3646; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x03647; GFX942-GISEL-NEXT: s_mov_b32 s20, s183648; GFX942-GISEL-NEXT: s_mov_b32 s21, s193649; GFX942-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]3650; GFX942-GISEL-NEXT: v_mov_b32_e32 v22, s263651; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3652; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3653; GFX942-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]3654; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3655; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3656; GFX942-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3657; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3658; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3659; GFX942-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3660; GFX942-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3661; GFX942-GISEL-NEXT: s_nop 13662; GFX942-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:23663; GFX942-GISEL-NEXT: v_mov_b32_e32 v16, 03664; GFX942-GISEL-NEXT: s_nop 93665; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]3666; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:163667; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:323668; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:483669; GFX942-GISEL-NEXT: s_endpgm3670;3671; GFX950-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3672; GFX950-SDAG: ; %bb.0: ; %bb3673; GFX950-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c3674; GFX950-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x243675; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3676; GFX950-SDAG-NEXT: v_mov_b32_e32 v22, s163677; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x03678; GFX950-SDAG-NEXT: v_mov_b32_e32 v23, s173679; GFX950-SDAG-NEXT: v_mov_b32_e32 v18, s183680; GFX950-SDAG-NEXT: v_mov_b32_e32 v19, s193681; GFX950-SDAG-NEXT: v_mov_b32_e32 v20, s203682; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3683; GFX950-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3684; GFX950-SDAG-NEXT: v_mov_b32_e32 v21, s213685; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, s223686; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3687; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3688; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3689; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3690; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3691; GFX950-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3692; GFX950-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3693; GFX950-SDAG-NEXT: s_nop 13694; GFX950-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:23695; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, 03696; GFX950-SDAG-NEXT: s_nop 103697; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:483698; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:323699; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:163700; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]3701; GFX950-SDAG-NEXT: s_endpgm3702;3703; GFX950-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3704; GFX950-GISEL: ; %bb.0: ; %bb3705; GFX950-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c3706; GFX950-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x243707; GFX950-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c3708; GFX950-GISEL-NEXT: s_load_dword s26, s[4:5], 0x443709; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3710; GFX950-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]3711; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x03712; GFX950-GISEL-NEXT: s_mov_b32 s20, s183713; GFX950-GISEL-NEXT: s_mov_b32 s21, s193714; GFX950-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]3715; GFX950-GISEL-NEXT: v_mov_b32_e32 v22, s263716; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)3717; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3718; GFX950-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]3719; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3720; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3721; GFX950-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3722; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3723; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3724; GFX950-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3725; GFX950-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3726; GFX950-GISEL-NEXT: s_nop 13727; GFX950-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:23728; GFX950-GISEL-NEXT: v_mov_b32_e32 v16, 03729; GFX950-GISEL-NEXT: s_nop 103730; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]3731; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:163732; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:323733; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:483734; GFX950-GISEL-NEXT: s_endpgm3735; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3736; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb3737; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243738; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3739; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x03740; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3741; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83742; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93743; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103744; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113745; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s123746; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s133747; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s143748; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s153749; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s163750; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s173751; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s183752; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s193753; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s203754; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s213755; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s223756; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s233757; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3758; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3759; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83760; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93761; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103762; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113763; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123764; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133765; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143766; GFX942-AGPRCD-SDAG-NEXT: s_nop 13767; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:23768; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03769; GFX942-AGPRCD-SDAG-NEXT: s_nop 73770; GFX942-AGPRCD-SDAG-NEXT: s_nop 13771; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:483772; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:323773; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:163774; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3775; GFX942-AGPRCD-SDAG-NEXT: s_endpgm3776; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3777; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb3778; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243779; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c3780; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3781; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]3782; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x03783; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3784; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s83785; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s93786; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s103787; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s113788; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s123789; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s133790; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s143791; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s153792; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s163793; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s173794; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s183795; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s193796; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s203797; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s213798; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s223799; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s233800; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3801; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x443802; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s263803; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s273804; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3805; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3806; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s23807; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3808; GFX942-AGPRCD-GISEL-NEXT: s_nop 13809; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:23810; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03811; GFX942-AGPRCD-GISEL-NEXT: s_nop 73812; GFX942-AGPRCD-GISEL-NEXT: s_nop 13813; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3814; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:163815; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:323816; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:483817; GFX942-AGPRCD-GISEL-NEXT: s_endpgm3818; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3819; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb3820; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243821; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3822; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x03823; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3824; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s83825; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s93826; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s103827; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s113828; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s123829; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s133830; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s143831; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s153832; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s163833; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s173834; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s183835; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s193836; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s203837; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s213838; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s223839; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s233840; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c3841; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)3842; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s83843; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s93844; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s103845; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s113846; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s123847; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s133848; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s143849; GFX950-AGPRCD-SDAG-NEXT: s_nop 13850; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:23851; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 03852; GFX950-AGPRCD-SDAG-NEXT: s_nop 73853; GFX950-AGPRCD-SDAG-NEXT: s_nop 23854; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:483855; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:323856; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:163857; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3858; GFX950-AGPRCD-SDAG-NEXT: s_endpgm3859; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_bf8:3860; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb3861; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243862; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c3863; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3864; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]3865; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x03866; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3867; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s83868; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s93869; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s103870; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s113871; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s123872; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s133873; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s143874; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s153875; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s163876; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s173877; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s183878; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s193879; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s203880; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s213881; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s223882; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s233883; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c3884; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x443885; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s263886; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s273887; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)3888; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]3889; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s23890; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]3891; GFX950-AGPRCD-GISEL-NEXT: s_nop 13892; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:23893; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 03894; GFX950-AGPRCD-GISEL-NEXT: s_nop 73895; GFX950-AGPRCD-GISEL-NEXT: s_nop 23896; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3897; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:163898; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:323899; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:483900; GFX950-AGPRCD-GISEL-NEXT: s_endpgm3901bb:3902 %in.1 = load <16 x float>, ptr addrspace(1) %arg3903 %mai.1 = tail call <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.bf8.bf8(<2 x i32> %a, <4 x i32> %b, <16 x float> %in.1, i32 %idx, i32 1, i32 2)3904 store <16 x float> %mai.1, ptr addrspace(1) %arg3905 ret void3906}3907 3908define amdgpu_kernel void @test_smfmac_i32_32x32x32_bf8_fp8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {3909; GFX942-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:3910; GFX942-SDAG: ; %bb.0: ; %bb3911; GFX942-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c3912; GFX942-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x243913; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3914; GFX942-SDAG-NEXT: v_mov_b32_e32 v22, s163915; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x03916; GFX942-SDAG-NEXT: v_mov_b32_e32 v23, s173917; GFX942-SDAG-NEXT: v_mov_b32_e32 v18, s183918; GFX942-SDAG-NEXT: v_mov_b32_e32 v19, s193919; GFX942-SDAG-NEXT: v_mov_b32_e32 v20, s203920; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)3921; GFX942-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3922; GFX942-SDAG-NEXT: v_mov_b32_e32 v21, s213923; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, s223924; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3925; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3926; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3927; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3928; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3929; GFX942-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3930; GFX942-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3931; GFX942-SDAG-NEXT: s_nop 13932; GFX942-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:23933; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, 03934; GFX942-SDAG-NEXT: s_nop 93935; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:483936; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:323937; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:163938; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]3939; GFX942-SDAG-NEXT: s_endpgm3940;3941; GFX942-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:3942; GFX942-GISEL: ; %bb.0: ; %bb3943; GFX942-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c3944; GFX942-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x243945; GFX942-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c3946; GFX942-GISEL-NEXT: s_load_dword s26, s[4:5], 0x443947; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3948; GFX942-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]3949; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x03950; GFX942-GISEL-NEXT: s_mov_b32 s20, s183951; GFX942-GISEL-NEXT: s_mov_b32 s21, s193952; GFX942-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]3953; GFX942-GISEL-NEXT: v_mov_b32_e32 v22, s263954; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)3955; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3956; GFX942-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]3957; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3958; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3959; GFX942-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3960; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3961; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3962; GFX942-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3963; GFX942-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3964; GFX942-GISEL-NEXT: s_nop 13965; GFX942-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:23966; GFX942-GISEL-NEXT: v_mov_b32_e32 v16, 03967; GFX942-GISEL-NEXT: s_nop 93968; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]3969; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:163970; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:323971; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:483972; GFX942-GISEL-NEXT: s_endpgm3973;3974; GFX950-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:3975; GFX950-SDAG: ; %bb.0: ; %bb3976; GFX950-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c3977; GFX950-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x243978; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3979; GFX950-SDAG-NEXT: v_mov_b32_e32 v22, s163980; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x03981; GFX950-SDAG-NEXT: v_mov_b32_e32 v23, s173982; GFX950-SDAG-NEXT: v_mov_b32_e32 v18, s183983; GFX950-SDAG-NEXT: v_mov_b32_e32 v19, s193984; GFX950-SDAG-NEXT: v_mov_b32_e32 v20, s203985; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)3986; GFX950-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3987; GFX950-SDAG-NEXT: v_mov_b32_e32 v21, s213988; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, s223989; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3990; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3991; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3992; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3993; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3994; GFX950-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3995; GFX950-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3996; GFX950-SDAG-NEXT: s_nop 13997; GFX950-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:23998; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, 03999; GFX950-SDAG-NEXT: s_nop 104000; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484001; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324002; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164003; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4004; GFX950-SDAG-NEXT: s_endpgm4005;4006; GFX950-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:4007; GFX950-GISEL: ; %bb.0: ; %bb4008; GFX950-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c4009; GFX950-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244010; GFX950-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c4011; GFX950-GISEL-NEXT: s_load_dword s26, s[4:5], 0x444012; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)4013; GFX950-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]4014; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04015; GFX950-GISEL-NEXT: s_mov_b32 s20, s184016; GFX950-GISEL-NEXT: s_mov_b32 s21, s194017; GFX950-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]4018; GFX950-GISEL-NEXT: v_mov_b32_e32 v22, s264019; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)4020; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4021; GFX950-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]4022; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4023; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4024; GFX950-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4025; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4026; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4027; GFX950-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4028; GFX950-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4029; GFX950-GISEL-NEXT: s_nop 14030; GFX950-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:24031; GFX950-GISEL-NEXT: v_mov_b32_e32 v16, 04032; GFX950-GISEL-NEXT: s_nop 104033; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4034; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164035; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324036; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484037; GFX950-GISEL-NEXT: s_endpgm4038; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:4039; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb4040; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244041; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4042; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04043; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4044; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s84045; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s94046; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s104047; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s114048; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s124049; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s134050; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s144051; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s154052; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s164053; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s174054; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s184055; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s194056; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s204057; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s214058; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s224059; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s234060; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c4061; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4062; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s84063; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s94064; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s104065; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s114066; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s124067; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s134068; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s144069; GFX942-AGPRCD-SDAG-NEXT: s_nop 14070; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24071; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 04072; GFX942-AGPRCD-SDAG-NEXT: s_nop 74073; GFX942-AGPRCD-SDAG-NEXT: s_nop 14074; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484075; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324076; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164077; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4078; GFX942-AGPRCD-SDAG-NEXT: s_endpgm4079; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:4080; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb4081; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244082; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c4083; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4084; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]4085; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04086; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4087; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s84088; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s94089; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s104090; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s114091; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s124092; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s134093; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s144094; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s154095; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s164096; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s174097; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s184098; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s194099; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s204100; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s214101; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s224102; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s234103; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c4104; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x444105; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s264106; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s274107; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4108; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]4109; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s24110; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]4111; GFX942-AGPRCD-GISEL-NEXT: s_nop 14112; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24113; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 04114; GFX942-AGPRCD-GISEL-NEXT: s_nop 74115; GFX942-AGPRCD-GISEL-NEXT: s_nop 14116; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4117; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164118; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324119; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484120; GFX942-AGPRCD-GISEL-NEXT: s_endpgm4121; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:4122; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb4123; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244124; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4125; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04126; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4127; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s84128; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s94129; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s104130; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s114131; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s124132; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s134133; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s144134; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s154135; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s164136; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s174137; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s184138; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s194139; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s204140; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s214141; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s224142; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s234143; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c4144; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4145; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s84146; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s94147; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s104148; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s114149; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s124150; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s134151; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s144152; GFX950-AGPRCD-SDAG-NEXT: s_nop 14153; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24154; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 04155; GFX950-AGPRCD-SDAG-NEXT: s_nop 74156; GFX950-AGPRCD-SDAG-NEXT: s_nop 24157; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484158; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324159; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164160; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4161; GFX950-AGPRCD-SDAG-NEXT: s_endpgm4162; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_bf8_fp8:4163; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb4164; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244165; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c4166; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4167; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]4168; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04169; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4170; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s84171; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s94172; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s104173; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s114174; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s124175; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s134176; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s144177; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s154178; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s164179; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s174180; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s184181; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s194182; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s204183; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s214184; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s224185; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s234186; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c4187; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x444188; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s264189; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s274190; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4191; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]4192; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s24193; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]4194; GFX950-AGPRCD-GISEL-NEXT: s_nop 14195; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_bf8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24196; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 04197; GFX950-AGPRCD-GISEL-NEXT: s_nop 74198; GFX950-AGPRCD-GISEL-NEXT: s_nop 24199; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4200; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164201; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324202; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484203; GFX950-AGPRCD-GISEL-NEXT: s_endpgm4204bb:4205 %in.1 = load <16 x float>, ptr addrspace(1) %arg4206 %mai.1 = tail call <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.bf8.fp8(<2 x i32> %a, <4 x i32> %b, <16 x float> %in.1, i32 %idx, i32 1, i32 2)4207 store <16 x float> %mai.1, ptr addrspace(1) %arg4208 ret void4209}4210 4211define amdgpu_kernel void @test_smfmac_i32_32x32x32_fp8_bf8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {4212; GFX942-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4213; GFX942-SDAG: ; %bb.0: ; %bb4214; GFX942-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c4215; GFX942-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244216; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)4217; GFX942-SDAG-NEXT: v_mov_b32_e32 v22, s164218; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04219; GFX942-SDAG-NEXT: v_mov_b32_e32 v23, s174220; GFX942-SDAG-NEXT: v_mov_b32_e32 v18, s184221; GFX942-SDAG-NEXT: v_mov_b32_e32 v19, s194222; GFX942-SDAG-NEXT: v_mov_b32_e32 v20, s204223; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)4224; GFX942-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4225; GFX942-SDAG-NEXT: v_mov_b32_e32 v21, s214226; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, s224227; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4228; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4229; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4230; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4231; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4232; GFX942-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4233; GFX942-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4234; GFX942-SDAG-NEXT: s_nop 14235; GFX942-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:24236; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, 04237; GFX942-SDAG-NEXT: s_nop 94238; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484239; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324240; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164241; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4242; GFX942-SDAG-NEXT: s_endpgm4243;4244; GFX942-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4245; GFX942-GISEL: ; %bb.0: ; %bb4246; GFX942-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c4247; GFX942-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244248; GFX942-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c4249; GFX942-GISEL-NEXT: s_load_dword s26, s[4:5], 0x444250; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)4251; GFX942-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]4252; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04253; GFX942-GISEL-NEXT: s_mov_b32 s20, s184254; GFX942-GISEL-NEXT: s_mov_b32 s21, s194255; GFX942-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]4256; GFX942-GISEL-NEXT: v_mov_b32_e32 v22, s264257; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)4258; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4259; GFX942-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]4260; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4261; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4262; GFX942-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4263; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4264; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4265; GFX942-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4266; GFX942-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4267; GFX942-GISEL-NEXT: s_nop 14268; GFX942-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:24269; GFX942-GISEL-NEXT: v_mov_b32_e32 v16, 04270; GFX942-GISEL-NEXT: s_nop 94271; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4272; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164273; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324274; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484275; GFX942-GISEL-NEXT: s_endpgm4276;4277; GFX950-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4278; GFX950-SDAG: ; %bb.0: ; %bb4279; GFX950-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c4280; GFX950-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244281; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)4282; GFX950-SDAG-NEXT: v_mov_b32_e32 v22, s164283; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04284; GFX950-SDAG-NEXT: v_mov_b32_e32 v23, s174285; GFX950-SDAG-NEXT: v_mov_b32_e32 v18, s184286; GFX950-SDAG-NEXT: v_mov_b32_e32 v19, s194287; GFX950-SDAG-NEXT: v_mov_b32_e32 v20, s204288; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)4289; GFX950-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4290; GFX950-SDAG-NEXT: v_mov_b32_e32 v21, s214291; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, s224292; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4293; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4294; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4295; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4296; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4297; GFX950-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4298; GFX950-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4299; GFX950-SDAG-NEXT: s_nop 14300; GFX950-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:24301; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, 04302; GFX950-SDAG-NEXT: s_nop 104303; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484304; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324305; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164306; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4307; GFX950-SDAG-NEXT: s_endpgm4308;4309; GFX950-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4310; GFX950-GISEL: ; %bb.0: ; %bb4311; GFX950-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c4312; GFX950-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244313; GFX950-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c4314; GFX950-GISEL-NEXT: s_load_dword s26, s[4:5], 0x444315; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)4316; GFX950-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]4317; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04318; GFX950-GISEL-NEXT: s_mov_b32 s20, s184319; GFX950-GISEL-NEXT: s_mov_b32 s21, s194320; GFX950-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]4321; GFX950-GISEL-NEXT: v_mov_b32_e32 v22, s264322; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)4323; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4324; GFX950-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]4325; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4326; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4327; GFX950-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4328; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4329; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4330; GFX950-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4331; GFX950-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4332; GFX950-GISEL-NEXT: s_nop 14333; GFX950-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:24334; GFX950-GISEL-NEXT: v_mov_b32_e32 v16, 04335; GFX950-GISEL-NEXT: s_nop 104336; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4337; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164338; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324339; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484340; GFX950-GISEL-NEXT: s_endpgm4341; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4342; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb4343; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244344; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4345; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04346; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4347; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s84348; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s94349; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s104350; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s114351; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s124352; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s134353; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s144354; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s154355; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s164356; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s174357; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s184358; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s194359; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s204360; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s214361; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s224362; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s234363; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c4364; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4365; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s84366; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s94367; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s104368; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s114369; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s124370; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s134371; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s144372; GFX942-AGPRCD-SDAG-NEXT: s_nop 14373; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24374; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 04375; GFX942-AGPRCD-SDAG-NEXT: s_nop 74376; GFX942-AGPRCD-SDAG-NEXT: s_nop 14377; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484378; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324379; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164380; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4381; GFX942-AGPRCD-SDAG-NEXT: s_endpgm4382; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4383; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb4384; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244385; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c4386; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4387; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]4388; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04389; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4390; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s84391; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s94392; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s104393; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s114394; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s124395; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s134396; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s144397; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s154398; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s164399; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s174400; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s184401; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s194402; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s204403; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s214404; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s224405; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s234406; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c4407; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x444408; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s264409; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s274410; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4411; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]4412; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s24413; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]4414; GFX942-AGPRCD-GISEL-NEXT: s_nop 14415; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24416; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 04417; GFX942-AGPRCD-GISEL-NEXT: s_nop 74418; GFX942-AGPRCD-GISEL-NEXT: s_nop 14419; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4420; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164421; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324422; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484423; GFX942-AGPRCD-GISEL-NEXT: s_endpgm4424; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4425; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb4426; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244427; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4428; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04429; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4430; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s84431; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s94432; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s104433; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s114434; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s124435; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s134436; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s144437; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s154438; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s164439; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s174440; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s184441; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s194442; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s204443; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s214444; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s224445; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s234446; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c4447; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4448; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s84449; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s94450; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s104451; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s114452; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s124453; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s134454; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s144455; GFX950-AGPRCD-SDAG-NEXT: s_nop 14456; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24457; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 04458; GFX950-AGPRCD-SDAG-NEXT: s_nop 74459; GFX950-AGPRCD-SDAG-NEXT: s_nop 24460; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484461; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324462; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164463; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4464; GFX950-AGPRCD-SDAG-NEXT: s_endpgm4465; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_bf8:4466; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb4467; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244468; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c4469; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4470; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]4471; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04472; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4473; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s84474; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s94475; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s104476; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s114477; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s124478; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s134479; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s144480; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s154481; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s164482; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s174483; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s184484; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s194485; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s204486; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s214487; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s224488; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s234489; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c4490; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x444491; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s264492; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s274493; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4494; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]4495; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s24496; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]4497; GFX950-AGPRCD-GISEL-NEXT: s_nop 14498; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_bf8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24499; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 04500; GFX950-AGPRCD-GISEL-NEXT: s_nop 74501; GFX950-AGPRCD-GISEL-NEXT: s_nop 24502; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4503; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164504; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324505; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484506; GFX950-AGPRCD-GISEL-NEXT: s_endpgm4507bb:4508 %in.1 = load <16 x float>, ptr addrspace(1) %arg4509 %mai.1 = tail call <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.fp8.bf8(<2 x i32> %a, <4 x i32> %b, <16 x float> %in.1, i32 %idx, i32 1, i32 2)4510 store <16 x float> %mai.1, ptr addrspace(1) %arg4511 ret void4512}4513 4514define amdgpu_kernel void @test_smfmac_i32_32x32x32_fp8_fp8(ptr addrspace(1) %arg, <2 x i32> %a, <4 x i32> %b, i32 %idx) #0 {4515; GFX942-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4516; GFX942-SDAG: ; %bb.0: ; %bb4517; GFX942-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c4518; GFX942-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244519; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)4520; GFX942-SDAG-NEXT: v_mov_b32_e32 v22, s164521; GFX942-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04522; GFX942-SDAG-NEXT: v_mov_b32_e32 v23, s174523; GFX942-SDAG-NEXT: v_mov_b32_e32 v18, s184524; GFX942-SDAG-NEXT: v_mov_b32_e32 v19, s194525; GFX942-SDAG-NEXT: v_mov_b32_e32 v20, s204526; GFX942-SDAG-NEXT: s_waitcnt lgkmcnt(0)4527; GFX942-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4528; GFX942-SDAG-NEXT: v_mov_b32_e32 v21, s214529; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, s224530; GFX942-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4531; GFX942-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4532; GFX942-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4533; GFX942-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4534; GFX942-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4535; GFX942-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4536; GFX942-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4537; GFX942-SDAG-NEXT: s_nop 14538; GFX942-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:24539; GFX942-SDAG-NEXT: v_mov_b32_e32 v16, 04540; GFX942-SDAG-NEXT: s_nop 94541; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484542; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324543; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164544; GFX942-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4545; GFX942-SDAG-NEXT: s_endpgm4546;4547; GFX942-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4548; GFX942-GISEL: ; %bb.0: ; %bb4549; GFX942-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c4550; GFX942-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244551; GFX942-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c4552; GFX942-GISEL-NEXT: s_load_dword s26, s[4:5], 0x444553; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)4554; GFX942-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]4555; GFX942-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04556; GFX942-GISEL-NEXT: s_mov_b32 s20, s184557; GFX942-GISEL-NEXT: s_mov_b32 s21, s194558; GFX942-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]4559; GFX942-GISEL-NEXT: v_mov_b32_e32 v22, s264560; GFX942-GISEL-NEXT: s_waitcnt lgkmcnt(0)4561; GFX942-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4562; GFX942-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]4563; GFX942-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4564; GFX942-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4565; GFX942-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4566; GFX942-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4567; GFX942-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4568; GFX942-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4569; GFX942-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4570; GFX942-GISEL-NEXT: s_nop 14571; GFX942-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:24572; GFX942-GISEL-NEXT: v_mov_b32_e32 v16, 04573; GFX942-GISEL-NEXT: s_nop 94574; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4575; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164576; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324577; GFX942-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484578; GFX942-GISEL-NEXT: s_endpgm4579;4580; GFX950-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4581; GFX950-SDAG: ; %bb.0: ; %bb4582; GFX950-SDAG-NEXT: s_load_dwordx8 s[16:23], s[4:5], 0x2c4583; GFX950-SDAG-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244584; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)4585; GFX950-SDAG-NEXT: v_mov_b32_e32 v22, s164586; GFX950-SDAG-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04587; GFX950-SDAG-NEXT: v_mov_b32_e32 v23, s174588; GFX950-SDAG-NEXT: v_mov_b32_e32 v18, s184589; GFX950-SDAG-NEXT: v_mov_b32_e32 v19, s194590; GFX950-SDAG-NEXT: v_mov_b32_e32 v20, s204591; GFX950-SDAG-NEXT: s_waitcnt lgkmcnt(0)4592; GFX950-SDAG-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4593; GFX950-SDAG-NEXT: v_mov_b32_e32 v21, s214594; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, s224595; GFX950-SDAG-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4596; GFX950-SDAG-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4597; GFX950-SDAG-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4598; GFX950-SDAG-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4599; GFX950-SDAG-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4600; GFX950-SDAG-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4601; GFX950-SDAG-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4602; GFX950-SDAG-NEXT: s_nop 14603; GFX950-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 v[0:15], v[22:23], v[18:21], v16 cbsz:1 abid:24604; GFX950-SDAG-NEXT: v_mov_b32_e32 v16, 04605; GFX950-SDAG-NEXT: s_nop 104606; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484607; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324608; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164609; GFX950-SDAG-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4610; GFX950-SDAG-NEXT: s_endpgm4611;4612; GFX950-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4613; GFX950-GISEL: ; %bb.0: ; %bb4614; GFX950-GISEL-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x2c4615; GFX950-GISEL-NEXT: s_load_dwordx2 s[24:25], s[4:5], 0x244616; GFX950-GISEL-NEXT: s_load_dwordx2 s[22:23], s[4:5], 0x3c4617; GFX950-GISEL-NEXT: s_load_dword s26, s[4:5], 0x444618; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)4619; GFX950-GISEL-NEXT: v_mov_b64_e32 v[20:21], s[16:17]4620; GFX950-GISEL-NEXT: s_load_dwordx16 s[0:15], s[24:25], 0x04621; GFX950-GISEL-NEXT: s_mov_b32 s20, s184622; GFX950-GISEL-NEXT: s_mov_b32 s21, s194623; GFX950-GISEL-NEXT: v_mov_b64_e32 v[16:17], s[20:21]4624; GFX950-GISEL-NEXT: v_mov_b32_e32 v22, s264625; GFX950-GISEL-NEXT: s_waitcnt lgkmcnt(0)4626; GFX950-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4627; GFX950-GISEL-NEXT: v_mov_b64_e32 v[18:19], s[22:23]4628; GFX950-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4629; GFX950-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4630; GFX950-GISEL-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4631; GFX950-GISEL-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4632; GFX950-GISEL-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4633; GFX950-GISEL-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4634; GFX950-GISEL-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4635; GFX950-GISEL-NEXT: s_nop 14636; GFX950-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 v[0:15], v[20:21], v[16:19], v22 cbsz:1 abid:24637; GFX950-GISEL-NEXT: v_mov_b32_e32 v16, 04638; GFX950-GISEL-NEXT: s_nop 104639; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[0:3], s[24:25]4640; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[4:7], s[24:25] offset:164641; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[8:11], s[24:25] offset:324642; GFX950-GISEL-NEXT: global_store_dwordx4 v16, v[12:15], s[24:25] offset:484643; GFX950-GISEL-NEXT: s_endpgm4644; GFX942-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4645; GFX942-AGPRCD-SDAG: ; %bb.0: ; %bb4646; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244647; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4648; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04649; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4650; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s84651; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s94652; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s104653; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s114654; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s124655; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s134656; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s144657; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s154658; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s164659; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s174660; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s184661; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s194662; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s204663; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s214664; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s224665; GFX942-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s234666; GFX942-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c4667; GFX942-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4668; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s84669; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s94670; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s104671; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s114672; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s124673; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s134674; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s144675; GFX942-AGPRCD-SDAG-NEXT: s_nop 14676; GFX942-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24677; GFX942-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 04678; GFX942-AGPRCD-SDAG-NEXT: s_nop 74679; GFX942-AGPRCD-SDAG-NEXT: s_nop 14680; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484681; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324682; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164683; GFX942-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4684; GFX942-AGPRCD-SDAG-NEXT: s_endpgm4685; GFX942-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4686; GFX942-AGPRCD-GISEL: ; %bb.0: ; %bb4687; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244688; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c4689; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4690; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]4691; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04692; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4693; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s84694; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s94695; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s104696; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s114697; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s124698; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s134699; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s144700; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s154701; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s164702; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s174703; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s184704; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s194705; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s204706; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s214707; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s224708; GFX942-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s234709; GFX942-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c4710; GFX942-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x444711; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s264712; GFX942-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s274713; GFX942-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4714; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]4715; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s24716; GFX942-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]4717; GFX942-AGPRCD-GISEL-NEXT: s_nop 14718; GFX942-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24719; GFX942-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 04720; GFX942-AGPRCD-GISEL-NEXT: s_nop 74721; GFX942-AGPRCD-GISEL-NEXT: s_nop 14722; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4723; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164724; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324725; GFX942-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484726; GFX942-AGPRCD-GISEL-NEXT: s_endpgm4727; GFX950-AGPRCD-SDAG-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4728; GFX950-AGPRCD-SDAG: ; %bb.0: ; %bb4729; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244730; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4731; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04732; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4733; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a0, s84734; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a1, s94735; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a2, s104736; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a3, s114737; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a4, s124738; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a5, s134739; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a6, s144740; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a7, s154741; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a8, s164742; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a9, s174743; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a10, s184744; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a11, s194745; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a12, s204746; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a13, s214747; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a14, s224748; GFX950-AGPRCD-SDAG-NEXT: v_accvgpr_write_b32 a15, s234749; GFX950-AGPRCD-SDAG-NEXT: s_load_dwordx8 s[8:15], s[4:5], 0x2c4750; GFX950-AGPRCD-SDAG-NEXT: s_waitcnt lgkmcnt(0)4751; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v4, s84752; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v5, s94753; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, s104754; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v1, s114755; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v2, s124756; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v3, s134757; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v6, s144758; GFX950-AGPRCD-SDAG-NEXT: s_nop 14759; GFX950-AGPRCD-SDAG-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24760; GFX950-AGPRCD-SDAG-NEXT: v_mov_b32_e32 v0, 04761; GFX950-AGPRCD-SDAG-NEXT: s_nop 74762; GFX950-AGPRCD-SDAG-NEXT: s_nop 24763; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484764; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324765; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164766; GFX950-AGPRCD-SDAG-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4767; GFX950-AGPRCD-SDAG-NEXT: s_endpgm4768; GFX950-AGPRCD-GISEL-LABEL: test_smfmac_i32_32x32x32_fp8_fp8:4769; GFX950-AGPRCD-GISEL: ; %bb.0: ; %bb4770; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244771; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx4 s[24:27], s[4:5], 0x2c4772; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4773; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[4:5], s[24:25]4774; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx16 s[8:23], s[0:1], 0x04775; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4776; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a0, s84777; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a1, s94778; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a2, s104779; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a3, s114780; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a4, s124781; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a5, s134782; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a6, s144783; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a7, s154784; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a8, s164785; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a9, s174786; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a10, s184787; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a11, s194788; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a12, s204789; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a13, s214790; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a14, s224791; GFX950-AGPRCD-GISEL-NEXT: v_accvgpr_write_b32 a15, s234792; GFX950-AGPRCD-GISEL-NEXT: s_load_dwordx2 s[10:11], s[4:5], 0x3c4793; GFX950-AGPRCD-GISEL-NEXT: s_load_dword s2, s[4:5], 0x444794; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s8, s264795; GFX950-AGPRCD-GISEL-NEXT: s_mov_b32 s9, s274796; GFX950-AGPRCD-GISEL-NEXT: s_waitcnt lgkmcnt(0)4797; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[0:1], s[8:9]4798; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v6, s24799; GFX950-AGPRCD-GISEL-NEXT: v_mov_b64_e32 v[2:3], s[10:11]4800; GFX950-AGPRCD-GISEL-NEXT: s_nop 14801; GFX950-AGPRCD-GISEL-NEXT: v_smfmac_f32_32x32x32_fp8_fp8 a[0:15], v[4:5], v[0:3], v6 cbsz:1 abid:24802; GFX950-AGPRCD-GISEL-NEXT: v_mov_b32_e32 v0, 04803; GFX950-AGPRCD-GISEL-NEXT: s_nop 74804; GFX950-AGPRCD-GISEL-NEXT: s_nop 24805; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4806; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164807; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324808; GFX950-AGPRCD-GISEL-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484809; GFX950-AGPRCD-GISEL-NEXT: s_endpgm4810bb:4811 %in.1 = load <16 x float>, ptr addrspace(1) %arg4812 %mai.1 = tail call <16 x float> @llvm.amdgcn.smfmac.f32.32x32x32.fp8.fp8(<2 x i32> %a, <4 x i32> %b, <16 x float> %in.1, i32 %idx, i32 1, i32 2)4813 store <16 x float> %mai.1, ptr addrspace(1) %arg4814 ret void4815}4816 4817attributes #0 = { "amdgpu-flat-work-group-size"="1,256" }4818;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4819; GFX942: {{.*}}4820; GFX942-VGPRCD: {{.*}}4821; GFX942-VGPRCD-GISEL: {{.*}}4822; GFX942-VGPRCD-SDAG: {{.*}}4823; GFX950: {{.*}}4824; GFX950-VGPRCD: {{.*}}4825; GFX950-VGPRCD-GISEL: {{.*}}4826; GFX950-VGPRCD-SDAG: {{.*}}4827