6128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -verify-machineinstrs -mtriple=amdgcn -mcpu=gfx908 < %s | FileCheck -enable-var-scope --check-prefixes=GCN,NOLIT-SRCC,GFX908,GFX908_A %s3; RUN: llc -verify-machineinstrs -mtriple=amdgcn -mcpu=gfx908 -mattr=-mfma-inline-literal-bug < %s | FileCheck -enable-var-scope --check-prefixes=GCN,LIT-SRCC,GFX908,GFX908_A %s4; RUN: llc -verify-machineinstrs -mtriple=amdgcn -mcpu=gfx90a < %s | FileCheck -enable-var-scope --check-prefixes=GCN,GFX90A,GFX908_A,GFX90A_42 %s5; RUN: llc -verify-machineinstrs -mtriple=amdgcn -mcpu=gfx942 < %s | FileCheck -enable-var-scope --check-prefixes=GCN,GFX942,GFX90A_42 %s6; RUN: llc -verify-machineinstrs -mtriple=amdgcn -mcpu=gfx942 -amdgpu-mfma-vgpr-form < %s | FileCheck -enable-var-scope --check-prefix=GFX942-VGPR %s7 8declare <32 x float> @llvm.amdgcn.mfma.f32.32x32x1f32(float, float, <32 x float>, i32, i32, i32)9declare <16 x float> @llvm.amdgcn.mfma.f32.16x16x1f32(float, float, <16 x float>, i32, i32, i32)10declare <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float, float, <4 x float>, i32, i32, i32)11declare <16 x float> @llvm.amdgcn.mfma.f32.32x32x2f32(float, float, <16 x float>, i32, i32, i32)12declare <4 x float> @llvm.amdgcn.mfma.f32.16x16x4f32(float, float, <4 x float>, i32, i32, i32)13declare <32 x float> @llvm.amdgcn.mfma.f32.32x32x4f16(<4 x half>, <4 x half>, <32 x float>, i32, i32, i32)14declare <16 x float> @llvm.amdgcn.mfma.f32.16x16x4f16(<4 x half>, <4 x half>, <16 x float>, i32, i32, i32)15declare <4 x float> @llvm.amdgcn.mfma.f32.4x4x4f16(<4 x half>, <4 x half>, <4 x float>, i32, i32, i32)16declare <16 x float> @llvm.amdgcn.mfma.f32.32x32x8f16(<4 x half>, <4 x half>, <16 x float>, i32, i32, i32)17declare <4 x float> @llvm.amdgcn.mfma.f32.16x16x16f16(<4 x half>, <4 x half>, <4 x float>, i32, i32, i32)18declare <32 x i32> @llvm.amdgcn.mfma.i32.32x32x4i8(i32, i32, <32 x i32>, i32, i32, i32)19declare <16 x i32> @llvm.amdgcn.mfma.i32.16x16x4i8(i32, i32, <16 x i32>, i32, i32, i32)20declare <4 x i32> @llvm.amdgcn.mfma.i32.4x4x4i8(i32, i32, <4 x i32>, i32, i32, i32)21declare i32 @llvm.amdgcn.workitem.id.x()22 23define amdgpu_kernel void @test_mfma_f32_32x32x1f32(ptr addrspace(1) %arg) #0 {24; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x1f32:25; NOLIT-SRCC: ; %bb.0: ; %bb26; NOLIT-SRCC-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x2427; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 028; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)29; NOLIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x030; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x4031; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)32; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s1633; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s1734; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s1835; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v036; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v137; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v238; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s2139; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s2240; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s2341; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v042; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v143; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v244; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s2445; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s2546; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s2647; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v048; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v149; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v250; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s2751; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s2852; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s2953; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v054; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v155; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v256; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s3057; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s3158; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s059; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v060; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v161; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v262; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s163; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s264; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s365; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v066; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v167; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v268; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s469; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s570; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s671; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v072; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v173; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v274; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s775; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s876; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s977; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s1978; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v079; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v180; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v281; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s1082; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s1183; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s1284; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s2085; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v386; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v087; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v188; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v289; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s1390; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s1491; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s1592; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, 1.093; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v594; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v095; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v196; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v297; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 2.098; NOLIT-SRCC-NEXT: s_nop 199; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v3, v0, a[0:31] cbsz:1 abid:2 blgp:3100; NOLIT-SRCC-NEXT: s_nop 15101; NOLIT-SRCC-NEXT: s_nop 1102; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a27103; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a26104; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a25105; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a24106; NOLIT-SRCC-NEXT: s_nop 1107; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:96108; NOLIT-SRCC-NEXT: s_nop 0109; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31110; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a30111; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a29112; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a28113; NOLIT-SRCC-NEXT: s_nop 1114; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:112115; NOLIT-SRCC-NEXT: s_nop 0116; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a19117; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a18118; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a17119; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a16120; NOLIT-SRCC-NEXT: s_nop 1121; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:64122; NOLIT-SRCC-NEXT: s_nop 0123; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a23124; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a22125; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a21126; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a20127; NOLIT-SRCC-NEXT: s_nop 1128; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:80129; NOLIT-SRCC-NEXT: s_nop 0130; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a11131; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a10132; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a9133; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a8134; NOLIT-SRCC-NEXT: s_nop 1135; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:32136; NOLIT-SRCC-NEXT: s_nop 0137; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a15138; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a14139; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13140; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a12141; NOLIT-SRCC-NEXT: s_nop 1142; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:48143; NOLIT-SRCC-NEXT: s_nop 0144; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a3145; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a2146; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a1147; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a0148; NOLIT-SRCC-NEXT: s_nop 1149; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35]150; NOLIT-SRCC-NEXT: s_nop 0151; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a7152; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a6153; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a5154; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a4155; NOLIT-SRCC-NEXT: s_nop 1156; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:16157; NOLIT-SRCC-NEXT: s_endpgm158;159; LIT-SRCC-LABEL: test_mfma_f32_32x32x1f32:160; LIT-SRCC: ; %bb.0: ; %bb161; LIT-SRCC-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x24162; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 0163; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)164; LIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x0165; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x40166; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)167; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s16168; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s17169; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s18170; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v0171; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v1172; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v2173; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s21174; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s22175; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s23176; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v0177; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v1178; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v2179; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s24180; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s25181; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s26182; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v0183; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v1184; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v2185; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s27186; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s28187; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s29188; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v0189; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v1190; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v2191; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s30192; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s31193; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s0194; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v0195; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v1196; LIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v2197; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s1198; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s2199; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s3200; LIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v0201; LIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v1202; LIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v2203; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s4204; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s5205; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s6206; LIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v0207; LIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v1208; LIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v2209; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s7210; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s8211; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s9212; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s19213; LIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v0214; LIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v1215; LIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v2216; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s10217; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s11218; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s12219; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s20220; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v3221; LIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v0222; LIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v1223; LIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v2224; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s13225; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s14226; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s15227; LIT-SRCC-NEXT: v_mov_b32_e32 v3, 1.0228; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v5229; LIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v0230; LIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v1231; LIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v2232; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 2.0233; LIT-SRCC-NEXT: s_nop 1234; LIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v3, v0, a[0:31] cbsz:1 abid:2 blgp:3235; LIT-SRCC-NEXT: s_nop 15236; LIT-SRCC-NEXT: s_nop 1237; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a27238; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a26239; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a25240; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a24241; LIT-SRCC-NEXT: s_nop 1242; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:96243; LIT-SRCC-NEXT: s_nop 0244; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31245; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a30246; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a29247; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a28248; LIT-SRCC-NEXT: s_nop 1249; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:112250; LIT-SRCC-NEXT: s_nop 0251; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a19252; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a18253; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a17254; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a16255; LIT-SRCC-NEXT: s_nop 1256; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:64257; LIT-SRCC-NEXT: s_nop 0258; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a23259; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a22260; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a21261; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a20262; LIT-SRCC-NEXT: s_nop 1263; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:80264; LIT-SRCC-NEXT: s_nop 0265; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a11266; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a10267; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a9268; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a8269; LIT-SRCC-NEXT: s_nop 1270; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:32271; LIT-SRCC-NEXT: s_nop 0272; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a15273; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a14274; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13275; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a12276; LIT-SRCC-NEXT: s_nop 1277; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:48278; LIT-SRCC-NEXT: s_nop 0279; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a3280; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a2281; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a1282; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a0283; LIT-SRCC-NEXT: s_nop 1284; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35]285; LIT-SRCC-NEXT: s_nop 0286; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a7287; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a6288; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a5289; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a4290; LIT-SRCC-NEXT: s_nop 1291; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:16292; LIT-SRCC-NEXT: s_endpgm293;294; GFX90A-LABEL: test_mfma_f32_32x32x1f32:295; GFX90A: ; %bb.0: ; %bb296; GFX90A-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x24297; GFX90A-NEXT: v_mov_b32_e32 v1, 1.0298; GFX90A-NEXT: v_mov_b32_e32 v2, 2.0299; GFX90A-NEXT: v_mov_b32_e32 v0, 0300; GFX90A-NEXT: s_waitcnt lgkmcnt(0)301; GFX90A-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x0302; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x40303; GFX90A-NEXT: s_waitcnt lgkmcnt(0)304; GFX90A-NEXT: v_accvgpr_write_b32 a0, s16305; GFX90A-NEXT: v_accvgpr_write_b32 a1, s17306; GFX90A-NEXT: v_accvgpr_write_b32 a2, s18307; GFX90A-NEXT: v_accvgpr_write_b32 a3, s19308; GFX90A-NEXT: v_accvgpr_write_b32 a4, s20309; GFX90A-NEXT: v_accvgpr_write_b32 a5, s21310; GFX90A-NEXT: v_accvgpr_write_b32 a6, s22311; GFX90A-NEXT: v_accvgpr_write_b32 a7, s23312; GFX90A-NEXT: v_accvgpr_write_b32 a8, s24313; GFX90A-NEXT: v_accvgpr_write_b32 a9, s25314; GFX90A-NEXT: v_accvgpr_write_b32 a10, s26315; GFX90A-NEXT: v_accvgpr_write_b32 a11, s27316; GFX90A-NEXT: v_accvgpr_write_b32 a12, s28317; GFX90A-NEXT: v_accvgpr_write_b32 a13, s29318; GFX90A-NEXT: v_accvgpr_write_b32 a14, s30319; GFX90A-NEXT: v_accvgpr_write_b32 a15, s31320; GFX90A-NEXT: v_accvgpr_write_b32 a16, s0321; GFX90A-NEXT: v_accvgpr_write_b32 a17, s1322; GFX90A-NEXT: v_accvgpr_write_b32 a18, s2323; GFX90A-NEXT: v_accvgpr_write_b32 a19, s3324; GFX90A-NEXT: v_accvgpr_write_b32 a20, s4325; GFX90A-NEXT: v_accvgpr_write_b32 a21, s5326; GFX90A-NEXT: v_accvgpr_write_b32 a22, s6327; GFX90A-NEXT: v_accvgpr_write_b32 a23, s7328; GFX90A-NEXT: v_accvgpr_write_b32 a24, s8329; GFX90A-NEXT: v_accvgpr_write_b32 a25, s9330; GFX90A-NEXT: v_accvgpr_write_b32 a26, s10331; GFX90A-NEXT: v_accvgpr_write_b32 a27, s11332; GFX90A-NEXT: v_accvgpr_write_b32 a28, s12333; GFX90A-NEXT: v_accvgpr_write_b32 a29, s13334; GFX90A-NEXT: v_accvgpr_write_b32 a30, s14335; GFX90A-NEXT: v_accvgpr_write_b32 a31, s15336; GFX90A-NEXT: s_nop 1337; GFX90A-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v1, v2, a[0:31] cbsz:1 abid:2 blgp:3338; GFX90A-NEXT: s_nop 15339; GFX90A-NEXT: s_nop 2340; GFX90A-NEXT: global_store_dwordx4 v0, a[24:27], s[34:35] offset:96341; GFX90A-NEXT: global_store_dwordx4 v0, a[28:31], s[34:35] offset:112342; GFX90A-NEXT: global_store_dwordx4 v0, a[16:19], s[34:35] offset:64343; GFX90A-NEXT: global_store_dwordx4 v0, a[20:23], s[34:35] offset:80344; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[34:35] offset:32345; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[34:35] offset:48346; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[34:35]347; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[34:35] offset:16348; GFX90A-NEXT: s_endpgm349;350; GFX942-LABEL: test_mfma_f32_32x32x1f32:351; GFX942: ; %bb.0: ; %bb352; GFX942-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x24353; GFX942-NEXT: v_mov_b32_e32 v1, 1.0354; GFX942-NEXT: v_mov_b32_e32 v2, 2.0355; GFX942-NEXT: v_mov_b32_e32 v0, 0356; GFX942-NEXT: s_waitcnt lgkmcnt(0)357; GFX942-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x0358; GFX942-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x40359; GFX942-NEXT: s_waitcnt lgkmcnt(0)360; GFX942-NEXT: v_accvgpr_write_b32 a0, s16361; GFX942-NEXT: v_accvgpr_write_b32 a1, s17362; GFX942-NEXT: v_accvgpr_write_b32 a2, s18363; GFX942-NEXT: v_accvgpr_write_b32 a3, s19364; GFX942-NEXT: v_accvgpr_write_b32 a4, s20365; GFX942-NEXT: v_accvgpr_write_b32 a5, s21366; GFX942-NEXT: v_accvgpr_write_b32 a6, s22367; GFX942-NEXT: v_accvgpr_write_b32 a7, s23368; GFX942-NEXT: v_accvgpr_write_b32 a8, s24369; GFX942-NEXT: v_accvgpr_write_b32 a9, s25370; GFX942-NEXT: v_accvgpr_write_b32 a10, s26371; GFX942-NEXT: v_accvgpr_write_b32 a11, s27372; GFX942-NEXT: v_accvgpr_write_b32 a12, s28373; GFX942-NEXT: v_accvgpr_write_b32 a13, s29374; GFX942-NEXT: v_accvgpr_write_b32 a14, s30375; GFX942-NEXT: v_accvgpr_write_b32 a15, s31376; GFX942-NEXT: v_accvgpr_write_b32 a16, s0377; GFX942-NEXT: v_accvgpr_write_b32 a17, s1378; GFX942-NEXT: v_accvgpr_write_b32 a18, s2379; GFX942-NEXT: v_accvgpr_write_b32 a19, s3380; GFX942-NEXT: v_accvgpr_write_b32 a20, s4381; GFX942-NEXT: v_accvgpr_write_b32 a21, s5382; GFX942-NEXT: v_accvgpr_write_b32 a22, s6383; GFX942-NEXT: v_accvgpr_write_b32 a23, s7384; GFX942-NEXT: v_accvgpr_write_b32 a24, s8385; GFX942-NEXT: v_accvgpr_write_b32 a25, s9386; GFX942-NEXT: v_accvgpr_write_b32 a26, s10387; GFX942-NEXT: v_accvgpr_write_b32 a27, s11388; GFX942-NEXT: v_accvgpr_write_b32 a28, s12389; GFX942-NEXT: v_accvgpr_write_b32 a29, s13390; GFX942-NEXT: v_accvgpr_write_b32 a30, s14391; GFX942-NEXT: v_accvgpr_write_b32 a31, s15392; GFX942-NEXT: s_nop 1393; GFX942-NEXT: v_mfma_f32_32x32x1_2b_f32 a[0:31], v1, v2, a[0:31] cbsz:1 abid:2 blgp:3394; GFX942-NEXT: s_nop 15395; GFX942-NEXT: s_nop 1396; GFX942-NEXT: global_store_dwordx4 v0, a[24:27], s[34:35] offset:96397; GFX942-NEXT: global_store_dwordx4 v0, a[28:31], s[34:35] offset:112398; GFX942-NEXT: global_store_dwordx4 v0, a[16:19], s[34:35] offset:64399; GFX942-NEXT: global_store_dwordx4 v0, a[20:23], s[34:35] offset:80400; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[34:35] offset:32401; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[34:35] offset:48402; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[34:35]403; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[34:35] offset:16404; GFX942-NEXT: s_endpgm405;406; GFX942-VGPR-LABEL: test_mfma_f32_32x32x1f32:407; GFX942-VGPR: ; %bb.0: ; %bb408; GFX942-VGPR-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x24409; GFX942-VGPR-NEXT: v_mov_b32_e32 v33, 1.0410; GFX942-VGPR-NEXT: v_mov_b32_e32 v34, 2.0411; GFX942-VGPR-NEXT: v_mov_b32_e32 v32, 0412; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)413; GFX942-VGPR-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x0414; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x40415; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)416; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, s16417; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, s17418; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, s18419; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, s19420; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, s20421; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, s21422; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, s22423; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, s23424; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, s24425; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, s25426; GFX942-VGPR-NEXT: v_mov_b32_e32 v10, s26427; GFX942-VGPR-NEXT: v_mov_b32_e32 v11, s27428; GFX942-VGPR-NEXT: v_mov_b32_e32 v12, s28429; GFX942-VGPR-NEXT: v_mov_b32_e32 v13, s29430; GFX942-VGPR-NEXT: v_mov_b32_e32 v14, s30431; GFX942-VGPR-NEXT: v_mov_b32_e32 v15, s31432; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, s0433; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, s1434; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, s2435; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, s3436; GFX942-VGPR-NEXT: v_mov_b32_e32 v20, s4437; GFX942-VGPR-NEXT: v_mov_b32_e32 v21, s5438; GFX942-VGPR-NEXT: v_mov_b32_e32 v22, s6439; GFX942-VGPR-NEXT: v_mov_b32_e32 v23, s7440; GFX942-VGPR-NEXT: v_mov_b32_e32 v24, s8441; GFX942-VGPR-NEXT: v_mov_b32_e32 v25, s9442; GFX942-VGPR-NEXT: v_mov_b32_e32 v26, s10443; GFX942-VGPR-NEXT: v_mov_b32_e32 v27, s11444; GFX942-VGPR-NEXT: v_mov_b32_e32 v28, s12445; GFX942-VGPR-NEXT: v_mov_b32_e32 v29, s13446; GFX942-VGPR-NEXT: v_mov_b32_e32 v30, s14447; GFX942-VGPR-NEXT: v_mov_b32_e32 v31, s15448; GFX942-VGPR-NEXT: s_nop 1449; GFX942-VGPR-NEXT: v_mfma_f32_32x32x1_2b_f32 v[0:31], v33, v34, v[0:31] cbsz:1 abid:2 blgp:3450; GFX942-VGPR-NEXT: s_nop 15451; GFX942-VGPR-NEXT: s_nop 1452; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[24:27], s[34:35] offset:96453; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[28:31], s[34:35] offset:112454; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[16:19], s[34:35] offset:64455; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[20:23], s[34:35] offset:80456; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[8:11], s[34:35] offset:32457; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[12:15], s[34:35] offset:48458; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[0:3], s[34:35]459; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[4:7], s[34:35] offset:16460; GFX942-VGPR-NEXT: s_endpgm461bb:462 %in.1 = load <32 x float>, ptr addrspace(1) %arg463 %mai.1 = tail call <32 x float> @llvm.amdgcn.mfma.f32.32x32x1f32(float 1.0, float 2.0, <32 x float> %in.1, i32 1, i32 2, i32 3)464 store <32 x float> %mai.1, ptr addrspace(1) %arg465 ret void466}467 468define amdgpu_kernel void @test_mfma_f32_16x16x1f32(ptr addrspace(1) %arg) #0 {469; NOLIT-SRCC-LABEL: test_mfma_f32_16x16x1f32:470; NOLIT-SRCC: ; %bb.0: ; %bb471; NOLIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24472; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.0473; NOLIT-SRCC-NEXT: v_mov_b32_e32 v12, 0474; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)475; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0476; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)477; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s0478; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s1479; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s2480; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v13481; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s3482; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v1483; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v2484; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v13485; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s4486; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s5487; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s6488; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v1489; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v2490; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v13491; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s7492; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s8493; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s9494; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v1495; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v2496; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v13497; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s10498; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s11499; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s12500; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v1501; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v2502; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v13503; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s13504; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s14505; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s15506; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v1507; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v2508; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v13509; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.0510; NOLIT-SRCC-NEXT: s_nop 1511; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:3512; NOLIT-SRCC-NEXT: s_nop 9513; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a15514; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a14515; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13516; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a12517; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a11518; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a10519; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a9520; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a8521; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a7522; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a6523; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a5524; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a4525; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:48526; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:32527; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:16528; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a3529; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a2530; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a1531; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a0532; NOLIT-SRCC-NEXT: s_nop 1533; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17]534; NOLIT-SRCC-NEXT: s_endpgm535;536; LIT-SRCC-LABEL: test_mfma_f32_16x16x1f32:537; LIT-SRCC: ; %bb.0: ; %bb538; LIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24539; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.0540; LIT-SRCC-NEXT: v_mov_b32_e32 v12, 0541; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)542; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0543; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)544; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s0545; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s1546; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s2547; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v13548; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s3549; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v1550; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v2551; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v13552; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s4553; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s5554; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s6555; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v1556; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v2557; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v13558; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s7559; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s8560; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s9561; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v1562; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v2563; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v13564; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s10565; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s11566; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s12567; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v1568; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v2569; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v13570; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s13571; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s14572; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s15573; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v1574; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v2575; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v13576; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.0577; LIT-SRCC-NEXT: s_nop 1578; LIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:3579; LIT-SRCC-NEXT: s_nop 9580; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a15581; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a14582; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13583; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a12584; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a11585; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a10586; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a9587; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a8588; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a7589; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a6590; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a5591; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a4592; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:48593; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:32594; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:16595; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a3596; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a2597; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a1598; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a0599; LIT-SRCC-NEXT: s_nop 1600; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17]601; LIT-SRCC-NEXT: s_endpgm602;603; GFX90A-LABEL: test_mfma_f32_16x16x1f32:604; GFX90A: ; %bb.0: ; %bb605; GFX90A-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24606; GFX90A-NEXT: v_mov_b32_e32 v0, 1.0607; GFX90A-NEXT: v_mov_b32_e32 v1, 2.0608; GFX90A-NEXT: s_waitcnt lgkmcnt(0)609; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0610; GFX90A-NEXT: s_waitcnt lgkmcnt(0)611; GFX90A-NEXT: v_accvgpr_write_b32 a0, s0612; GFX90A-NEXT: v_accvgpr_write_b32 a1, s1613; GFX90A-NEXT: v_accvgpr_write_b32 a2, s2614; GFX90A-NEXT: v_accvgpr_write_b32 a3, s3615; GFX90A-NEXT: v_accvgpr_write_b32 a4, s4616; GFX90A-NEXT: v_accvgpr_write_b32 a5, s5617; GFX90A-NEXT: v_accvgpr_write_b32 a6, s6618; GFX90A-NEXT: v_accvgpr_write_b32 a7, s7619; GFX90A-NEXT: v_accvgpr_write_b32 a8, s8620; GFX90A-NEXT: v_accvgpr_write_b32 a9, s9621; GFX90A-NEXT: v_accvgpr_write_b32 a10, s10622; GFX90A-NEXT: v_accvgpr_write_b32 a11, s11623; GFX90A-NEXT: v_accvgpr_write_b32 a12, s12624; GFX90A-NEXT: v_accvgpr_write_b32 a13, s13625; GFX90A-NEXT: v_accvgpr_write_b32 a14, s14626; GFX90A-NEXT: v_accvgpr_write_b32 a15, s15627; GFX90A-NEXT: s_nop 1628; GFX90A-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:3629; GFX90A-NEXT: v_mov_b32_e32 v0, 0630; GFX90A-NEXT: s_nop 9631; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48632; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32633; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16634; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]635; GFX90A-NEXT: s_endpgm636;637; GFX942-LABEL: test_mfma_f32_16x16x1f32:638; GFX942: ; %bb.0: ; %bb639; GFX942-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24640; GFX942-NEXT: v_mov_b32_e32 v0, 1.0641; GFX942-NEXT: v_mov_b32_e32 v1, 2.0642; GFX942-NEXT: s_waitcnt lgkmcnt(0)643; GFX942-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0644; GFX942-NEXT: s_waitcnt lgkmcnt(0)645; GFX942-NEXT: v_accvgpr_write_b32 a0, s0646; GFX942-NEXT: v_accvgpr_write_b32 a1, s1647; GFX942-NEXT: v_accvgpr_write_b32 a2, s2648; GFX942-NEXT: v_accvgpr_write_b32 a3, s3649; GFX942-NEXT: v_accvgpr_write_b32 a4, s4650; GFX942-NEXT: v_accvgpr_write_b32 a5, s5651; GFX942-NEXT: v_accvgpr_write_b32 a6, s6652; GFX942-NEXT: v_accvgpr_write_b32 a7, s7653; GFX942-NEXT: v_accvgpr_write_b32 a8, s8654; GFX942-NEXT: v_accvgpr_write_b32 a9, s9655; GFX942-NEXT: v_accvgpr_write_b32 a10, s10656; GFX942-NEXT: v_accvgpr_write_b32 a11, s11657; GFX942-NEXT: v_accvgpr_write_b32 a12, s12658; GFX942-NEXT: v_accvgpr_write_b32 a13, s13659; GFX942-NEXT: v_accvgpr_write_b32 a14, s14660; GFX942-NEXT: v_accvgpr_write_b32 a15, s15661; GFX942-NEXT: s_nop 1662; GFX942-NEXT: v_mfma_f32_16x16x1_4b_f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:3663; GFX942-NEXT: v_mov_b32_e32 v0, 0664; GFX942-NEXT: s_nop 8665; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48666; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32667; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16668; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]669; GFX942-NEXT: s_endpgm670;671; GFX942-VGPR-LABEL: test_mfma_f32_16x16x1f32:672; GFX942-VGPR: ; %bb.0: ; %bb673; GFX942-VGPR-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24674; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 1.0675; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, 2.0676; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)677; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0678; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)679; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]680; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]681; GFX942-VGPR-NEXT: v_mov_b64_e32 v[4:5], s[4:5]682; GFX942-VGPR-NEXT: v_mov_b64_e32 v[6:7], s[6:7]683; GFX942-VGPR-NEXT: v_mov_b64_e32 v[8:9], s[8:9]684; GFX942-VGPR-NEXT: v_mov_b64_e32 v[10:11], s[10:11]685; GFX942-VGPR-NEXT: v_mov_b64_e32 v[12:13], s[12:13]686; GFX942-VGPR-NEXT: v_mov_b64_e32 v[14:15], s[14:15]687; GFX942-VGPR-NEXT: s_nop 1688; GFX942-VGPR-NEXT: v_mfma_f32_16x16x1_4b_f32 v[0:15], v16, v17, v[0:15] cbsz:1 abid:2 blgp:3689; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 0690; GFX942-VGPR-NEXT: s_nop 8691; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:48692; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:32693; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:16694; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]695; GFX942-VGPR-NEXT: s_endpgm696bb:697 %in.1 = load <16 x float>, ptr addrspace(1) %arg698 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.16x16x1f32(float 1.0, float 2.0, <16 x float> %in.1, i32 1, i32 2, i32 3)699 store <16 x float> %mai.1, ptr addrspace(1) %arg700 ret void701}702 703define amdgpu_kernel void @test_mfma_f32_4x4x1f32(ptr addrspace(1) %arg) #0 {704; NOLIT-SRCC-LABEL: test_mfma_f32_4x4x1f32:705; NOLIT-SRCC: ; %bb.0: ; %bb706; NOLIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24707; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.0708; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.0709; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 0710; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)711; NOLIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0712; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)713; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s0714; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s1715; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s2716; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v5717; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s3718; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v2719; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v3720; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v5721; NOLIT-SRCC-NEXT: s_nop 0722; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3] cbsz:1 abid:2 blgp:3723; NOLIT-SRCC-NEXT: s_nop 3724; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a0725; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a1726; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a2727; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a3728; NOLIT-SRCC-NEXT: s_nop 1729; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]730; NOLIT-SRCC-NEXT: s_endpgm731;732; LIT-SRCC-LABEL: test_mfma_f32_4x4x1f32:733; LIT-SRCC: ; %bb.0: ; %bb734; LIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24735; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.0736; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.0737; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 0738; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)739; LIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0740; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)741; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s0742; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s1743; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s2744; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v5745; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s3746; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v2747; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v3748; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v5749; LIT-SRCC-NEXT: s_nop 0750; LIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3] cbsz:1 abid:2 blgp:3751; LIT-SRCC-NEXT: s_nop 3752; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a0753; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a1754; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a2755; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a3756; LIT-SRCC-NEXT: s_nop 1757; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]758; LIT-SRCC-NEXT: s_endpgm759;760; GFX90A-LABEL: test_mfma_f32_4x4x1f32:761; GFX90A: ; %bb.0: ; %bb762; GFX90A-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24763; GFX90A-NEXT: v_mov_b32_e32 v0, 1.0764; GFX90A-NEXT: v_mov_b32_e32 v2, 2.0765; GFX90A-NEXT: v_mov_b32_e32 v1, 0766; GFX90A-NEXT: s_waitcnt lgkmcnt(0)767; GFX90A-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0768; GFX90A-NEXT: s_waitcnt lgkmcnt(0)769; GFX90A-NEXT: v_accvgpr_write_b32 a0, s0770; GFX90A-NEXT: v_accvgpr_write_b32 a1, s1771; GFX90A-NEXT: v_accvgpr_write_b32 a2, s2772; GFX90A-NEXT: v_accvgpr_write_b32 a3, s3773; GFX90A-NEXT: s_nop 1774; GFX90A-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v2, a[0:3] cbsz:1 abid:2 blgp:3775; GFX90A-NEXT: s_nop 4776; GFX90A-NEXT: global_store_dwordx4 v1, a[0:3], s[6:7]777; GFX90A-NEXT: s_endpgm778;779; GFX942-LABEL: test_mfma_f32_4x4x1f32:780; GFX942: ; %bb.0: ; %bb781; GFX942-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24782; GFX942-NEXT: v_mov_b32_e32 v0, 1.0783; GFX942-NEXT: v_mov_b32_e32 v2, 2.0784; GFX942-NEXT: v_mov_b32_e32 v1, 0785; GFX942-NEXT: s_waitcnt lgkmcnt(0)786; GFX942-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0787; GFX942-NEXT: s_waitcnt lgkmcnt(0)788; GFX942-NEXT: v_accvgpr_write_b32 a0, s0789; GFX942-NEXT: v_accvgpr_write_b32 a1, s1790; GFX942-NEXT: v_accvgpr_write_b32 a2, s2791; GFX942-NEXT: v_accvgpr_write_b32 a3, s3792; GFX942-NEXT: s_nop 1793; GFX942-NEXT: v_mfma_f32_4x4x1_16b_f32 a[0:3], v0, v2, a[0:3] cbsz:1 abid:2 blgp:3794; GFX942-NEXT: s_nop 3795; GFX942-NEXT: global_store_dwordx4 v1, a[0:3], s[6:7]796; GFX942-NEXT: s_endpgm797;798; GFX942-VGPR-LABEL: test_mfma_f32_4x4x1f32:799; GFX942-VGPR: ; %bb.0: ; %bb800; GFX942-VGPR-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x24801; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 1.0802; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, 2.0803; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, 0804; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)805; GFX942-VGPR-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x0806; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)807; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]808; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]809; GFX942-VGPR-NEXT: s_nop 1810; GFX942-VGPR-NEXT: v_mfma_f32_4x4x1_16b_f32 v[0:3], v4, v6, v[0:3] cbsz:1 abid:2 blgp:3811; GFX942-VGPR-NEXT: s_nop 3812; GFX942-VGPR-NEXT: global_store_dwordx4 v5, v[0:3], s[6:7]813; GFX942-VGPR-NEXT: s_endpgm814bb:815 %in.1 = load <4 x float>, ptr addrspace(1) %arg816 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float 1.0, float 2.0, <4 x float> %in.1, i32 1, i32 2, i32 3)817 store <4 x float> %mai.1, ptr addrspace(1) %arg818 ret void819}820 821define amdgpu_kernel void @test_mfma_f32_32x32x2f32(ptr addrspace(1) %arg) #0 {822; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x2f32:823; NOLIT-SRCC: ; %bb.0: ; %bb824; NOLIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24825; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.0826; NOLIT-SRCC-NEXT: v_mov_b32_e32 v16, 0827; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)828; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0829; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)830; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s0831; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s1832; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s2833; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v17834; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s3835; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v1836; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v2837; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v17838; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s4839; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s5840; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s6841; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v1842; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v2843; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v17844; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s7845; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s8846; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s9847; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v1848; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v2849; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v17850; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s10851; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s11852; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s12853; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v1854; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v2855; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v17856; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s13857; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s14858; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s15859; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v1860; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v2861; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v17862; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.0863; NOLIT-SRCC-NEXT: s_nop 1864; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x2f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:3865; NOLIT-SRCC-NEXT: s_nop 15866; NOLIT-SRCC-NEXT: s_nop 1867; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a15868; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a14869; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13870; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a12871; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a11872; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a10873; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a9874; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a8875; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a7876; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a6877; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a5878; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a4879; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a3880; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a2881; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a1882; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a0883; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17] offset:48884; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:32885; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:16886; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]887; NOLIT-SRCC-NEXT: s_endpgm888;889; LIT-SRCC-LABEL: test_mfma_f32_32x32x2f32:890; LIT-SRCC: ; %bb.0: ; %bb891; LIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24892; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.0893; LIT-SRCC-NEXT: v_mov_b32_e32 v16, 0894; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)895; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0896; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)897; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s0898; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s1899; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s2900; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v17901; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s3902; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v1903; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v2904; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v17905; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s4906; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s5907; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s6908; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v1909; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v2910; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v17911; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s7912; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s8913; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s9914; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v1915; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v2916; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v17917; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s10918; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s11919; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s12920; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v1921; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v2922; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v17923; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s13924; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s14925; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s15926; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v1927; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v2928; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v17929; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.0930; LIT-SRCC-NEXT: s_nop 1931; LIT-SRCC-NEXT: v_mfma_f32_32x32x2f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:3932; LIT-SRCC-NEXT: s_nop 15933; LIT-SRCC-NEXT: s_nop 1934; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a15935; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a14936; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13937; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a12938; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a11939; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a10940; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a9941; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a8942; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a7943; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a6944; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a5945; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a4946; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a3947; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a2948; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a1949; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a0950; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17] offset:48951; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:32952; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:16953; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]954; LIT-SRCC-NEXT: s_endpgm955;956; GFX90A-LABEL: test_mfma_f32_32x32x2f32:957; GFX90A: ; %bb.0: ; %bb958; GFX90A-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24959; GFX90A-NEXT: v_mov_b32_e32 v0, 1.0960; GFX90A-NEXT: v_mov_b32_e32 v1, 2.0961; GFX90A-NEXT: s_waitcnt lgkmcnt(0)962; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0963; GFX90A-NEXT: s_waitcnt lgkmcnt(0)964; GFX90A-NEXT: v_accvgpr_write_b32 a0, s0965; GFX90A-NEXT: v_accvgpr_write_b32 a1, s1966; GFX90A-NEXT: v_accvgpr_write_b32 a2, s2967; GFX90A-NEXT: v_accvgpr_write_b32 a3, s3968; GFX90A-NEXT: v_accvgpr_write_b32 a4, s4969; GFX90A-NEXT: v_accvgpr_write_b32 a5, s5970; GFX90A-NEXT: v_accvgpr_write_b32 a6, s6971; GFX90A-NEXT: v_accvgpr_write_b32 a7, s7972; GFX90A-NEXT: v_accvgpr_write_b32 a8, s8973; GFX90A-NEXT: v_accvgpr_write_b32 a9, s9974; GFX90A-NEXT: v_accvgpr_write_b32 a10, s10975; GFX90A-NEXT: v_accvgpr_write_b32 a11, s11976; GFX90A-NEXT: v_accvgpr_write_b32 a12, s12977; GFX90A-NEXT: v_accvgpr_write_b32 a13, s13978; GFX90A-NEXT: v_accvgpr_write_b32 a14, s14979; GFX90A-NEXT: v_accvgpr_write_b32 a15, s15980; GFX90A-NEXT: s_nop 1981; GFX90A-NEXT: v_mfma_f32_32x32x2f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:3982; GFX90A-NEXT: v_mov_b32_e32 v0, 0983; GFX90A-NEXT: s_nop 15984; GFX90A-NEXT: s_nop 1985; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:48986; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:32987; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:16988; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]989; GFX90A-NEXT: s_endpgm990;991; GFX942-LABEL: test_mfma_f32_32x32x2f32:992; GFX942: ; %bb.0: ; %bb993; GFX942-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x24994; GFX942-NEXT: v_mov_b32_e32 v0, 1.0995; GFX942-NEXT: v_mov_b32_e32 v1, 2.0996; GFX942-NEXT: s_waitcnt lgkmcnt(0)997; GFX942-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x0998; GFX942-NEXT: s_waitcnt lgkmcnt(0)999; GFX942-NEXT: v_accvgpr_write_b32 a0, s01000; GFX942-NEXT: v_accvgpr_write_b32 a1, s11001; GFX942-NEXT: v_accvgpr_write_b32 a2, s21002; GFX942-NEXT: v_accvgpr_write_b32 a3, s31003; GFX942-NEXT: v_accvgpr_write_b32 a4, s41004; GFX942-NEXT: v_accvgpr_write_b32 a5, s51005; GFX942-NEXT: v_accvgpr_write_b32 a6, s61006; GFX942-NEXT: v_accvgpr_write_b32 a7, s71007; GFX942-NEXT: v_accvgpr_write_b32 a8, s81008; GFX942-NEXT: v_accvgpr_write_b32 a9, s91009; GFX942-NEXT: v_accvgpr_write_b32 a10, s101010; GFX942-NEXT: v_accvgpr_write_b32 a11, s111011; GFX942-NEXT: v_accvgpr_write_b32 a12, s121012; GFX942-NEXT: v_accvgpr_write_b32 a13, s131013; GFX942-NEXT: v_accvgpr_write_b32 a14, s141014; GFX942-NEXT: v_accvgpr_write_b32 a15, s151015; GFX942-NEXT: s_nop 11016; GFX942-NEXT: v_mfma_f32_32x32x2_f32 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:31017; GFX942-NEXT: v_mov_b32_e32 v0, 01018; GFX942-NEXT: s_nop 151019; GFX942-NEXT: s_nop 01020; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481021; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321022; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161023; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1024; GFX942-NEXT: s_endpgm1025;1026; GFX942-VGPR-LABEL: test_mfma_f32_32x32x2f32:1027; GFX942-VGPR: ; %bb.0: ; %bb1028; GFX942-VGPR-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x241029; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 1.01030; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, 2.01031; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1032; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01033; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1034; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1035; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1036; GFX942-VGPR-NEXT: v_mov_b64_e32 v[4:5], s[4:5]1037; GFX942-VGPR-NEXT: v_mov_b64_e32 v[6:7], s[6:7]1038; GFX942-VGPR-NEXT: v_mov_b64_e32 v[8:9], s[8:9]1039; GFX942-VGPR-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1040; GFX942-VGPR-NEXT: v_mov_b64_e32 v[12:13], s[12:13]1041; GFX942-VGPR-NEXT: v_mov_b64_e32 v[14:15], s[14:15]1042; GFX942-VGPR-NEXT: s_nop 11043; GFX942-VGPR-NEXT: v_mfma_f32_32x32x2_f32 v[0:15], v16, v17, v[0:15] cbsz:1 abid:2 blgp:31044; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 01045; GFX942-VGPR-NEXT: s_nop 151046; GFX942-VGPR-NEXT: s_nop 01047; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:481048; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:321049; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:161050; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]1051; GFX942-VGPR-NEXT: s_endpgm1052bb:1053 %in.1 = load <16 x float>, ptr addrspace(1) %arg1054 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.32x32x2f32(float 1.0, float 2.0, <16 x float> %in.1, i32 1, i32 2, i32 3)1055 store <16 x float> %mai.1, ptr addrspace(1) %arg1056 ret void1057}1058 1059define amdgpu_kernel void @test_mfma_f32_16x16x4f32(ptr addrspace(1) %arg) #0 {1060; NOLIT-SRCC-LABEL: test_mfma_f32_16x16x4f32:1061; NOLIT-SRCC: ; %bb.0: ; %bb1062; NOLIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x241063; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.01064; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.01065; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 01066; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1067; NOLIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x01068; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1069; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s01070; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s11071; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s21072; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v51073; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s31074; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v21075; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v31076; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v51077; NOLIT-SRCC-NEXT: s_nop 01078; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x4f32 a[0:3], v0, v1, a[0:3] cbsz:1 abid:2 blgp:31079; NOLIT-SRCC-NEXT: s_nop 91080; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01081; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11082; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21083; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31084; NOLIT-SRCC-NEXT: s_nop 11085; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]1086; NOLIT-SRCC-NEXT: s_endpgm1087;1088; LIT-SRCC-LABEL: test_mfma_f32_16x16x4f32:1089; LIT-SRCC: ; %bb.0: ; %bb1090; LIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x241091; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.01092; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.01093; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 01094; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1095; LIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x01096; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1097; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s01098; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s11099; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s21100; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v51101; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s31102; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v21103; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v31104; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v51105; LIT-SRCC-NEXT: s_nop 01106; LIT-SRCC-NEXT: v_mfma_f32_16x16x4f32 a[0:3], v0, v1, a[0:3] cbsz:1 abid:2 blgp:31107; LIT-SRCC-NEXT: s_nop 91108; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01109; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11110; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21111; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31112; LIT-SRCC-NEXT: s_nop 11113; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]1114; LIT-SRCC-NEXT: s_endpgm1115;1116; GFX90A-LABEL: test_mfma_f32_16x16x4f32:1117; GFX90A: ; %bb.0: ; %bb1118; GFX90A-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x241119; GFX90A-NEXT: v_mov_b32_e32 v0, 1.01120; GFX90A-NEXT: v_mov_b32_e32 v2, 2.01121; GFX90A-NEXT: v_mov_b32_e32 v1, 01122; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1123; GFX90A-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x01124; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1125; GFX90A-NEXT: v_accvgpr_write_b32 a0, s01126; GFX90A-NEXT: v_accvgpr_write_b32 a1, s11127; GFX90A-NEXT: v_accvgpr_write_b32 a2, s21128; GFX90A-NEXT: v_accvgpr_write_b32 a3, s31129; GFX90A-NEXT: s_nop 11130; GFX90A-NEXT: v_mfma_f32_16x16x4f32 a[0:3], v0, v2, a[0:3] cbsz:1 abid:2 blgp:31131; GFX90A-NEXT: s_nop 101132; GFX90A-NEXT: global_store_dwordx4 v1, a[0:3], s[6:7]1133; GFX90A-NEXT: s_endpgm1134;1135; GFX942-LABEL: test_mfma_f32_16x16x4f32:1136; GFX942: ; %bb.0: ; %bb1137; GFX942-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x241138; GFX942-NEXT: v_mov_b32_e32 v0, 1.01139; GFX942-NEXT: v_mov_b32_e32 v2, 2.01140; GFX942-NEXT: v_mov_b32_e32 v1, 01141; GFX942-NEXT: s_waitcnt lgkmcnt(0)1142; GFX942-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x01143; GFX942-NEXT: s_waitcnt lgkmcnt(0)1144; GFX942-NEXT: v_accvgpr_write_b32 a0, s01145; GFX942-NEXT: v_accvgpr_write_b32 a1, s11146; GFX942-NEXT: v_accvgpr_write_b32 a2, s21147; GFX942-NEXT: v_accvgpr_write_b32 a3, s31148; GFX942-NEXT: s_nop 11149; GFX942-NEXT: v_mfma_f32_16x16x4_f32 a[0:3], v0, v2, a[0:3] cbsz:1 abid:2 blgp:31150; GFX942-NEXT: s_nop 91151; GFX942-NEXT: global_store_dwordx4 v1, a[0:3], s[6:7]1152; GFX942-NEXT: s_endpgm1153;1154; GFX942-VGPR-LABEL: test_mfma_f32_16x16x4f32:1155; GFX942-VGPR: ; %bb.0: ; %bb1156; GFX942-VGPR-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x241157; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 1.01158; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, 2.01159; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, 01160; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1161; GFX942-VGPR-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x01162; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1163; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1164; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1165; GFX942-VGPR-NEXT: s_nop 11166; GFX942-VGPR-NEXT: v_mfma_f32_16x16x4_f32 v[0:3], v4, v6, v[0:3] cbsz:1 abid:2 blgp:31167; GFX942-VGPR-NEXT: s_nop 91168; GFX942-VGPR-NEXT: global_store_dwordx4 v5, v[0:3], s[6:7]1169; GFX942-VGPR-NEXT: s_endpgm1170bb:1171 %in.1 = load <4 x float>, ptr addrspace(1) %arg1172 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.16x16x4f32(float 1.0, float 2.0, <4 x float> %in.1, i32 1, i32 2, i32 3)1173 store <4 x float> %mai.1, ptr addrspace(1) %arg1174 ret void1175}1176 1177define amdgpu_kernel void @test_mfma_f32_32x32x4f16(ptr addrspace(1) %arg, ptr addrspace(1) %c) #0 {1178; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x4f16:1179; NOLIT-SRCC: ; %bb.0: ; %bb1180; NOLIT-SRCC-NEXT: s_load_dwordx4 s[36:39], s[4:5], 0x241181; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 01182; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1183; NOLIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[36:37], 0x01184; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[36:37], 0x401185; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1186; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s161187; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s171188; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s181189; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v01190; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s221191; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v11192; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s241193; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v01194; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s231195; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v21196; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s251197; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v01198; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v11199; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s261200; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s271201; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v21202; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s281203; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v01204; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v11205; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s291206; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s301207; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v21208; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s311209; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v01210; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v11211; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s01212; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s11213; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v21214; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s21215; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v01216; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v11217; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s31218; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s41219; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v21220; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s51221; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v01222; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v11223; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s61224; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s71225; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v21226; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s81227; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v01228; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v11229; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s91230; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s101231; NOLIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[38:39], 0x01232; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s191233; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v21234; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s111235; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v01236; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v11237; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s121238; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s131239; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s201240; NOLIT-SRCC-NEXT: v_mov_b32_e32 v6, s211241; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v31242; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v21243; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v01244; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v11245; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s141246; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s151247; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1248; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s01249; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s11250; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v51251; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v61252; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v01253; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v11254; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s21255; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s31256; NOLIT-SRCC-NEXT: s_nop 11257; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x4f16 a[0:31], v[2:3], v[0:1], a[0:31] cbsz:1 abid:2 blgp:31258; NOLIT-SRCC-NEXT: s_nop 151259; NOLIT-SRCC-NEXT: s_nop 11260; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a271261; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a261262; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a251263; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a241264; NOLIT-SRCC-NEXT: s_nop 11265; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:961266; NOLIT-SRCC-NEXT: s_nop 01267; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a311268; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a301269; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a291270; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a281271; NOLIT-SRCC-NEXT: s_nop 11272; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:1121273; NOLIT-SRCC-NEXT: s_nop 01274; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a191275; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a181276; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a171277; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a161278; NOLIT-SRCC-NEXT: s_nop 11279; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:641280; NOLIT-SRCC-NEXT: s_nop 01281; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a231282; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a221283; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a211284; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a201285; NOLIT-SRCC-NEXT: s_nop 11286; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:801287; NOLIT-SRCC-NEXT: s_nop 01288; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a111289; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a101290; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a91291; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a81292; NOLIT-SRCC-NEXT: s_nop 11293; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:321294; NOLIT-SRCC-NEXT: s_nop 01295; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a151296; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a141297; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a131298; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a121299; NOLIT-SRCC-NEXT: s_nop 11300; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:481301; NOLIT-SRCC-NEXT: s_nop 01302; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31303; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21304; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11305; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01306; NOLIT-SRCC-NEXT: s_nop 11307; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37]1308; NOLIT-SRCC-NEXT: s_nop 01309; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a71310; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a61311; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a51312; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a41313; NOLIT-SRCC-NEXT: s_nop 11314; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:161315; NOLIT-SRCC-NEXT: s_endpgm1316;1317; LIT-SRCC-LABEL: test_mfma_f32_32x32x4f16:1318; LIT-SRCC: ; %bb.0: ; %bb1319; LIT-SRCC-NEXT: s_load_dwordx4 s[36:39], s[4:5], 0x241320; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 01321; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1322; LIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[36:37], 0x01323; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[36:37], 0x401324; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1325; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s161326; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s171327; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s181328; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v01329; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s221330; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v11331; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s241332; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v01333; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s231334; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v21335; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s251336; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v01337; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v11338; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s261339; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s271340; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v21341; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s281342; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v01343; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v11344; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s291345; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s301346; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v21347; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s311348; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v01349; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v11350; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s01351; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s11352; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v21353; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s21354; LIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v01355; LIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v11356; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s31357; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s41358; LIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v21359; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s51360; LIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v01361; LIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v11362; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s61363; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s71364; LIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v21365; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s81366; LIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v01367; LIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v11368; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s91369; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s101370; LIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[38:39], 0x01371; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s191372; LIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v21373; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s111374; LIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v01375; LIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v11376; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s121377; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s131378; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s201379; LIT-SRCC-NEXT: v_mov_b32_e32 v6, s211380; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v31381; LIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v21382; LIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v01383; LIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v11384; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s141385; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s151386; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1387; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s01388; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s11389; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v51390; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v61391; LIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v01392; LIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v11393; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s21394; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s31395; LIT-SRCC-NEXT: s_nop 11396; LIT-SRCC-NEXT: v_mfma_f32_32x32x4f16 a[0:31], v[2:3], v[0:1], a[0:31] cbsz:1 abid:2 blgp:31397; LIT-SRCC-NEXT: s_nop 151398; LIT-SRCC-NEXT: s_nop 11399; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a271400; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a261401; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a251402; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a241403; LIT-SRCC-NEXT: s_nop 11404; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:961405; LIT-SRCC-NEXT: s_nop 01406; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a311407; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a301408; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a291409; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a281410; LIT-SRCC-NEXT: s_nop 11411; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:1121412; LIT-SRCC-NEXT: s_nop 01413; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a191414; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a181415; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a171416; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a161417; LIT-SRCC-NEXT: s_nop 11418; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:641419; LIT-SRCC-NEXT: s_nop 01420; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a231421; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a221422; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a211423; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a201424; LIT-SRCC-NEXT: s_nop 11425; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:801426; LIT-SRCC-NEXT: s_nop 01427; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a111428; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a101429; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a91430; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a81431; LIT-SRCC-NEXT: s_nop 11432; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:321433; LIT-SRCC-NEXT: s_nop 01434; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a151435; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a141436; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a131437; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a121438; LIT-SRCC-NEXT: s_nop 11439; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:481440; LIT-SRCC-NEXT: s_nop 01441; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31442; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21443; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11444; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01445; LIT-SRCC-NEXT: s_nop 11446; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37]1447; LIT-SRCC-NEXT: s_nop 01448; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a71449; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a61450; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a51451; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a41452; LIT-SRCC-NEXT: s_nop 11453; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[36:37] offset:161454; LIT-SRCC-NEXT: s_endpgm1455;1456; GFX90A-LABEL: test_mfma_f32_32x32x4f16:1457; GFX90A: ; %bb.0: ; %bb1458; GFX90A-NEXT: s_load_dwordx4 s[36:39], s[4:5], 0x241459; GFX90A-NEXT: v_mov_b32_e32 v0, 01460; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1461; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[36:37], 0x401462; GFX90A-NEXT: s_load_dwordx16 s[16:31], s[36:37], 0x01463; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1464; GFX90A-NEXT: v_accvgpr_write_b32 a16, s01465; GFX90A-NEXT: v_accvgpr_write_b32 a17, s11466; GFX90A-NEXT: v_accvgpr_write_b32 a18, s21467; GFX90A-NEXT: v_accvgpr_write_b32 a19, s31468; GFX90A-NEXT: s_load_dwordx4 s[0:3], s[38:39], 0x01469; GFX90A-NEXT: v_accvgpr_write_b32 a0, s161470; GFX90A-NEXT: v_accvgpr_write_b32 a1, s171471; GFX90A-NEXT: v_accvgpr_write_b32 a2, s181472; GFX90A-NEXT: v_accvgpr_write_b32 a3, s191473; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1474; GFX90A-NEXT: v_mov_b32_e32 v2, s01475; GFX90A-NEXT: v_mov_b32_e32 v3, s11476; GFX90A-NEXT: v_accvgpr_write_b32 a4, s201477; GFX90A-NEXT: v_accvgpr_write_b32 a5, s211478; GFX90A-NEXT: v_accvgpr_write_b32 a6, s221479; GFX90A-NEXT: v_accvgpr_write_b32 a7, s231480; GFX90A-NEXT: v_accvgpr_write_b32 a8, s241481; GFX90A-NEXT: v_accvgpr_write_b32 a9, s251482; GFX90A-NEXT: v_accvgpr_write_b32 a10, s261483; GFX90A-NEXT: v_accvgpr_write_b32 a11, s271484; GFX90A-NEXT: v_accvgpr_write_b32 a12, s281485; GFX90A-NEXT: v_accvgpr_write_b32 a13, s291486; GFX90A-NEXT: v_accvgpr_write_b32 a14, s301487; GFX90A-NEXT: v_accvgpr_write_b32 a15, s311488; GFX90A-NEXT: v_accvgpr_write_b32 a20, s41489; GFX90A-NEXT: v_accvgpr_write_b32 a21, s51490; GFX90A-NEXT: v_accvgpr_write_b32 a22, s61491; GFX90A-NEXT: v_accvgpr_write_b32 a23, s71492; GFX90A-NEXT: v_accvgpr_write_b32 a24, s81493; GFX90A-NEXT: v_accvgpr_write_b32 a25, s91494; GFX90A-NEXT: v_accvgpr_write_b32 a26, s101495; GFX90A-NEXT: v_accvgpr_write_b32 a27, s111496; GFX90A-NEXT: v_accvgpr_write_b32 a28, s121497; GFX90A-NEXT: v_accvgpr_write_b32 a29, s131498; GFX90A-NEXT: v_accvgpr_write_b32 a30, s141499; GFX90A-NEXT: v_accvgpr_write_b32 a31, s151500; GFX90A-NEXT: v_mov_b32_e32 v4, s21501; GFX90A-NEXT: v_mov_b32_e32 v5, s31502; GFX90A-NEXT: s_nop 11503; GFX90A-NEXT: v_mfma_f32_32x32x4f16 a[0:31], v[2:3], v[4:5], a[0:31] cbsz:1 abid:2 blgp:31504; GFX90A-NEXT: s_nop 151505; GFX90A-NEXT: s_nop 21506; GFX90A-NEXT: global_store_dwordx4 v0, a[24:27], s[36:37] offset:961507; GFX90A-NEXT: global_store_dwordx4 v0, a[28:31], s[36:37] offset:1121508; GFX90A-NEXT: global_store_dwordx4 v0, a[16:19], s[36:37] offset:641509; GFX90A-NEXT: global_store_dwordx4 v0, a[20:23], s[36:37] offset:801510; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[36:37] offset:321511; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[36:37] offset:481512; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[36:37]1513; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[36:37] offset:161514; GFX90A-NEXT: s_endpgm1515;1516; GFX942-LABEL: test_mfma_f32_32x32x4f16:1517; GFX942: ; %bb.0: ; %bb1518; GFX942-NEXT: s_load_dwordx4 s[36:39], s[4:5], 0x241519; GFX942-NEXT: v_mov_b32_e32 v0, 01520; GFX942-NEXT: s_waitcnt lgkmcnt(0)1521; GFX942-NEXT: s_load_dwordx16 s[0:15], s[36:37], 0x401522; GFX942-NEXT: s_load_dwordx16 s[16:31], s[36:37], 0x01523; GFX942-NEXT: s_waitcnt lgkmcnt(0)1524; GFX942-NEXT: v_accvgpr_write_b32 a16, s01525; GFX942-NEXT: v_accvgpr_write_b32 a17, s11526; GFX942-NEXT: v_accvgpr_write_b32 a18, s21527; GFX942-NEXT: v_accvgpr_write_b32 a19, s31528; GFX942-NEXT: s_load_dwordx4 s[0:3], s[38:39], 0x01529; GFX942-NEXT: v_accvgpr_write_b32 a0, s161530; GFX942-NEXT: v_accvgpr_write_b32 a1, s171531; GFX942-NEXT: v_accvgpr_write_b32 a2, s181532; GFX942-NEXT: v_accvgpr_write_b32 a3, s191533; GFX942-NEXT: s_waitcnt lgkmcnt(0)1534; GFX942-NEXT: v_mov_b32_e32 v2, s01535; GFX942-NEXT: v_mov_b32_e32 v3, s11536; GFX942-NEXT: v_accvgpr_write_b32 a4, s201537; GFX942-NEXT: v_accvgpr_write_b32 a5, s211538; GFX942-NEXT: v_accvgpr_write_b32 a6, s221539; GFX942-NEXT: v_accvgpr_write_b32 a7, s231540; GFX942-NEXT: v_accvgpr_write_b32 a8, s241541; GFX942-NEXT: v_accvgpr_write_b32 a9, s251542; GFX942-NEXT: v_accvgpr_write_b32 a10, s261543; GFX942-NEXT: v_accvgpr_write_b32 a11, s271544; GFX942-NEXT: v_accvgpr_write_b32 a12, s281545; GFX942-NEXT: v_accvgpr_write_b32 a13, s291546; GFX942-NEXT: v_accvgpr_write_b32 a14, s301547; GFX942-NEXT: v_accvgpr_write_b32 a15, s311548; GFX942-NEXT: v_accvgpr_write_b32 a20, s41549; GFX942-NEXT: v_accvgpr_write_b32 a21, s51550; GFX942-NEXT: v_accvgpr_write_b32 a22, s61551; GFX942-NEXT: v_accvgpr_write_b32 a23, s71552; GFX942-NEXT: v_accvgpr_write_b32 a24, s81553; GFX942-NEXT: v_accvgpr_write_b32 a25, s91554; GFX942-NEXT: v_accvgpr_write_b32 a26, s101555; GFX942-NEXT: v_accvgpr_write_b32 a27, s111556; GFX942-NEXT: v_accvgpr_write_b32 a28, s121557; GFX942-NEXT: v_accvgpr_write_b32 a29, s131558; GFX942-NEXT: v_accvgpr_write_b32 a30, s141559; GFX942-NEXT: v_accvgpr_write_b32 a31, s151560; GFX942-NEXT: v_mov_b32_e32 v4, s21561; GFX942-NEXT: v_mov_b32_e32 v5, s31562; GFX942-NEXT: s_nop 11563; GFX942-NEXT: v_mfma_f32_32x32x4_2b_f16 a[0:31], v[2:3], v[4:5], a[0:31] cbsz:1 abid:2 blgp:31564; GFX942-NEXT: s_nop 151565; GFX942-NEXT: s_nop 21566; GFX942-NEXT: global_store_dwordx4 v0, a[24:27], s[36:37] offset:961567; GFX942-NEXT: global_store_dwordx4 v0, a[28:31], s[36:37] offset:1121568; GFX942-NEXT: global_store_dwordx4 v0, a[16:19], s[36:37] offset:641569; GFX942-NEXT: global_store_dwordx4 v0, a[20:23], s[36:37] offset:801570; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[36:37] offset:321571; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[36:37] offset:481572; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[36:37]1573; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[36:37] offset:161574; GFX942-NEXT: s_endpgm1575;1576; GFX942-VGPR-LABEL: test_mfma_f32_32x32x4f16:1577; GFX942-VGPR: ; %bb.0: ; %bb1578; GFX942-VGPR-NEXT: s_load_dwordx4 s[36:39], s[4:5], 0x241579; GFX942-VGPR-NEXT: v_mov_b32_e32 v32, 01580; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1581; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[36:37], 0x401582; GFX942-VGPR-NEXT: s_load_dwordx16 s[16:31], s[36:37], 0x01583; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1584; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, s01585; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, s11586; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, s21587; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, s31588; GFX942-VGPR-NEXT: s_load_dwordx4 s[0:3], s[38:39], 0x01589; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, s161590; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, s171591; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, s181592; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, s191593; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1594; GFX942-VGPR-NEXT: v_mov_b32_e32 v34, s01595; GFX942-VGPR-NEXT: v_mov_b32_e32 v35, s11596; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, s201597; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, s211598; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, s221599; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, s231600; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, s241601; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, s251602; GFX942-VGPR-NEXT: v_mov_b32_e32 v10, s261603; GFX942-VGPR-NEXT: v_mov_b32_e32 v11, s271604; GFX942-VGPR-NEXT: v_mov_b32_e32 v12, s281605; GFX942-VGPR-NEXT: v_mov_b32_e32 v13, s291606; GFX942-VGPR-NEXT: v_mov_b32_e32 v14, s301607; GFX942-VGPR-NEXT: v_mov_b32_e32 v15, s311608; GFX942-VGPR-NEXT: v_mov_b32_e32 v20, s41609; GFX942-VGPR-NEXT: v_mov_b32_e32 v21, s51610; GFX942-VGPR-NEXT: v_mov_b32_e32 v22, s61611; GFX942-VGPR-NEXT: v_mov_b32_e32 v23, s71612; GFX942-VGPR-NEXT: v_mov_b32_e32 v24, s81613; GFX942-VGPR-NEXT: v_mov_b32_e32 v25, s91614; GFX942-VGPR-NEXT: v_mov_b32_e32 v26, s101615; GFX942-VGPR-NEXT: v_mov_b32_e32 v27, s111616; GFX942-VGPR-NEXT: v_mov_b32_e32 v28, s121617; GFX942-VGPR-NEXT: v_mov_b32_e32 v29, s131618; GFX942-VGPR-NEXT: v_mov_b32_e32 v30, s141619; GFX942-VGPR-NEXT: v_mov_b32_e32 v31, s151620; GFX942-VGPR-NEXT: v_mov_b32_e32 v36, s21621; GFX942-VGPR-NEXT: v_mov_b32_e32 v37, s31622; GFX942-VGPR-NEXT: s_nop 11623; GFX942-VGPR-NEXT: v_mfma_f32_32x32x4_2b_f16 v[0:31], v[34:35], v[36:37], v[0:31] cbsz:1 abid:2 blgp:31624; GFX942-VGPR-NEXT: s_nop 151625; GFX942-VGPR-NEXT: s_nop 21626; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[24:27], s[36:37] offset:961627; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[28:31], s[36:37] offset:1121628; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[16:19], s[36:37] offset:641629; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[20:23], s[36:37] offset:801630; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[8:11], s[36:37] offset:321631; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[12:15], s[36:37] offset:481632; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[0:3], s[36:37]1633; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[4:7], s[36:37] offset:161634; GFX942-VGPR-NEXT: s_endpgm1635bb:1636 %in.1 = load <32 x float>, ptr addrspace(1) %arg1637 %c.1 = load <4 x half>, ptr addrspace(1) %c1638 %c2p = getelementptr <4 x half>, ptr addrspace(1) %c, i64 11639 %c.2 = load <4 x half>, ptr addrspace(1) %c2p1640 %mai.1 = tail call <32 x float> @llvm.amdgcn.mfma.f32.32x32x4f16(<4 x half> %c.1, <4 x half> %c.2, <32 x float> %in.1, i32 1, i32 2, i32 3)1641 store <32 x float> %mai.1, ptr addrspace(1) %arg1642 ret void1643}1644 1645define amdgpu_kernel void @test_mfma_f32_16x16x4f16(ptr addrspace(1) %arg, ptr addrspace(1) %c) #0 {1646; NOLIT-SRCC-LABEL: test_mfma_f32_16x16x4f16:1647; NOLIT-SRCC: ; %bb.0: ; %bb1648; NOLIT-SRCC-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x241649; NOLIT-SRCC-NEXT: v_mov_b32_e32 v12, 01650; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1651; NOLIT-SRCC-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x01652; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01653; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1654; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s201655; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s01656; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s11657; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s21658; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v131659; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s31660; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v31661; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v41662; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v131663; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s41664; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s51665; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s61666; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v31667; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v41668; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v131669; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s71670; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s81671; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s91672; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v31673; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v41674; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v131675; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s101676; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s111677; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s121678; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s211679; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v31680; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v41681; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v131682; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s131683; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s141684; NOLIT-SRCC-NEXT: v_mov_b32_e32 v13, s151685; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v31686; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v41687; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v131688; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s221689; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s231690; NOLIT-SRCC-NEXT: s_nop 11691; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x4f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31692; NOLIT-SRCC-NEXT: s_nop 91693; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a151694; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a141695; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a131696; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a121697; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a111698; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a101699; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a91700; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a81701; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a71702; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a61703; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a51704; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a41705; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:481706; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:321707; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:161708; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31709; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21710; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11711; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01712; NOLIT-SRCC-NEXT: s_nop 11713; NOLIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17]1714; NOLIT-SRCC-NEXT: s_endpgm1715;1716; LIT-SRCC-LABEL: test_mfma_f32_16x16x4f16:1717; LIT-SRCC: ; %bb.0: ; %bb1718; LIT-SRCC-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x241719; LIT-SRCC-NEXT: v_mov_b32_e32 v12, 01720; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1721; LIT-SRCC-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x01722; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01723; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1724; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s201725; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s01726; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s11727; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s21728; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v131729; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s31730; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v31731; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v41732; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v131733; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s41734; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s51735; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s61736; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v31737; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v41738; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v131739; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s71740; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s81741; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s91742; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v31743; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v41744; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v131745; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s101746; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s111747; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s121748; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s211749; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v31750; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v41751; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v131752; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s131753; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s141754; LIT-SRCC-NEXT: v_mov_b32_e32 v13, s151755; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v31756; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v41757; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v131758; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s221759; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s231760; LIT-SRCC-NEXT: s_nop 11761; LIT-SRCC-NEXT: v_mfma_f32_16x16x4f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31762; LIT-SRCC-NEXT: s_nop 91763; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a151764; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a141765; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a131766; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a121767; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a111768; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a101769; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a91770; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a81771; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a71772; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a61773; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a51774; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a41775; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17] offset:481776; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17] offset:321777; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17] offset:161778; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31779; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21780; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11781; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01782; LIT-SRCC-NEXT: s_nop 11783; LIT-SRCC-NEXT: global_store_dwordx4 v12, v[0:3], s[16:17]1784; LIT-SRCC-NEXT: s_endpgm1785;1786; GFX90A-LABEL: test_mfma_f32_16x16x4f16:1787; GFX90A: ; %bb.0: ; %bb1788; GFX90A-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x241789; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1790; GFX90A-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x01791; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01792; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1793; GFX90A-NEXT: v_mov_b32_e32 v0, s201794; GFX90A-NEXT: v_mov_b32_e32 v1, s211795; GFX90A-NEXT: v_accvgpr_write_b32 a0, s01796; GFX90A-NEXT: v_mov_b32_e32 v2, s221797; GFX90A-NEXT: v_mov_b32_e32 v3, s231798; GFX90A-NEXT: v_accvgpr_write_b32 a1, s11799; GFX90A-NEXT: v_accvgpr_write_b32 a2, s21800; GFX90A-NEXT: v_accvgpr_write_b32 a3, s31801; GFX90A-NEXT: v_accvgpr_write_b32 a4, s41802; GFX90A-NEXT: v_accvgpr_write_b32 a5, s51803; GFX90A-NEXT: v_accvgpr_write_b32 a6, s61804; GFX90A-NEXT: v_accvgpr_write_b32 a7, s71805; GFX90A-NEXT: v_accvgpr_write_b32 a8, s81806; GFX90A-NEXT: v_accvgpr_write_b32 a9, s91807; GFX90A-NEXT: v_accvgpr_write_b32 a10, s101808; GFX90A-NEXT: v_accvgpr_write_b32 a11, s111809; GFX90A-NEXT: v_accvgpr_write_b32 a12, s121810; GFX90A-NEXT: v_accvgpr_write_b32 a13, s131811; GFX90A-NEXT: v_accvgpr_write_b32 a14, s141812; GFX90A-NEXT: v_accvgpr_write_b32 a15, s151813; GFX90A-NEXT: s_nop 11814; GFX90A-NEXT: v_mfma_f32_16x16x4f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31815; GFX90A-NEXT: v_mov_b32_e32 v0, 01816; GFX90A-NEXT: s_nop 91817; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481818; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321819; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161820; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1821; GFX90A-NEXT: s_endpgm1822;1823; GFX942-LABEL: test_mfma_f32_16x16x4f16:1824; GFX942: ; %bb.0: ; %bb1825; GFX942-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x241826; GFX942-NEXT: s_waitcnt lgkmcnt(0)1827; GFX942-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x01828; GFX942-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01829; GFX942-NEXT: s_waitcnt lgkmcnt(0)1830; GFX942-NEXT: v_mov_b32_e32 v0, s201831; GFX942-NEXT: v_mov_b32_e32 v1, s211832; GFX942-NEXT: v_accvgpr_write_b32 a0, s01833; GFX942-NEXT: v_mov_b32_e32 v2, s221834; GFX942-NEXT: v_mov_b32_e32 v3, s231835; GFX942-NEXT: v_accvgpr_write_b32 a1, s11836; GFX942-NEXT: v_accvgpr_write_b32 a2, s21837; GFX942-NEXT: v_accvgpr_write_b32 a3, s31838; GFX942-NEXT: v_accvgpr_write_b32 a4, s41839; GFX942-NEXT: v_accvgpr_write_b32 a5, s51840; GFX942-NEXT: v_accvgpr_write_b32 a6, s61841; GFX942-NEXT: v_accvgpr_write_b32 a7, s71842; GFX942-NEXT: v_accvgpr_write_b32 a8, s81843; GFX942-NEXT: v_accvgpr_write_b32 a9, s91844; GFX942-NEXT: v_accvgpr_write_b32 a10, s101845; GFX942-NEXT: v_accvgpr_write_b32 a11, s111846; GFX942-NEXT: v_accvgpr_write_b32 a12, s121847; GFX942-NEXT: v_accvgpr_write_b32 a13, s131848; GFX942-NEXT: v_accvgpr_write_b32 a14, s141849; GFX942-NEXT: v_accvgpr_write_b32 a15, s151850; GFX942-NEXT: s_nop 11851; GFX942-NEXT: v_mfma_f32_16x16x4_4b_f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:31852; GFX942-NEXT: v_mov_b32_e32 v0, 01853; GFX942-NEXT: s_nop 91854; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:481855; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:321856; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:161857; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]1858; GFX942-NEXT: s_endpgm1859;1860; GFX942-VGPR-LABEL: test_mfma_f32_16x16x4f16:1861; GFX942-VGPR: ; %bb.0: ; %bb1862; GFX942-VGPR-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x241863; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1864; GFX942-VGPR-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x01865; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x01866; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)1867; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, s201868; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, s211869; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]1870; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, s221871; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, s231872; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]1873; GFX942-VGPR-NEXT: v_mov_b64_e32 v[4:5], s[4:5]1874; GFX942-VGPR-NEXT: v_mov_b64_e32 v[6:7], s[6:7]1875; GFX942-VGPR-NEXT: v_mov_b64_e32 v[8:9], s[8:9]1876; GFX942-VGPR-NEXT: v_mov_b64_e32 v[10:11], s[10:11]1877; GFX942-VGPR-NEXT: v_mov_b64_e32 v[12:13], s[12:13]1878; GFX942-VGPR-NEXT: v_mov_b64_e32 v[14:15], s[14:15]1879; GFX942-VGPR-NEXT: s_nop 11880; GFX942-VGPR-NEXT: v_mfma_f32_16x16x4_4b_f16 v[0:15], v[16:17], v[18:19], v[0:15] cbsz:1 abid:2 blgp:31881; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 01882; GFX942-VGPR-NEXT: s_nop 91883; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:481884; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:321885; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:161886; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]1887; GFX942-VGPR-NEXT: s_endpgm1888bb:1889 %in.1 = load <16 x float>, ptr addrspace(1) %arg1890 %c.1 = load <4 x half>, ptr addrspace(1) %c1891 %c2p = getelementptr <4 x half>, ptr addrspace(1) %c, i64 11892 %c.2 = load <4 x half>, ptr addrspace(1) %c2p1893 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.16x16x4f16(<4 x half> %c.1, <4 x half> %c.2, <16 x float> %in.1, i32 1, i32 2, i32 3)1894 store <16 x float> %mai.1, ptr addrspace(1) %arg1895 ret void1896}1897 1898define amdgpu_kernel void @test_mfma_f32_4x4x4f16(ptr addrspace(1) %arg, ptr addrspace(1) %c) #0 {1899; NOLIT-SRCC-LABEL: test_mfma_f32_4x4x4f16:1900; NOLIT-SRCC: ; %bb.0: ; %bb1901; NOLIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241902; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 01903; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1904; NOLIT-SRCC-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x01905; NOLIT-SRCC-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x01906; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1907; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s41908; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s81909; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s51910; NOLIT-SRCC-NEXT: v_mov_b32_e32 v6, s91911; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v51912; NOLIT-SRCC-NEXT: v_mov_b32_e32 v7, s101913; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s111914; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v61915; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v71916; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v51917; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s61918; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s71919; NOLIT-SRCC-NEXT: s_nop 11920; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x4f16 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:31921; NOLIT-SRCC-NEXT: s_nop 31922; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01923; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11924; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21925; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31926; NOLIT-SRCC-NEXT: s_nop 11927; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1928; NOLIT-SRCC-NEXT: s_endpgm1929;1930; LIT-SRCC-LABEL: test_mfma_f32_4x4x4f16:1931; LIT-SRCC: ; %bb.0: ; %bb1932; LIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241933; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 01934; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1935; LIT-SRCC-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x01936; LIT-SRCC-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x01937; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)1938; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s41939; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s81940; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s51941; LIT-SRCC-NEXT: v_mov_b32_e32 v6, s91942; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v51943; LIT-SRCC-NEXT: v_mov_b32_e32 v7, s101944; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s111945; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v61946; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v71947; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v51948; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s61949; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s71950; LIT-SRCC-NEXT: s_nop 11951; LIT-SRCC-NEXT: v_mfma_f32_4x4x4f16 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:31952; LIT-SRCC-NEXT: s_nop 31953; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a01954; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a11955; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a21956; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a31957; LIT-SRCC-NEXT: s_nop 11958; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1959; LIT-SRCC-NEXT: s_endpgm1960;1961; GFX90A-LABEL: test_mfma_f32_4x4x4f16:1962; GFX90A: ; %bb.0: ; %bb1963; GFX90A-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241964; GFX90A-NEXT: v_mov_b32_e32 v0, 01965; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1966; GFX90A-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x01967; GFX90A-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x01968; GFX90A-NEXT: s_waitcnt lgkmcnt(0)1969; GFX90A-NEXT: v_mov_b32_e32 v2, s41970; GFX90A-NEXT: v_mov_b32_e32 v3, s51971; GFX90A-NEXT: v_accvgpr_write_b32 a0, s81972; GFX90A-NEXT: v_mov_b32_e32 v4, s61973; GFX90A-NEXT: v_mov_b32_e32 v5, s71974; GFX90A-NEXT: v_accvgpr_write_b32 a1, s91975; GFX90A-NEXT: v_accvgpr_write_b32 a2, s101976; GFX90A-NEXT: v_accvgpr_write_b32 a3, s111977; GFX90A-NEXT: s_nop 11978; GFX90A-NEXT: v_mfma_f32_4x4x4f16 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:31979; GFX90A-NEXT: s_nop 41980; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]1981; GFX90A-NEXT: s_endpgm1982;1983; GFX942-LABEL: test_mfma_f32_4x4x4f16:1984; GFX942: ; %bb.0: ; %bb1985; GFX942-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x241986; GFX942-NEXT: v_mov_b32_e32 v0, 01987; GFX942-NEXT: s_waitcnt lgkmcnt(0)1988; GFX942-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x01989; GFX942-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x01990; GFX942-NEXT: s_waitcnt lgkmcnt(0)1991; GFX942-NEXT: v_mov_b32_e32 v2, s41992; GFX942-NEXT: v_mov_b32_e32 v3, s51993; GFX942-NEXT: v_accvgpr_write_b32 a0, s81994; GFX942-NEXT: v_mov_b32_e32 v4, s61995; GFX942-NEXT: v_mov_b32_e32 v5, s71996; GFX942-NEXT: v_accvgpr_write_b32 a1, s91997; GFX942-NEXT: v_accvgpr_write_b32 a2, s101998; GFX942-NEXT: v_accvgpr_write_b32 a3, s111999; GFX942-NEXT: s_nop 12000; GFX942-NEXT: v_mfma_f32_4x4x4_16b_f16 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:32001; GFX942-NEXT: s_nop 42002; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2003; GFX942-NEXT: s_endpgm2004;2005; GFX942-VGPR-LABEL: test_mfma_f32_4x4x4f16:2006; GFX942-VGPR: ; %bb.0: ; %bb2007; GFX942-VGPR-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x242008; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 02009; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2010; GFX942-VGPR-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x02011; GFX942-VGPR-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02012; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2013; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, s42014; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, s52015; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2016; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, s62017; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, s72018; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2019; GFX942-VGPR-NEXT: s_nop 12020; GFX942-VGPR-NEXT: v_mfma_f32_4x4x4_16b_f16 v[0:3], v[6:7], v[8:9], v[0:3] cbsz:1 abid:2 blgp:32021; GFX942-VGPR-NEXT: s_nop 42022; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2023; GFX942-VGPR-NEXT: s_endpgm2024bb:2025 %in.1 = load <4 x float>, ptr addrspace(1) %arg2026 %c.1 = load <4 x half>, ptr addrspace(1) %c2027 %c2p = getelementptr <4 x half>, ptr addrspace(1) %c, i64 12028 %c.2 = load <4 x half>, ptr addrspace(1) %c2p2029 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x4f16(<4 x half> %c.1, <4 x half> %c.2, <4 x float> %in.1, i32 1, i32 2, i32 3)2030 store <4 x float> %mai.1, ptr addrspace(1) %arg2031 ret void2032}2033 2034define amdgpu_kernel void @test_mfma_f32_32x32x8f16(ptr addrspace(1) %arg, ptr addrspace(1) %c) #0 {2035; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x8f16:2036; NOLIT-SRCC: ; %bb.0: ; %bb2037; NOLIT-SRCC-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x242038; NOLIT-SRCC-NEXT: v_mov_b32_e32 v16, 02039; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2040; NOLIT-SRCC-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x02041; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02042; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2043; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s202044; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s02045; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s12046; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s22047; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v172048; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s32049; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v32050; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v42051; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v172052; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s42053; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s52054; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s62055; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v32056; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v42057; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v172058; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s72059; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s82060; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s92061; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v32062; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v42063; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v172064; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s102065; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s112066; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s122067; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s212068; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v32069; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v42070; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v172071; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s132072; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s142073; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s152074; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v32075; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v42076; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v172077; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s222078; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s232079; NOLIT-SRCC-NEXT: s_nop 12080; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x8f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:32081; NOLIT-SRCC-NEXT: s_nop 152082; NOLIT-SRCC-NEXT: s_nop 12083; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a152084; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a142085; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a132086; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a122087; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a112088; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a102089; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a92090; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a82091; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a72092; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a62093; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a52094; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a42095; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a32096; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a22097; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a12098; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a02099; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17] offset:482100; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:322101; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:162102; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]2103; NOLIT-SRCC-NEXT: s_endpgm2104;2105; LIT-SRCC-LABEL: test_mfma_f32_32x32x8f16:2106; LIT-SRCC: ; %bb.0: ; %bb2107; LIT-SRCC-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x242108; LIT-SRCC-NEXT: v_mov_b32_e32 v16, 02109; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2110; LIT-SRCC-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x02111; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02112; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2113; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s202114; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s02115; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s12116; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s22117; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v172118; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s32119; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v32120; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v42121; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v172122; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s42123; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s52124; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s62125; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v32126; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v42127; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v172128; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s72129; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s82130; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s92131; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v32132; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v42133; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v172134; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s102135; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s112136; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s122137; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s212138; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v32139; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v42140; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v172141; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s132142; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s142143; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s152144; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v32145; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v42146; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v172147; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s222148; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s232149; LIT-SRCC-NEXT: s_nop 12150; LIT-SRCC-NEXT: v_mfma_f32_32x32x8f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:32151; LIT-SRCC-NEXT: s_nop 152152; LIT-SRCC-NEXT: s_nop 12153; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a152154; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a142155; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a132156; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a122157; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a112158; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a102159; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a92160; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a82161; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a72162; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a62163; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a52164; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a42165; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a32166; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a22167; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a12168; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a02169; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17] offset:482170; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:322171; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:162172; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]2173; LIT-SRCC-NEXT: s_endpgm2174;2175; GFX90A-LABEL: test_mfma_f32_32x32x8f16:2176; GFX90A: ; %bb.0: ; %bb2177; GFX90A-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x242178; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2179; GFX90A-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x02180; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02181; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2182; GFX90A-NEXT: v_mov_b32_e32 v0, s202183; GFX90A-NEXT: v_mov_b32_e32 v1, s212184; GFX90A-NEXT: v_accvgpr_write_b32 a0, s02185; GFX90A-NEXT: v_mov_b32_e32 v2, s222186; GFX90A-NEXT: v_mov_b32_e32 v3, s232187; GFX90A-NEXT: v_accvgpr_write_b32 a1, s12188; GFX90A-NEXT: v_accvgpr_write_b32 a2, s22189; GFX90A-NEXT: v_accvgpr_write_b32 a3, s32190; GFX90A-NEXT: v_accvgpr_write_b32 a4, s42191; GFX90A-NEXT: v_accvgpr_write_b32 a5, s52192; GFX90A-NEXT: v_accvgpr_write_b32 a6, s62193; GFX90A-NEXT: v_accvgpr_write_b32 a7, s72194; GFX90A-NEXT: v_accvgpr_write_b32 a8, s82195; GFX90A-NEXT: v_accvgpr_write_b32 a9, s92196; GFX90A-NEXT: v_accvgpr_write_b32 a10, s102197; GFX90A-NEXT: v_accvgpr_write_b32 a11, s112198; GFX90A-NEXT: v_accvgpr_write_b32 a12, s122199; GFX90A-NEXT: v_accvgpr_write_b32 a13, s132200; GFX90A-NEXT: v_accvgpr_write_b32 a14, s142201; GFX90A-NEXT: v_accvgpr_write_b32 a15, s152202; GFX90A-NEXT: s_nop 12203; GFX90A-NEXT: v_mfma_f32_32x32x8f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:32204; GFX90A-NEXT: v_mov_b32_e32 v0, 02205; GFX90A-NEXT: s_nop 152206; GFX90A-NEXT: s_nop 12207; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:482208; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:322209; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:162210; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]2211; GFX90A-NEXT: s_endpgm2212;2213; GFX942-LABEL: test_mfma_f32_32x32x8f16:2214; GFX942: ; %bb.0: ; %bb2215; GFX942-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x242216; GFX942-NEXT: s_waitcnt lgkmcnt(0)2217; GFX942-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x02218; GFX942-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02219; GFX942-NEXT: s_waitcnt lgkmcnt(0)2220; GFX942-NEXT: v_mov_b32_e32 v0, s202221; GFX942-NEXT: v_mov_b32_e32 v1, s212222; GFX942-NEXT: v_accvgpr_write_b32 a0, s02223; GFX942-NEXT: v_mov_b32_e32 v2, s222224; GFX942-NEXT: v_mov_b32_e32 v3, s232225; GFX942-NEXT: v_accvgpr_write_b32 a1, s12226; GFX942-NEXT: v_accvgpr_write_b32 a2, s22227; GFX942-NEXT: v_accvgpr_write_b32 a3, s32228; GFX942-NEXT: v_accvgpr_write_b32 a4, s42229; GFX942-NEXT: v_accvgpr_write_b32 a5, s52230; GFX942-NEXT: v_accvgpr_write_b32 a6, s62231; GFX942-NEXT: v_accvgpr_write_b32 a7, s72232; GFX942-NEXT: v_accvgpr_write_b32 a8, s82233; GFX942-NEXT: v_accvgpr_write_b32 a9, s92234; GFX942-NEXT: v_accvgpr_write_b32 a10, s102235; GFX942-NEXT: v_accvgpr_write_b32 a11, s112236; GFX942-NEXT: v_accvgpr_write_b32 a12, s122237; GFX942-NEXT: v_accvgpr_write_b32 a13, s132238; GFX942-NEXT: v_accvgpr_write_b32 a14, s142239; GFX942-NEXT: v_accvgpr_write_b32 a15, s152240; GFX942-NEXT: s_nop 12241; GFX942-NEXT: v_mfma_f32_32x32x8_f16 a[0:15], v[0:1], v[2:3], a[0:15] cbsz:1 abid:2 blgp:32242; GFX942-NEXT: v_mov_b32_e32 v0, 02243; GFX942-NEXT: s_nop 92244; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:482245; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:322246; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:162247; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]2248; GFX942-NEXT: s_endpgm2249;2250; GFX942-VGPR-LABEL: test_mfma_f32_32x32x8f16:2251; GFX942-VGPR: ; %bb.0: ; %bb2252; GFX942-VGPR-NEXT: s_load_dwordx4 s[16:19], s[4:5], 0x242253; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2254; GFX942-VGPR-NEXT: s_load_dwordx4 s[20:23], s[18:19], 0x02255; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02256; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2257; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, s202258; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, s212259; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]2260; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, s222261; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, s232262; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]2263; GFX942-VGPR-NEXT: v_mov_b64_e32 v[4:5], s[4:5]2264; GFX942-VGPR-NEXT: v_mov_b64_e32 v[6:7], s[6:7]2265; GFX942-VGPR-NEXT: v_mov_b64_e32 v[8:9], s[8:9]2266; GFX942-VGPR-NEXT: v_mov_b64_e32 v[10:11], s[10:11]2267; GFX942-VGPR-NEXT: v_mov_b64_e32 v[12:13], s[12:13]2268; GFX942-VGPR-NEXT: v_mov_b64_e32 v[14:15], s[14:15]2269; GFX942-VGPR-NEXT: s_nop 12270; GFX942-VGPR-NEXT: v_mfma_f32_32x32x8_f16 v[0:15], v[16:17], v[18:19], v[0:15] cbsz:1 abid:2 blgp:32271; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 02272; GFX942-VGPR-NEXT: s_nop 92273; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:482274; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:322275; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:162276; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]2277; GFX942-VGPR-NEXT: s_endpgm2278bb:2279 %in.1 = load <16 x float>, ptr addrspace(1) %arg2280 %c.1 = load <4 x half>, ptr addrspace(1) %c2281 %c2p = getelementptr <4 x half>, ptr addrspace(1) %c, i64 12282 %c.2 = load <4 x half>, ptr addrspace(1) %c2p2283 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.32x32x8f16(<4 x half> %c.1, <4 x half> %c.2, <16 x float> %in.1, i32 1, i32 2, i32 3)2284 store <16 x float> %mai.1, ptr addrspace(1) %arg2285 ret void2286}2287 2288define amdgpu_kernel void @test_mfma_f32_16x16x16f16(ptr addrspace(1) %arg, ptr addrspace(1) %c) #0 {2289; NOLIT-SRCC-LABEL: test_mfma_f32_16x16x16f16:2290; NOLIT-SRCC: ; %bb.0: ; %bb2291; NOLIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x242292; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 02293; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2294; NOLIT-SRCC-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x02295; NOLIT-SRCC-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02296; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2297; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s42298; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s82299; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s52300; NOLIT-SRCC-NEXT: v_mov_b32_e32 v6, s92301; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v52302; NOLIT-SRCC-NEXT: v_mov_b32_e32 v7, s102303; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s112304; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v62305; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v72306; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v52307; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s62308; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s72309; NOLIT-SRCC-NEXT: s_nop 12310; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x16f16 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:32311; NOLIT-SRCC-NEXT: s_nop 92312; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a02313; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a12314; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a22315; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a32316; NOLIT-SRCC-NEXT: s_nop 12317; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2318; NOLIT-SRCC-NEXT: s_endpgm2319;2320; LIT-SRCC-LABEL: test_mfma_f32_16x16x16f16:2321; LIT-SRCC: ; %bb.0: ; %bb2322; LIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x242323; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 02324; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2325; LIT-SRCC-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x02326; LIT-SRCC-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02327; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2328; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s42329; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s82330; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s52331; LIT-SRCC-NEXT: v_mov_b32_e32 v6, s92332; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v52333; LIT-SRCC-NEXT: v_mov_b32_e32 v7, s102334; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s112335; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v62336; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v72337; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v52338; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s62339; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s72340; LIT-SRCC-NEXT: s_nop 12341; LIT-SRCC-NEXT: v_mfma_f32_16x16x16f16 a[0:3], v[0:1], v[2:3], a[0:3] cbsz:1 abid:2 blgp:32342; LIT-SRCC-NEXT: s_nop 92343; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a02344; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a12345; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a22346; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a32347; LIT-SRCC-NEXT: s_nop 12348; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2349; LIT-SRCC-NEXT: s_endpgm2350;2351; GFX90A-LABEL: test_mfma_f32_16x16x16f16:2352; GFX90A: ; %bb.0: ; %bb2353; GFX90A-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x242354; GFX90A-NEXT: v_mov_b32_e32 v0, 02355; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2356; GFX90A-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x02357; GFX90A-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02358; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2359; GFX90A-NEXT: v_mov_b32_e32 v2, s42360; GFX90A-NEXT: v_mov_b32_e32 v3, s52361; GFX90A-NEXT: v_accvgpr_write_b32 a0, s82362; GFX90A-NEXT: v_mov_b32_e32 v4, s62363; GFX90A-NEXT: v_mov_b32_e32 v5, s72364; GFX90A-NEXT: v_accvgpr_write_b32 a1, s92365; GFX90A-NEXT: v_accvgpr_write_b32 a2, s102366; GFX90A-NEXT: v_accvgpr_write_b32 a3, s112367; GFX90A-NEXT: s_nop 12368; GFX90A-NEXT: v_mfma_f32_16x16x16f16 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:32369; GFX90A-NEXT: s_nop 102370; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2371; GFX90A-NEXT: s_endpgm2372;2373; GFX942-LABEL: test_mfma_f32_16x16x16f16:2374; GFX942: ; %bb.0: ; %bb2375; GFX942-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x242376; GFX942-NEXT: v_mov_b32_e32 v0, 02377; GFX942-NEXT: s_waitcnt lgkmcnt(0)2378; GFX942-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x02379; GFX942-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02380; GFX942-NEXT: s_waitcnt lgkmcnt(0)2381; GFX942-NEXT: v_mov_b32_e32 v2, s42382; GFX942-NEXT: v_mov_b32_e32 v3, s52383; GFX942-NEXT: v_accvgpr_write_b32 a0, s82384; GFX942-NEXT: v_mov_b32_e32 v4, s62385; GFX942-NEXT: v_mov_b32_e32 v5, s72386; GFX942-NEXT: v_accvgpr_write_b32 a1, s92387; GFX942-NEXT: v_accvgpr_write_b32 a2, s102388; GFX942-NEXT: v_accvgpr_write_b32 a3, s112389; GFX942-NEXT: s_nop 12390; GFX942-NEXT: v_mfma_f32_16x16x16_f16 a[0:3], v[2:3], v[4:5], a[0:3] cbsz:1 abid:2 blgp:32391; GFX942-NEXT: s_nop 62392; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]2393; GFX942-NEXT: s_endpgm2394;2395; GFX942-VGPR-LABEL: test_mfma_f32_16x16x16f16:2396; GFX942-VGPR: ; %bb.0: ; %bb2397; GFX942-VGPR-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x242398; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 02399; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2400; GFX942-VGPR-NEXT: s_load_dwordx4 s[4:7], s[2:3], 0x02401; GFX942-VGPR-NEXT: s_load_dwordx4 s[8:11], s[0:1], 0x02402; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2403; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, s42404; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, s52405; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[8:9]2406; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, s62407; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, s72408; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[10:11]2409; GFX942-VGPR-NEXT: s_nop 12410; GFX942-VGPR-NEXT: v_mfma_f32_16x16x16_f16 v[0:3], v[6:7], v[8:9], v[0:3] cbsz:1 abid:2 blgp:32411; GFX942-VGPR-NEXT: s_nop 62412; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2413; GFX942-VGPR-NEXT: s_endpgm2414bb:2415 %in.1 = load <4 x float>, ptr addrspace(1) %arg2416 %c.1 = load <4 x half>, ptr addrspace(1) %c2417 %c2p = getelementptr <4 x half>, ptr addrspace(1) %c, i64 12418 %c.2 = load <4 x half>, ptr addrspace(1) %c2p2419 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.16x16x16f16(<4 x half> %c.1, <4 x half> %c.2, <4 x float> %in.1, i32 1, i32 2, i32 3)2420 store <4 x float> %mai.1, ptr addrspace(1) %arg2421 ret void2422}2423 2424define amdgpu_kernel void @test_mfma_i32_32x32x4i8(ptr addrspace(1) %arg) #0 {2425; NOLIT-SRCC-LABEL: test_mfma_i32_32x32x4i8:2426; NOLIT-SRCC: ; %bb.0: ; %bb2427; NOLIT-SRCC-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x242428; NOLIT-SRCC-NEXT: v_mov_b32_e32 v16, 02429; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2430; NOLIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x02431; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x402432; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2433; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s162434; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s172435; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s182436; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v02437; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v12438; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v22439; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s212440; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s222441; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s232442; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v02443; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v12444; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v22445; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s242446; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s252447; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s262448; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v02449; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v12450; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v22451; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s272452; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s282453; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s292454; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v02455; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v12456; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v22457; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s302458; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s312459; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s02460; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v02461; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v12462; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v22463; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s12464; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s22465; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s32466; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v02467; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v12468; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v22469; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s42470; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s52471; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s62472; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v02473; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v12474; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v22475; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s72476; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s82477; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s92478; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s192479; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v02480; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v12481; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v22482; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s102483; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s112484; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s122485; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s202486; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v32487; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v02488; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v12489; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v22490; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s132491; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s142492; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s152493; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, 12494; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v42495; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v02496; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v12497; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v22498; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 22499; NOLIT-SRCC-NEXT: s_nop 12500; NOLIT-SRCC-NEXT: v_mfma_i32_32x32x4i8 a[0:31], v3, v0, a[0:31] cbsz:1 abid:2 blgp:32501; NOLIT-SRCC-NEXT: s_nop 152502; NOLIT-SRCC-NEXT: s_nop 12503; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a272504; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a262505; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a252506; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a242507; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a72508; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a62509; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:962510; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a52511; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a312512; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a302513; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a292514; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a282515; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a42516; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a32517; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:1122518; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a22519; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a192520; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a182521; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a172522; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a162523; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a12524; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a02525; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:642526; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a152527; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a232528; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a222529; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a212530; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a202531; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a142532; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a132533; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:802534; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a122535; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a112536; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a102537; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a92538; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a82539; NOLIT-SRCC-NEXT: s_nop 12540; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:322541; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[34:35] offset:482542; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[34:35]2543; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[34:35] offset:162544; NOLIT-SRCC-NEXT: s_endpgm2545;2546; LIT-SRCC-LABEL: test_mfma_i32_32x32x4i8:2547; LIT-SRCC: ; %bb.0: ; %bb2548; LIT-SRCC-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x242549; LIT-SRCC-NEXT: v_mov_b32_e32 v16, 02550; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2551; LIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x02552; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x402553; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2554; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s162555; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s172556; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s182557; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v02558; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v12559; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v22560; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s212561; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s222562; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s232563; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v02564; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v12565; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v22566; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s242567; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s252568; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s262569; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v02570; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v12571; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v22572; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s272573; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s282574; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s292575; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v02576; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v12577; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v22578; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s302579; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s312580; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s02581; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v02582; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v12583; LIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v22584; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s12585; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s22586; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s32587; LIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v02588; LIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v12589; LIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v22590; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s42591; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s52592; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s62593; LIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v02594; LIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v12595; LIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v22596; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s72597; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s82598; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s92599; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s192600; LIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v02601; LIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v12602; LIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v22603; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s102604; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s112605; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s122606; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s202607; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v32608; LIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v02609; LIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v12610; LIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v22611; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s132612; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s142613; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s152614; LIT-SRCC-NEXT: v_mov_b32_e32 v3, 12615; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v42616; LIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v02617; LIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v12618; LIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v22619; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 22620; LIT-SRCC-NEXT: s_nop 12621; LIT-SRCC-NEXT: v_mfma_i32_32x32x4i8 a[0:31], v3, v0, a[0:31] cbsz:1 abid:2 blgp:32622; LIT-SRCC-NEXT: s_nop 152623; LIT-SRCC-NEXT: s_nop 12624; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a272625; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a262626; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a252627; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a242628; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a72629; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a62630; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:962631; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a52632; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a312633; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a302634; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a292635; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a282636; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a42637; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a32638; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:1122639; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a22640; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a192641; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a182642; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a172643; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a162644; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a12645; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a02646; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:642647; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a152648; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a232649; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a222650; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a212651; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a202652; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a142653; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a132654; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:802655; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a122656; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a112657; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a102658; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a92659; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a82660; LIT-SRCC-NEXT: s_nop 12661; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[34:35] offset:322662; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[34:35] offset:482663; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[34:35]2664; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[34:35] offset:162665; LIT-SRCC-NEXT: s_endpgm2666;2667; GFX90A-LABEL: test_mfma_i32_32x32x4i8:2668; GFX90A: ; %bb.0: ; %bb2669; GFX90A-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x242670; GFX90A-NEXT: v_mov_b32_e32 v1, 12671; GFX90A-NEXT: v_mov_b32_e32 v2, 22672; GFX90A-NEXT: v_mov_b32_e32 v0, 02673; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2674; GFX90A-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x02675; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x402676; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2677; GFX90A-NEXT: v_accvgpr_write_b32 a0, s162678; GFX90A-NEXT: v_accvgpr_write_b32 a1, s172679; GFX90A-NEXT: v_accvgpr_write_b32 a2, s182680; GFX90A-NEXT: v_accvgpr_write_b32 a3, s192681; GFX90A-NEXT: v_accvgpr_write_b32 a4, s202682; GFX90A-NEXT: v_accvgpr_write_b32 a5, s212683; GFX90A-NEXT: v_accvgpr_write_b32 a6, s222684; GFX90A-NEXT: v_accvgpr_write_b32 a7, s232685; GFX90A-NEXT: v_accvgpr_write_b32 a8, s242686; GFX90A-NEXT: v_accvgpr_write_b32 a9, s252687; GFX90A-NEXT: v_accvgpr_write_b32 a10, s262688; GFX90A-NEXT: v_accvgpr_write_b32 a11, s272689; GFX90A-NEXT: v_accvgpr_write_b32 a12, s282690; GFX90A-NEXT: v_accvgpr_write_b32 a13, s292691; GFX90A-NEXT: v_accvgpr_write_b32 a14, s302692; GFX90A-NEXT: v_accvgpr_write_b32 a15, s312693; GFX90A-NEXT: v_accvgpr_write_b32 a16, s02694; GFX90A-NEXT: v_accvgpr_write_b32 a17, s12695; GFX90A-NEXT: v_accvgpr_write_b32 a18, s22696; GFX90A-NEXT: v_accvgpr_write_b32 a19, s32697; GFX90A-NEXT: v_accvgpr_write_b32 a20, s42698; GFX90A-NEXT: v_accvgpr_write_b32 a21, s52699; GFX90A-NEXT: v_accvgpr_write_b32 a22, s62700; GFX90A-NEXT: v_accvgpr_write_b32 a23, s72701; GFX90A-NEXT: v_accvgpr_write_b32 a24, s82702; GFX90A-NEXT: v_accvgpr_write_b32 a25, s92703; GFX90A-NEXT: v_accvgpr_write_b32 a26, s102704; GFX90A-NEXT: v_accvgpr_write_b32 a27, s112705; GFX90A-NEXT: v_accvgpr_write_b32 a28, s122706; GFX90A-NEXT: v_accvgpr_write_b32 a29, s132707; GFX90A-NEXT: v_accvgpr_write_b32 a30, s142708; GFX90A-NEXT: v_accvgpr_write_b32 a31, s152709; GFX90A-NEXT: s_nop 12710; GFX90A-NEXT: v_mfma_i32_32x32x4i8 a[0:31], v1, v2, a[0:31] cbsz:1 abid:2 blgp:32711; GFX90A-NEXT: s_nop 152712; GFX90A-NEXT: s_nop 22713; GFX90A-NEXT: global_store_dwordx4 v0, a[24:27], s[34:35] offset:962714; GFX90A-NEXT: global_store_dwordx4 v0, a[28:31], s[34:35] offset:1122715; GFX90A-NEXT: global_store_dwordx4 v0, a[16:19], s[34:35] offset:642716; GFX90A-NEXT: global_store_dwordx4 v0, a[20:23], s[34:35] offset:802717; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[34:35] offset:322718; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[34:35] offset:482719; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[34:35]2720; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[34:35] offset:162721; GFX90A-NEXT: s_endpgm2722;2723; GFX942-LABEL: test_mfma_i32_32x32x4i8:2724; GFX942: ; %bb.0: ; %bb2725; GFX942-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x242726; GFX942-NEXT: v_mov_b32_e32 v1, 12727; GFX942-NEXT: v_mov_b32_e32 v2, 22728; GFX942-NEXT: v_mov_b32_e32 v0, 02729; GFX942-NEXT: s_waitcnt lgkmcnt(0)2730; GFX942-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x02731; GFX942-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x402732; GFX942-NEXT: s_waitcnt lgkmcnt(0)2733; GFX942-NEXT: v_accvgpr_write_b32 a0, s162734; GFX942-NEXT: v_accvgpr_write_b32 a1, s172735; GFX942-NEXT: v_accvgpr_write_b32 a2, s182736; GFX942-NEXT: v_accvgpr_write_b32 a3, s192737; GFX942-NEXT: v_accvgpr_write_b32 a4, s202738; GFX942-NEXT: v_accvgpr_write_b32 a5, s212739; GFX942-NEXT: v_accvgpr_write_b32 a6, s222740; GFX942-NEXT: v_accvgpr_write_b32 a7, s232741; GFX942-NEXT: v_accvgpr_write_b32 a8, s242742; GFX942-NEXT: v_accvgpr_write_b32 a9, s252743; GFX942-NEXT: v_accvgpr_write_b32 a10, s262744; GFX942-NEXT: v_accvgpr_write_b32 a11, s272745; GFX942-NEXT: v_accvgpr_write_b32 a12, s282746; GFX942-NEXT: v_accvgpr_write_b32 a13, s292747; GFX942-NEXT: v_accvgpr_write_b32 a14, s302748; GFX942-NEXT: v_accvgpr_write_b32 a15, s312749; GFX942-NEXT: v_accvgpr_write_b32 a16, s02750; GFX942-NEXT: v_accvgpr_write_b32 a17, s12751; GFX942-NEXT: v_accvgpr_write_b32 a18, s22752; GFX942-NEXT: v_accvgpr_write_b32 a19, s32753; GFX942-NEXT: v_accvgpr_write_b32 a20, s42754; GFX942-NEXT: v_accvgpr_write_b32 a21, s52755; GFX942-NEXT: v_accvgpr_write_b32 a22, s62756; GFX942-NEXT: v_accvgpr_write_b32 a23, s72757; GFX942-NEXT: v_accvgpr_write_b32 a24, s82758; GFX942-NEXT: v_accvgpr_write_b32 a25, s92759; GFX942-NEXT: v_accvgpr_write_b32 a26, s102760; GFX942-NEXT: v_accvgpr_write_b32 a27, s112761; GFX942-NEXT: v_accvgpr_write_b32 a28, s122762; GFX942-NEXT: v_accvgpr_write_b32 a29, s132763; GFX942-NEXT: v_accvgpr_write_b32 a30, s142764; GFX942-NEXT: v_accvgpr_write_b32 a31, s152765; GFX942-NEXT: s_nop 12766; GFX942-NEXT: v_mfma_i32_32x32x4_2b_i8 a[0:31], v1, v2, a[0:31] cbsz:1 abid:2 blgp:32767; GFX942-NEXT: s_nop 152768; GFX942-NEXT: s_nop 22769; GFX942-NEXT: global_store_dwordx4 v0, a[24:27], s[34:35] offset:962770; GFX942-NEXT: global_store_dwordx4 v0, a[28:31], s[34:35] offset:1122771; GFX942-NEXT: global_store_dwordx4 v0, a[16:19], s[34:35] offset:642772; GFX942-NEXT: global_store_dwordx4 v0, a[20:23], s[34:35] offset:802773; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[34:35] offset:322774; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[34:35] offset:482775; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[34:35]2776; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[34:35] offset:162777; GFX942-NEXT: s_endpgm2778;2779; GFX942-VGPR-LABEL: test_mfma_i32_32x32x4i8:2780; GFX942-VGPR: ; %bb.0: ; %bb2781; GFX942-VGPR-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x242782; GFX942-VGPR-NEXT: v_mov_b32_e32 v33, 12783; GFX942-VGPR-NEXT: v_mov_b32_e32 v34, 22784; GFX942-VGPR-NEXT: v_mov_b32_e32 v32, 02785; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2786; GFX942-VGPR-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x02787; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x402788; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)2789; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, s162790; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, s172791; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, s182792; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, s192793; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, s202794; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, s212795; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, s222796; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, s232797; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, s242798; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, s252799; GFX942-VGPR-NEXT: v_mov_b32_e32 v10, s262800; GFX942-VGPR-NEXT: v_mov_b32_e32 v11, s272801; GFX942-VGPR-NEXT: v_mov_b32_e32 v12, s282802; GFX942-VGPR-NEXT: v_mov_b32_e32 v13, s292803; GFX942-VGPR-NEXT: v_mov_b32_e32 v14, s302804; GFX942-VGPR-NEXT: v_mov_b32_e32 v15, s312805; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, s02806; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, s12807; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, s22808; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, s32809; GFX942-VGPR-NEXT: v_mov_b32_e32 v20, s42810; GFX942-VGPR-NEXT: v_mov_b32_e32 v21, s52811; GFX942-VGPR-NEXT: v_mov_b32_e32 v22, s62812; GFX942-VGPR-NEXT: v_mov_b32_e32 v23, s72813; GFX942-VGPR-NEXT: v_mov_b32_e32 v24, s82814; GFX942-VGPR-NEXT: v_mov_b32_e32 v25, s92815; GFX942-VGPR-NEXT: v_mov_b32_e32 v26, s102816; GFX942-VGPR-NEXT: v_mov_b32_e32 v27, s112817; GFX942-VGPR-NEXT: v_mov_b32_e32 v28, s122818; GFX942-VGPR-NEXT: v_mov_b32_e32 v29, s132819; GFX942-VGPR-NEXT: v_mov_b32_e32 v30, s142820; GFX942-VGPR-NEXT: v_mov_b32_e32 v31, s152821; GFX942-VGPR-NEXT: s_nop 12822; GFX942-VGPR-NEXT: v_mfma_i32_32x32x4_2b_i8 v[0:31], v33, v34, v[0:31] cbsz:1 abid:2 blgp:32823; GFX942-VGPR-NEXT: s_nop 152824; GFX942-VGPR-NEXT: s_nop 22825; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[24:27], s[34:35] offset:962826; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[28:31], s[34:35] offset:1122827; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[16:19], s[34:35] offset:642828; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[20:23], s[34:35] offset:802829; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[8:11], s[34:35] offset:322830; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[12:15], s[34:35] offset:482831; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[0:3], s[34:35]2832; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[4:7], s[34:35] offset:162833; GFX942-VGPR-NEXT: s_endpgm2834bb:2835 %in.1 = load <32 x i32>, ptr addrspace(1) %arg2836 %mai.1 = tail call <32 x i32> @llvm.amdgcn.mfma.i32.32x32x4i8(i32 1, i32 2, <32 x i32> %in.1, i32 1, i32 2, i32 3)2837 store <32 x i32> %mai.1, ptr addrspace(1) %arg2838 ret void2839}2840 2841define amdgpu_kernel void @test_mfma_i32_16x16x4i8(ptr addrspace(1) %arg) #0 {2842; NOLIT-SRCC-LABEL: test_mfma_i32_16x16x4i8:2843; NOLIT-SRCC: ; %bb.0: ; %bb2844; NOLIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x242845; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 12846; NOLIT-SRCC-NEXT: v_mov_b32_e32 v16, 02847; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2848; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02849; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2850; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s02851; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s12852; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s22853; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v172854; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s32855; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v12856; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v22857; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v172858; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s42859; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s52860; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s62861; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v12862; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v22863; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v172864; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s72865; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s82866; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s92867; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v12868; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v22869; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v172870; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s102871; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s112872; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s122873; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v12874; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v22875; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v172876; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s132877; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s142878; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s152879; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v12880; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v22881; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v172882; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 22883; NOLIT-SRCC-NEXT: s_nop 12884; NOLIT-SRCC-NEXT: v_mfma_i32_16x16x4i8 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:32885; NOLIT-SRCC-NEXT: s_nop 92886; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a152887; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a142888; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a132889; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a122890; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a32891; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a22892; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a12893; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a02894; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a72895; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a62896; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a52897; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a42898; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a112899; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a102900; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a92901; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a82902; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:482903; NOLIT-SRCC-NEXT: s_nop 02904; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:322905; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:162906; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]2907; NOLIT-SRCC-NEXT: s_endpgm2908;2909; LIT-SRCC-LABEL: test_mfma_i32_16x16x4i8:2910; LIT-SRCC: ; %bb.0: ; %bb2911; LIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x242912; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 12913; LIT-SRCC-NEXT: v_mov_b32_e32 v16, 02914; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2915; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02916; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)2917; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s02918; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s12919; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s22920; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v172921; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s32922; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v12923; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v22924; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v172925; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s42926; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s52927; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s62928; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v12929; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v22930; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v172931; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s72932; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s82933; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s92934; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v12935; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v22936; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v172937; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s102938; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s112939; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s122940; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v12941; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v22942; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v172943; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s132944; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s142945; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s152946; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v12947; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v22948; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v172949; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 22950; LIT-SRCC-NEXT: s_nop 12951; LIT-SRCC-NEXT: v_mfma_i32_16x16x4i8 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:32952; LIT-SRCC-NEXT: s_nop 92953; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a152954; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a142955; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a132956; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a122957; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a32958; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a22959; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a12960; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a02961; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a72962; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a62963; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a52964; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a42965; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a112966; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a102967; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a92968; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a82969; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:482970; LIT-SRCC-NEXT: s_nop 02971; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:322972; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:162973; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]2974; LIT-SRCC-NEXT: s_endpgm2975;2976; GFX90A-LABEL: test_mfma_i32_16x16x4i8:2977; GFX90A: ; %bb.0: ; %bb2978; GFX90A-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x242979; GFX90A-NEXT: v_mov_b32_e32 v0, 12980; GFX90A-NEXT: v_mov_b32_e32 v1, 22981; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2982; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x02983; GFX90A-NEXT: s_waitcnt lgkmcnt(0)2984; GFX90A-NEXT: v_accvgpr_write_b32 a0, s02985; GFX90A-NEXT: v_accvgpr_write_b32 a1, s12986; GFX90A-NEXT: v_accvgpr_write_b32 a2, s22987; GFX90A-NEXT: v_accvgpr_write_b32 a3, s32988; GFX90A-NEXT: v_accvgpr_write_b32 a4, s42989; GFX90A-NEXT: v_accvgpr_write_b32 a5, s52990; GFX90A-NEXT: v_accvgpr_write_b32 a6, s62991; GFX90A-NEXT: v_accvgpr_write_b32 a7, s72992; GFX90A-NEXT: v_accvgpr_write_b32 a8, s82993; GFX90A-NEXT: v_accvgpr_write_b32 a9, s92994; GFX90A-NEXT: v_accvgpr_write_b32 a10, s102995; GFX90A-NEXT: v_accvgpr_write_b32 a11, s112996; GFX90A-NEXT: v_accvgpr_write_b32 a12, s122997; GFX90A-NEXT: v_accvgpr_write_b32 a13, s132998; GFX90A-NEXT: v_accvgpr_write_b32 a14, s142999; GFX90A-NEXT: v_accvgpr_write_b32 a15, s153000; GFX90A-NEXT: s_nop 13001; GFX90A-NEXT: v_mfma_i32_16x16x4i8 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:33002; GFX90A-NEXT: v_mov_b32_e32 v0, 03003; GFX90A-NEXT: s_nop 93004; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:483005; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:323006; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:163007; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]3008; GFX90A-NEXT: s_endpgm3009;3010; GFX942-LABEL: test_mfma_i32_16x16x4i8:3011; GFX942: ; %bb.0: ; %bb3012; GFX942-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x243013; GFX942-NEXT: v_mov_b32_e32 v0, 13014; GFX942-NEXT: v_mov_b32_e32 v1, 23015; GFX942-NEXT: s_waitcnt lgkmcnt(0)3016; GFX942-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x03017; GFX942-NEXT: s_waitcnt lgkmcnt(0)3018; GFX942-NEXT: v_accvgpr_write_b32 a0, s03019; GFX942-NEXT: v_accvgpr_write_b32 a1, s13020; GFX942-NEXT: v_accvgpr_write_b32 a2, s23021; GFX942-NEXT: v_accvgpr_write_b32 a3, s33022; GFX942-NEXT: v_accvgpr_write_b32 a4, s43023; GFX942-NEXT: v_accvgpr_write_b32 a5, s53024; GFX942-NEXT: v_accvgpr_write_b32 a6, s63025; GFX942-NEXT: v_accvgpr_write_b32 a7, s73026; GFX942-NEXT: v_accvgpr_write_b32 a8, s83027; GFX942-NEXT: v_accvgpr_write_b32 a9, s93028; GFX942-NEXT: v_accvgpr_write_b32 a10, s103029; GFX942-NEXT: v_accvgpr_write_b32 a11, s113030; GFX942-NEXT: v_accvgpr_write_b32 a12, s123031; GFX942-NEXT: v_accvgpr_write_b32 a13, s133032; GFX942-NEXT: v_accvgpr_write_b32 a14, s143033; GFX942-NEXT: v_accvgpr_write_b32 a15, s153034; GFX942-NEXT: s_nop 13035; GFX942-NEXT: v_mfma_i32_16x16x4_4b_i8 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:33036; GFX942-NEXT: v_mov_b32_e32 v0, 03037; GFX942-NEXT: s_nop 93038; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:483039; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:323040; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:163041; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]3042; GFX942-NEXT: s_endpgm3043;3044; GFX942-VGPR-LABEL: test_mfma_i32_16x16x4i8:3045; GFX942-VGPR: ; %bb.0: ; %bb3046; GFX942-VGPR-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x243047; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 13048; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, 23049; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3050; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x03051; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3052; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3053; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3054; GFX942-VGPR-NEXT: v_mov_b64_e32 v[4:5], s[4:5]3055; GFX942-VGPR-NEXT: v_mov_b64_e32 v[6:7], s[6:7]3056; GFX942-VGPR-NEXT: v_mov_b64_e32 v[8:9], s[8:9]3057; GFX942-VGPR-NEXT: v_mov_b64_e32 v[10:11], s[10:11]3058; GFX942-VGPR-NEXT: v_mov_b64_e32 v[12:13], s[12:13]3059; GFX942-VGPR-NEXT: v_mov_b64_e32 v[14:15], s[14:15]3060; GFX942-VGPR-NEXT: s_nop 13061; GFX942-VGPR-NEXT: v_mfma_i32_16x16x4_4b_i8 v[0:15], v16, v17, v[0:15] cbsz:1 abid:2 blgp:33062; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 03063; GFX942-VGPR-NEXT: s_nop 93064; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:483065; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:323066; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:163067; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]3068; GFX942-VGPR-NEXT: s_endpgm3069bb:3070 %in.1 = load <16 x i32>, ptr addrspace(1) %arg3071 %mai.1 = tail call <16 x i32> @llvm.amdgcn.mfma.i32.16x16x4i8(i32 1, i32 2, <16 x i32> %in.1, i32 1, i32 2, i32 3)3072 store <16 x i32> %mai.1, ptr addrspace(1) %arg3073 ret void3074}3075 3076define amdgpu_kernel void @test_mfma_i32_16x16x4i8_splatimm_src2_64(ptr addrspace(1) %arg) #0 {3077; NOLIT-SRCC-LABEL: test_mfma_i32_16x16x4i8_splatimm_src2_64:3078; NOLIT-SRCC: ; %bb.0: ; %bb3079; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 13080; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 643081; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 643082; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 643083; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 643084; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 643085; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 643086; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 643087; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 643088; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 643089; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 643090; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 643091; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 643092; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 643093; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 643094; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 643095; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 643096; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 23097; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243098; NOLIT-SRCC-NEXT: v_mov_b32_e32 v16, 03099; NOLIT-SRCC-NEXT: v_mfma_i32_16x16x4i8 a[0:15], v0, v1, a[0:15] cbsz:1 abid:2 blgp:33100; NOLIT-SRCC-NEXT: s_nop 93101; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a153102; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a143103; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a133104; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a123105; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33106; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23107; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13108; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03109; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a73110; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a63111; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a53112; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a43113; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a113114; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a103115; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a93116; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a83117; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3118; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] offset:483119; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[0:1] offset:323120; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] offset:163121; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[0:1]3122; NOLIT-SRCC-NEXT: s_endpgm3123;3124; LIT-SRCC-LABEL: test_mfma_i32_16x16x4i8_splatimm_src2_64:3125; LIT-SRCC: ; %bb.0: ; %bb3126; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 13127; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 23128; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243129; LIT-SRCC-NEXT: v_mov_b32_e32 v16, 03130; LIT-SRCC-NEXT: v_mfma_i32_16x16x4i8 a[0:15], v0, v1, 64 cbsz:1 abid:2 blgp:33131; LIT-SRCC-NEXT: s_nop 93132; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a153133; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a143134; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a133135; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a123136; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33137; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23138; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13139; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03140; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a73141; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a63142; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a53143; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a43144; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a113145; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a103146; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a93147; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a83148; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3149; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] offset:483150; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[0:1] offset:323151; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] offset:163152; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[0:1]3153; LIT-SRCC-NEXT: s_endpgm3154;3155; GFX90A-LABEL: test_mfma_i32_16x16x4i8_splatimm_src2_64:3156; GFX90A: ; %bb.0: ; %bb3157; GFX90A-NEXT: v_mov_b32_e32 v0, 13158; GFX90A-NEXT: v_mov_b32_e32 v1, 23159; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243160; GFX90A-NEXT: s_nop 03161; GFX90A-NEXT: v_mfma_i32_16x16x4i8 a[0:15], v0, v1, 64 cbsz:1 abid:2 blgp:33162; GFX90A-NEXT: v_mov_b32_e32 v0, 03163; GFX90A-NEXT: s_waitcnt lgkmcnt(0)3164; GFX90A-NEXT: s_nop 83165; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:483166; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:323167; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:163168; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3169; GFX90A-NEXT: s_endpgm3170;3171; GFX942-LABEL: test_mfma_i32_16x16x4i8_splatimm_src2_64:3172; GFX942: ; %bb.0: ; %bb3173; GFX942-NEXT: v_mov_b32_e32 v0, 13174; GFX942-NEXT: v_mov_b32_e32 v1, 23175; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243176; GFX942-NEXT: s_nop 03177; GFX942-NEXT: v_mfma_i32_16x16x4_4b_i8 a[0:15], v0, v1, 64 cbsz:1 abid:2 blgp:33178; GFX942-NEXT: v_mov_b32_e32 v0, 03179; GFX942-NEXT: s_waitcnt lgkmcnt(0)3180; GFX942-NEXT: s_nop 83181; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:483182; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:323183; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:163184; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3185; GFX942-NEXT: s_endpgm3186;3187; GFX942-VGPR-LABEL: test_mfma_i32_16x16x4i8_splatimm_src2_64:3188; GFX942-VGPR: ; %bb.0: ; %bb3189; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 13190; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, 23191; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243192; GFX942-VGPR-NEXT: s_nop 03193; GFX942-VGPR-NEXT: v_mfma_i32_16x16x4_4b_i8 v[0:15], v16, v17, 64 cbsz:1 abid:2 blgp:33194; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 03195; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3196; GFX942-VGPR-NEXT: s_nop 83197; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] offset:483198; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[0:1] offset:323199; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] offset:163200; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[0:1]3201; GFX942-VGPR-NEXT: s_endpgm3202bb:3203 %in.1 = load <16 x i32>, ptr addrspace(1) %arg3204 %mai.1 = tail call <16 x i32> @llvm.amdgcn.mfma.i32.16x16x4i8(i32 1, i32 2, <16 x i32> splat (i32 64), i32 1, i32 2, i32 3)3205 store <16 x i32> %mai.1, ptr addrspace(1) %arg3206 ret void3207}3208 3209define amdgpu_kernel void @test_mfma_i32_4x4x4i8(ptr addrspace(1) %arg) #0 {3210; NOLIT-SRCC-LABEL: test_mfma_i32_4x4x4i8:3211; NOLIT-SRCC: ; %bb.0: ; %bb3212; NOLIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243213; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 13214; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 23215; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 03216; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3217; NOLIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03218; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3219; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s03220; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s13221; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s23222; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v53223; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s33224; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v23225; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v33226; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v53227; NOLIT-SRCC-NEXT: s_nop 03228; NOLIT-SRCC-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v0, v1, a[0:3] cbsz:1 abid:2 blgp:33229; NOLIT-SRCC-NEXT: s_nop 33230; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03231; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13232; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23233; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33234; NOLIT-SRCC-NEXT: s_nop 13235; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]3236; NOLIT-SRCC-NEXT: s_endpgm3237;3238; LIT-SRCC-LABEL: test_mfma_i32_4x4x4i8:3239; LIT-SRCC: ; %bb.0: ; %bb3240; LIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243241; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 13242; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 23243; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 03244; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3245; LIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03246; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3247; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s03248; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s13249; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s23250; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v53251; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s33252; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v23253; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v33254; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v53255; LIT-SRCC-NEXT: s_nop 03256; LIT-SRCC-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v0, v1, a[0:3] cbsz:1 abid:2 blgp:33257; LIT-SRCC-NEXT: s_nop 33258; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03259; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13260; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23261; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33262; LIT-SRCC-NEXT: s_nop 13263; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]3264; LIT-SRCC-NEXT: s_endpgm3265;3266; GFX90A-LABEL: test_mfma_i32_4x4x4i8:3267; GFX90A: ; %bb.0: ; %bb3268; GFX90A-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243269; GFX90A-NEXT: v_mov_b32_e32 v0, 13270; GFX90A-NEXT: v_mov_b32_e32 v2, 23271; GFX90A-NEXT: v_mov_b32_e32 v1, 03272; GFX90A-NEXT: s_waitcnt lgkmcnt(0)3273; GFX90A-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03274; GFX90A-NEXT: s_waitcnt lgkmcnt(0)3275; GFX90A-NEXT: v_accvgpr_write_b32 a0, s03276; GFX90A-NEXT: v_accvgpr_write_b32 a1, s13277; GFX90A-NEXT: v_accvgpr_write_b32 a2, s23278; GFX90A-NEXT: v_accvgpr_write_b32 a3, s33279; GFX90A-NEXT: s_nop 13280; GFX90A-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v0, v2, a[0:3] cbsz:1 abid:2 blgp:33281; GFX90A-NEXT: s_nop 43282; GFX90A-NEXT: global_store_dwordx4 v1, a[0:3], s[6:7]3283; GFX90A-NEXT: s_endpgm3284;3285; GFX942-LABEL: test_mfma_i32_4x4x4i8:3286; GFX942: ; %bb.0: ; %bb3287; GFX942-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243288; GFX942-NEXT: v_mov_b32_e32 v0, 13289; GFX942-NEXT: v_mov_b32_e32 v2, 23290; GFX942-NEXT: v_mov_b32_e32 v1, 03291; GFX942-NEXT: s_waitcnt lgkmcnt(0)3292; GFX942-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03293; GFX942-NEXT: s_waitcnt lgkmcnt(0)3294; GFX942-NEXT: v_accvgpr_write_b32 a0, s03295; GFX942-NEXT: v_accvgpr_write_b32 a1, s13296; GFX942-NEXT: v_accvgpr_write_b32 a2, s23297; GFX942-NEXT: v_accvgpr_write_b32 a3, s33298; GFX942-NEXT: s_nop 13299; GFX942-NEXT: v_mfma_i32_4x4x4_16b_i8 a[0:3], v0, v2, a[0:3] cbsz:1 abid:2 blgp:33300; GFX942-NEXT: s_nop 43301; GFX942-NEXT: global_store_dwordx4 v1, a[0:3], s[6:7]3302; GFX942-NEXT: s_endpgm3303;3304; GFX942-VGPR-LABEL: test_mfma_i32_4x4x4i8:3305; GFX942-VGPR: ; %bb.0: ; %bb3306; GFX942-VGPR-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x243307; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 13308; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, 23309; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, 03310; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3311; GFX942-VGPR-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x03312; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3313; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]3314; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]3315; GFX942-VGPR-NEXT: s_nop 13316; GFX942-VGPR-NEXT: v_mfma_i32_4x4x4_16b_i8 v[0:3], v4, v6, v[0:3] cbsz:1 abid:2 blgp:33317; GFX942-VGPR-NEXT: s_nop 43318; GFX942-VGPR-NEXT: global_store_dwordx4 v5, v[0:3], s[6:7]3319; GFX942-VGPR-NEXT: s_endpgm3320bb:3321 %in.1 = load <4 x i32>, ptr addrspace(1) %arg3322 %mai.1 = tail call <4 x i32> @llvm.amdgcn.mfma.i32.4x4x4i8(i32 1, i32 2, <4 x i32> %in.1, i32 1, i32 2, i32 3)3323 store <4 x i32> %mai.1, ptr addrspace(1) %arg3324 ret void3325}3326 3327define amdgpu_kernel void @test_mfma_i32_4x4x4i8_splat_imm_src2_1(ptr addrspace(1) %arg) #0 {3328; NOLIT-SRCC-LABEL: test_mfma_i32_4x4x4i8_splat_imm_src2_1:3329; NOLIT-SRCC: ; %bb.0: ; %bb3330; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 13331; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 13332; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 13333; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 13334; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 13335; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243336; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 23337; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 03338; NOLIT-SRCC-NEXT: s_nop 03339; NOLIT-SRCC-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v0, v1, a[0:3] cbsz:1 abid:2 blgp:33340; NOLIT-SRCC-NEXT: s_nop 33341; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03342; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13343; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23344; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33345; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3346; NOLIT-SRCC-NEXT: s_nop 03347; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3348; NOLIT-SRCC-NEXT: s_endpgm3349;3350; LIT-SRCC-LABEL: test_mfma_i32_4x4x4i8_splat_imm_src2_1:3351; LIT-SRCC: ; %bb.0: ; %bb3352; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 13353; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243354; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 23355; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 03356; LIT-SRCC-NEXT: s_nop 03357; LIT-SRCC-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v0, v1, 1 cbsz:1 abid:2 blgp:33358; LIT-SRCC-NEXT: s_nop 33359; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03360; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13361; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23362; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33363; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3364; LIT-SRCC-NEXT: s_nop 03365; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3366; LIT-SRCC-NEXT: s_endpgm3367;3368; GFX90A-LABEL: test_mfma_i32_4x4x4i8_splat_imm_src2_1:3369; GFX90A: ; %bb.0: ; %bb3370; GFX90A-NEXT: v_mov_b32_e32 v0, 13371; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243372; GFX90A-NEXT: v_mov_b32_e32 v2, 23373; GFX90A-NEXT: v_mov_b32_e32 v1, 03374; GFX90A-NEXT: s_nop 03375; GFX90A-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v0, v2, 1 cbsz:1 abid:2 blgp:33376; GFX90A-NEXT: s_waitcnt lgkmcnt(0)3377; GFX90A-NEXT: s_nop 33378; GFX90A-NEXT: global_store_dwordx4 v1, a[0:3], s[0:1]3379; GFX90A-NEXT: s_endpgm3380;3381; GFX942-LABEL: test_mfma_i32_4x4x4i8_splat_imm_src2_1:3382; GFX942: ; %bb.0: ; %bb3383; GFX942-NEXT: v_mov_b32_e32 v0, 13384; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243385; GFX942-NEXT: v_mov_b32_e32 v2, 23386; GFX942-NEXT: v_mov_b32_e32 v1, 03387; GFX942-NEXT: s_nop 03388; GFX942-NEXT: v_mfma_i32_4x4x4_16b_i8 a[0:3], v0, v2, 1 cbsz:1 abid:2 blgp:33389; GFX942-NEXT: s_waitcnt lgkmcnt(0)3390; GFX942-NEXT: s_nop 33391; GFX942-NEXT: global_store_dwordx4 v1, a[0:3], s[0:1]3392; GFX942-NEXT: s_endpgm3393;3394; GFX942-VGPR-LABEL: test_mfma_i32_4x4x4i8_splat_imm_src2_1:3395; GFX942-VGPR: ; %bb.0: ; %bb3396; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 13397; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243398; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, 23399; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 03400; GFX942-VGPR-NEXT: s_nop 03401; GFX942-VGPR-NEXT: v_mfma_i32_4x4x4_16b_i8 v[0:3], v0, v1, 1 cbsz:1 abid:2 blgp:33402; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3403; GFX942-VGPR-NEXT: s_nop 33404; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3405; GFX942-VGPR-NEXT: s_endpgm3406bb:3407 %in.1 = load <4 x i32>, ptr addrspace(1) %arg3408 %mai.1 = tail call <4 x i32> @llvm.amdgcn.mfma.i32.4x4x4i8(i32 1, i32 2, <4 x i32> splat (i32 1), i32 1, i32 2, i32 3)3409 store <4 x i32> %mai.1, ptr addrspace(1) %arg3410 ret void3411}3412 3413define amdgpu_kernel void @test_mfma_i32_4x4x4i8_splat_k_src2_1(ptr addrspace(1) %arg) #0 {3414; NOLIT-SRCC-LABEL: test_mfma_i32_4x4x4i8_splat_k_src2_1:3415; NOLIT-SRCC: ; %bb.0:3416; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 0x413417; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 13418; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243419; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v03420; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v03421; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v03422; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v03423; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 23424; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 03425; NOLIT-SRCC-NEXT: s_nop 03426; NOLIT-SRCC-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v1, v0, a[0:3] cbsz:1 abid:2 blgp:33427; NOLIT-SRCC-NEXT: s_nop 33428; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03429; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13430; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23431; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33432; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3433; NOLIT-SRCC-NEXT: s_nop 03434; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3435; NOLIT-SRCC-NEXT: s_endpgm3436;3437; LIT-SRCC-LABEL: test_mfma_i32_4x4x4i8_splat_k_src2_1:3438; LIT-SRCC: ; %bb.0:3439; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 0x413440; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 13441; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243442; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v03443; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v03444; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v03445; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v03446; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 23447; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 03448; LIT-SRCC-NEXT: s_nop 03449; LIT-SRCC-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v1, v0, a[0:3] cbsz:1 abid:2 blgp:33450; LIT-SRCC-NEXT: s_nop 33451; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03452; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13453; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23454; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33455; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3456; LIT-SRCC-NEXT: s_nop 03457; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3458; LIT-SRCC-NEXT: s_endpgm3459;3460; GFX90A-LABEL: test_mfma_i32_4x4x4i8_splat_k_src2_1:3461; GFX90A: ; %bb.0:3462; GFX90A-NEXT: v_mov_b32_e32 v1, 0x413463; GFX90A-NEXT: v_accvgpr_write_b32 a0, v13464; GFX90A-NEXT: v_mov_b32_e32 v1, 13465; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243466; GFX90A-NEXT: v_accvgpr_mov_b32 a1, a03467; GFX90A-NEXT: v_accvgpr_mov_b32 a2, a03468; GFX90A-NEXT: v_accvgpr_mov_b32 a3, a03469; GFX90A-NEXT: v_mov_b32_e32 v2, 23470; GFX90A-NEXT: v_mov_b32_e32 v0, 03471; GFX90A-NEXT: s_nop 03472; GFX90A-NEXT: v_mfma_i32_4x4x4i8 a[0:3], v1, v2, a[0:3] cbsz:1 abid:2 blgp:33473; GFX90A-NEXT: s_waitcnt lgkmcnt(0)3474; GFX90A-NEXT: s_nop 33475; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3476; GFX90A-NEXT: s_endpgm3477;3478; GFX942-LABEL: test_mfma_i32_4x4x4i8_splat_k_src2_1:3479; GFX942: ; %bb.0:3480; GFX942-NEXT: v_mov_b32_e32 v1, 0x413481; GFX942-NEXT: v_accvgpr_write_b32 a0, v13482; GFX942-NEXT: v_mov_b32_e32 v1, 13483; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243484; GFX942-NEXT: v_accvgpr_mov_b32 a1, a03485; GFX942-NEXT: v_accvgpr_mov_b32 a2, a03486; GFX942-NEXT: v_accvgpr_mov_b32 a3, a03487; GFX942-NEXT: v_mov_b32_e32 v2, 23488; GFX942-NEXT: v_mov_b32_e32 v0, 03489; GFX942-NEXT: s_nop 03490; GFX942-NEXT: v_mfma_i32_4x4x4_16b_i8 a[0:3], v1, v2, a[0:3] cbsz:1 abid:2 blgp:33491; GFX942-NEXT: s_waitcnt lgkmcnt(0)3492; GFX942-NEXT: s_nop 33493; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]3494; GFX942-NEXT: s_endpgm3495;3496; GFX942-VGPR-LABEL: test_mfma_i32_4x4x4i8_splat_k_src2_1:3497; GFX942-VGPR: ; %bb.0:3498; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, 13499; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x243500; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 0x413501; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, v03502; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, v03503; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, v03504; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, 23505; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 03506; GFX942-VGPR-NEXT: s_nop 03507; GFX942-VGPR-NEXT: v_mfma_i32_4x4x4_16b_i8 v[0:3], v5, v6, v[0:3] cbsz:1 abid:2 blgp:33508; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3509; GFX942-VGPR-NEXT: s_nop 33510; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3511; GFX942-VGPR-NEXT: s_endpgm3512 %in.1 = load <4 x i32>, ptr addrspace(1) %arg3513 %mai.1 = tail call <4 x i32> @llvm.amdgcn.mfma.i32.4x4x4i8(i32 1, i32 2, <4 x i32> splat (i32 65), i32 1, i32 2, i32 3)3514 store <4 x i32> %mai.1, ptr addrspace(1) %arg3515 ret void3516}3517 3518define amdgpu_kernel void @test_mfma_f32_32x32x1f32_forward_acc(ptr addrspace(1) %arg) #0 {3519; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_forward_acc:3520; NOLIT-SRCC: ; %bb.0: ; %bb3521; NOLIT-SRCC-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x243522; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3523; NOLIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x03524; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x403525; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3526; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s163527; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s173528; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s183529; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v03530; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v13531; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s223532; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s233533; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v23534; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v03535; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v13536; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s243537; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s253538; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s263539; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v03540; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v13541; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v23542; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s273543; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s283544; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s293545; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v03546; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v13547; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v23548; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s303549; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s313550; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s03551; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v03552; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v13553; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v23554; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s13555; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s23556; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s33557; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v03558; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v13559; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v23560; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s43561; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s53562; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s63563; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v03564; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v13565; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v23566; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s73567; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s83568; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s93569; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s193570; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v03571; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v13572; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v23573; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s103574; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s113575; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s123576; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, s203577; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s213578; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v33579; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v03580; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v13581; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v23582; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, s133583; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s143584; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s153585; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, 1.03586; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v43587; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v53588; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v03589; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v13590; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v23591; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 2.03592; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 03593; NOLIT-SRCC-NEXT: s_nop 03594; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v3, v0, a[0:31]3595; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v3, v0, a[0:31]3596; NOLIT-SRCC-NEXT: s_nop 153597; NOLIT-SRCC-NEXT: s_nop 13598; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a273599; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a263600; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a253601; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a243602; NOLIT-SRCC-NEXT: s_nop 13603; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:963604; NOLIT-SRCC-NEXT: s_nop 03605; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a313606; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a303607; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a293608; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a283609; NOLIT-SRCC-NEXT: s_nop 13610; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:1123611; NOLIT-SRCC-NEXT: s_nop 03612; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a193613; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a183614; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a173615; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a163616; NOLIT-SRCC-NEXT: s_nop 13617; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:643618; NOLIT-SRCC-NEXT: s_nop 03619; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a233620; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a223621; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a213622; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a203623; NOLIT-SRCC-NEXT: s_nop 13624; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:803625; NOLIT-SRCC-NEXT: s_nop 03626; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a113627; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a103628; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a93629; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a83630; NOLIT-SRCC-NEXT: s_nop 13631; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:323632; NOLIT-SRCC-NEXT: s_nop 03633; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a153634; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a143635; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a133636; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a123637; NOLIT-SRCC-NEXT: s_nop 13638; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:483639; NOLIT-SRCC-NEXT: s_nop 03640; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33641; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23642; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13643; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03644; NOLIT-SRCC-NEXT: s_nop 13645; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35]3646; NOLIT-SRCC-NEXT: s_nop 03647; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a73648; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a63649; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a53650; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a43651; NOLIT-SRCC-NEXT: s_nop 13652; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:163653; NOLIT-SRCC-NEXT: s_endpgm3654;3655; LIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_forward_acc:3656; LIT-SRCC: ; %bb.0: ; %bb3657; LIT-SRCC-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x243658; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3659; LIT-SRCC-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x03660; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x403661; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3662; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s163663; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s173664; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s183665; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v03666; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v13667; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s223668; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s233669; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v23670; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v03671; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v13672; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s243673; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s253674; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s263675; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v03676; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v13677; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v23678; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s273679; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s283680; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s293681; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v03682; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v13683; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v23684; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s303685; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s313686; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s03687; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v03688; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v13689; LIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v23690; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s13691; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s23692; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s33693; LIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v03694; LIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v13695; LIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v23696; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s43697; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s53698; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s63699; LIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v03700; LIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v13701; LIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v23702; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s73703; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s83704; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s93705; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s193706; LIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v03707; LIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v13708; LIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v23709; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s103710; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s113711; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s123712; LIT-SRCC-NEXT: v_mov_b32_e32 v4, s203713; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s213714; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v33715; LIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v03716; LIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v13717; LIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v23718; LIT-SRCC-NEXT: v_mov_b32_e32 v0, s133719; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s143720; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s153721; LIT-SRCC-NEXT: v_mov_b32_e32 v3, 1.03722; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v43723; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v53724; LIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v03725; LIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v13726; LIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v23727; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 2.03728; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 03729; LIT-SRCC-NEXT: s_nop 03730; LIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v3, v0, a[0:31]3731; LIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v3, v0, a[0:31]3732; LIT-SRCC-NEXT: s_nop 153733; LIT-SRCC-NEXT: s_nop 13734; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a273735; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a263736; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a253737; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a243738; LIT-SRCC-NEXT: s_nop 13739; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:963740; LIT-SRCC-NEXT: s_nop 03741; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a313742; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a303743; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a293744; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a283745; LIT-SRCC-NEXT: s_nop 13746; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:1123747; LIT-SRCC-NEXT: s_nop 03748; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a193749; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a183750; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a173751; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a163752; LIT-SRCC-NEXT: s_nop 13753; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:643754; LIT-SRCC-NEXT: s_nop 03755; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a233756; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a223757; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a213758; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a203759; LIT-SRCC-NEXT: s_nop 13760; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:803761; LIT-SRCC-NEXT: s_nop 03762; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a113763; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a103764; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a93765; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a83766; LIT-SRCC-NEXT: s_nop 13767; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:323768; LIT-SRCC-NEXT: s_nop 03769; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a153770; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a143771; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a133772; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a123773; LIT-SRCC-NEXT: s_nop 13774; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:483775; LIT-SRCC-NEXT: s_nop 03776; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a33777; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a23778; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a13779; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a03780; LIT-SRCC-NEXT: s_nop 13781; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35]3782; LIT-SRCC-NEXT: s_nop 03783; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a73784; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a63785; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a53786; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a43787; LIT-SRCC-NEXT: s_nop 13788; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[34:35] offset:163789; LIT-SRCC-NEXT: s_endpgm3790;3791; GFX90A-LABEL: test_mfma_f32_32x32x1f32_forward_acc:3792; GFX90A: ; %bb.0: ; %bb3793; GFX90A-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x243794; GFX90A-NEXT: v_mov_b32_e32 v0, 1.03795; GFX90A-NEXT: v_mov_b32_e32 v1, 2.03796; GFX90A-NEXT: s_waitcnt lgkmcnt(0)3797; GFX90A-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x03798; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x403799; GFX90A-NEXT: s_waitcnt lgkmcnt(0)3800; GFX90A-NEXT: v_accvgpr_write_b32 a0, s163801; GFX90A-NEXT: v_accvgpr_write_b32 a1, s173802; GFX90A-NEXT: v_accvgpr_write_b32 a2, s183803; GFX90A-NEXT: v_accvgpr_write_b32 a3, s193804; GFX90A-NEXT: v_accvgpr_write_b32 a4, s203805; GFX90A-NEXT: v_accvgpr_write_b32 a5, s213806; GFX90A-NEXT: v_accvgpr_write_b32 a6, s223807; GFX90A-NEXT: v_accvgpr_write_b32 a7, s233808; GFX90A-NEXT: v_accvgpr_write_b32 a8, s243809; GFX90A-NEXT: v_accvgpr_write_b32 a9, s253810; GFX90A-NEXT: v_accvgpr_write_b32 a10, s263811; GFX90A-NEXT: v_accvgpr_write_b32 a11, s273812; GFX90A-NEXT: v_accvgpr_write_b32 a12, s283813; GFX90A-NEXT: v_accvgpr_write_b32 a13, s293814; GFX90A-NEXT: v_accvgpr_write_b32 a14, s303815; GFX90A-NEXT: v_accvgpr_write_b32 a15, s313816; GFX90A-NEXT: v_accvgpr_write_b32 a16, s03817; GFX90A-NEXT: v_accvgpr_write_b32 a17, s13818; GFX90A-NEXT: v_accvgpr_write_b32 a18, s23819; GFX90A-NEXT: v_accvgpr_write_b32 a19, s33820; GFX90A-NEXT: v_accvgpr_write_b32 a20, s43821; GFX90A-NEXT: v_accvgpr_write_b32 a21, s53822; GFX90A-NEXT: v_accvgpr_write_b32 a22, s63823; GFX90A-NEXT: v_accvgpr_write_b32 a23, s73824; GFX90A-NEXT: v_accvgpr_write_b32 a24, s83825; GFX90A-NEXT: v_accvgpr_write_b32 a25, s93826; GFX90A-NEXT: v_accvgpr_write_b32 a26, s103827; GFX90A-NEXT: v_accvgpr_write_b32 a27, s113828; GFX90A-NEXT: v_accvgpr_write_b32 a28, s123829; GFX90A-NEXT: v_accvgpr_write_b32 a29, s133830; GFX90A-NEXT: v_accvgpr_write_b32 a30, s143831; GFX90A-NEXT: v_accvgpr_write_b32 a31, s153832; GFX90A-NEXT: s_nop 13833; GFX90A-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, a[0:31]3834; GFX90A-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, a[0:31]3835; GFX90A-NEXT: v_mov_b32_e32 v0, 03836; GFX90A-NEXT: s_nop 153837; GFX90A-NEXT: s_nop 13838; GFX90A-NEXT: global_store_dwordx4 v0, a[24:27], s[34:35] offset:963839; GFX90A-NEXT: global_store_dwordx4 v0, a[28:31], s[34:35] offset:1123840; GFX90A-NEXT: global_store_dwordx4 v0, a[16:19], s[34:35] offset:643841; GFX90A-NEXT: global_store_dwordx4 v0, a[20:23], s[34:35] offset:803842; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[34:35] offset:323843; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[34:35] offset:483844; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[34:35]3845; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[34:35] offset:163846; GFX90A-NEXT: s_endpgm3847;3848; GFX942-LABEL: test_mfma_f32_32x32x1f32_forward_acc:3849; GFX942: ; %bb.0: ; %bb3850; GFX942-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x243851; GFX942-NEXT: v_mov_b32_e32 v0, 1.03852; GFX942-NEXT: v_mov_b32_e32 v1, 2.03853; GFX942-NEXT: s_waitcnt lgkmcnt(0)3854; GFX942-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x03855; GFX942-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x403856; GFX942-NEXT: s_waitcnt lgkmcnt(0)3857; GFX942-NEXT: v_accvgpr_write_b32 a0, s163858; GFX942-NEXT: v_accvgpr_write_b32 a1, s173859; GFX942-NEXT: v_accvgpr_write_b32 a2, s183860; GFX942-NEXT: v_accvgpr_write_b32 a3, s193861; GFX942-NEXT: v_accvgpr_write_b32 a4, s203862; GFX942-NEXT: v_accvgpr_write_b32 a5, s213863; GFX942-NEXT: v_accvgpr_write_b32 a6, s223864; GFX942-NEXT: v_accvgpr_write_b32 a7, s233865; GFX942-NEXT: v_accvgpr_write_b32 a8, s243866; GFX942-NEXT: v_accvgpr_write_b32 a9, s253867; GFX942-NEXT: v_accvgpr_write_b32 a10, s263868; GFX942-NEXT: v_accvgpr_write_b32 a11, s273869; GFX942-NEXT: v_accvgpr_write_b32 a12, s283870; GFX942-NEXT: v_accvgpr_write_b32 a13, s293871; GFX942-NEXT: v_accvgpr_write_b32 a14, s303872; GFX942-NEXT: v_accvgpr_write_b32 a15, s313873; GFX942-NEXT: v_accvgpr_write_b32 a16, s03874; GFX942-NEXT: v_accvgpr_write_b32 a17, s13875; GFX942-NEXT: v_accvgpr_write_b32 a18, s23876; GFX942-NEXT: v_accvgpr_write_b32 a19, s33877; GFX942-NEXT: v_accvgpr_write_b32 a20, s43878; GFX942-NEXT: v_accvgpr_write_b32 a21, s53879; GFX942-NEXT: v_accvgpr_write_b32 a22, s63880; GFX942-NEXT: v_accvgpr_write_b32 a23, s73881; GFX942-NEXT: v_accvgpr_write_b32 a24, s83882; GFX942-NEXT: v_accvgpr_write_b32 a25, s93883; GFX942-NEXT: v_accvgpr_write_b32 a26, s103884; GFX942-NEXT: v_accvgpr_write_b32 a27, s113885; GFX942-NEXT: v_accvgpr_write_b32 a28, s123886; GFX942-NEXT: v_accvgpr_write_b32 a29, s133887; GFX942-NEXT: v_accvgpr_write_b32 a30, s143888; GFX942-NEXT: v_accvgpr_write_b32 a31, s153889; GFX942-NEXT: s_nop 13890; GFX942-NEXT: v_mfma_f32_32x32x1_2b_f32 a[0:31], v0, v1, a[0:31]3891; GFX942-NEXT: v_mfma_f32_32x32x1_2b_f32 a[0:31], v0, v1, a[0:31]3892; GFX942-NEXT: v_mov_b32_e32 v0, 03893; GFX942-NEXT: s_nop 153894; GFX942-NEXT: s_nop 03895; GFX942-NEXT: global_store_dwordx4 v0, a[24:27], s[34:35] offset:963896; GFX942-NEXT: global_store_dwordx4 v0, a[28:31], s[34:35] offset:1123897; GFX942-NEXT: global_store_dwordx4 v0, a[16:19], s[34:35] offset:643898; GFX942-NEXT: global_store_dwordx4 v0, a[20:23], s[34:35] offset:803899; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[34:35] offset:323900; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[34:35] offset:483901; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[34:35]3902; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[34:35] offset:163903; GFX942-NEXT: s_endpgm3904;3905; GFX942-VGPR-LABEL: test_mfma_f32_32x32x1f32_forward_acc:3906; GFX942-VGPR: ; %bb.0: ; %bb3907; GFX942-VGPR-NEXT: s_load_dwordx2 s[34:35], s[4:5], 0x243908; GFX942-VGPR-NEXT: v_mov_b32_e32 v32, 1.03909; GFX942-VGPR-NEXT: v_mov_b32_e32 v33, 2.03910; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3911; GFX942-VGPR-NEXT: s_load_dwordx16 s[16:31], s[34:35], 0x03912; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[34:35], 0x403913; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)3914; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, s163915; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, s173916; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, s183917; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, s193918; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, s203919; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, s213920; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, s223921; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, s233922; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, s243923; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, s253924; GFX942-VGPR-NEXT: v_mov_b32_e32 v10, s263925; GFX942-VGPR-NEXT: v_mov_b32_e32 v11, s273926; GFX942-VGPR-NEXT: v_mov_b32_e32 v12, s283927; GFX942-VGPR-NEXT: v_mov_b32_e32 v13, s293928; GFX942-VGPR-NEXT: v_mov_b32_e32 v14, s303929; GFX942-VGPR-NEXT: v_mov_b32_e32 v15, s313930; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, s03931; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, s13932; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, s23933; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, s33934; GFX942-VGPR-NEXT: v_mov_b32_e32 v20, s43935; GFX942-VGPR-NEXT: v_mov_b32_e32 v21, s53936; GFX942-VGPR-NEXT: v_mov_b32_e32 v22, s63937; GFX942-VGPR-NEXT: v_mov_b32_e32 v23, s73938; GFX942-VGPR-NEXT: v_mov_b32_e32 v24, s83939; GFX942-VGPR-NEXT: v_mov_b32_e32 v25, s93940; GFX942-VGPR-NEXT: v_mov_b32_e32 v26, s103941; GFX942-VGPR-NEXT: v_mov_b32_e32 v27, s113942; GFX942-VGPR-NEXT: v_mov_b32_e32 v28, s123943; GFX942-VGPR-NEXT: v_mov_b32_e32 v29, s133944; GFX942-VGPR-NEXT: v_mov_b32_e32 v30, s143945; GFX942-VGPR-NEXT: v_mov_b32_e32 v31, s153946; GFX942-VGPR-NEXT: s_nop 13947; GFX942-VGPR-NEXT: v_mfma_f32_32x32x1_2b_f32 v[0:31], v32, v33, v[0:31]3948; GFX942-VGPR-NEXT: v_mfma_f32_32x32x1_2b_f32 v[0:31], v32, v33, v[0:31]3949; GFX942-VGPR-NEXT: v_mov_b32_e32 v32, 03950; GFX942-VGPR-NEXT: s_nop 153951; GFX942-VGPR-NEXT: s_nop 03952; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[24:27], s[34:35] offset:963953; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[28:31], s[34:35] offset:1123954; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[16:19], s[34:35] offset:643955; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[20:23], s[34:35] offset:803956; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[8:11], s[34:35] offset:323957; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[12:15], s[34:35] offset:483958; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[0:3], s[34:35]3959; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[4:7], s[34:35] offset:163960; GFX942-VGPR-NEXT: s_endpgm3961bb:3962 %in.1 = load <32 x float>, ptr addrspace(1) %arg3963 %mai.1 = tail call <32 x float> @llvm.amdgcn.mfma.f32.32x32x1f32(float 1.0, float 2.0, <32 x float> %in.1, i32 0, i32 0, i32 0)3964 %mai.2 = tail call <32 x float> @llvm.amdgcn.mfma.f32.32x32x1f32(float 1.0, float 2.0, <32 x float> %mai.1, i32 0, i32 0, i32 0)3965 store <32 x float> %mai.2, ptr addrspace(1) %arg3966 ret void3967}3968 3969define amdgpu_kernel void @test_mfma_f32_16x16x1f32_forward_acc(ptr addrspace(1) %arg) #0 {3970; NOLIT-SRCC-LABEL: test_mfma_f32_16x16x1f32_forward_acc:3971; NOLIT-SRCC: ; %bb.0: ; %bb3972; NOLIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x243973; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.03974; NOLIT-SRCC-NEXT: v_mov_b32_e32 v16, 03975; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3976; NOLIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x03977; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)3978; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s03979; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s13980; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s23981; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v173982; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s33983; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v13984; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v23985; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v173986; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s43987; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s53988; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s63989; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v13990; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v23991; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v173992; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s73993; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s83994; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s93995; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v13996; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v23997; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v173998; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s103999; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s114000; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s124001; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v14002; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v24003; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v174004; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, s134005; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s144006; NOLIT-SRCC-NEXT: v_mov_b32_e32 v17, s154007; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v14008; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v24009; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v174010; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04011; NOLIT-SRCC-NEXT: s_nop 14012; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]4013; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]4014; NOLIT-SRCC-NEXT: s_nop 94015; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154016; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144017; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134018; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124019; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a114020; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a104021; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a94022; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a84023; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a74024; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a64025; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a54026; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a44027; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a34028; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a24029; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a14030; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a04031; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17] offset:484032; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:324033; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:164034; NOLIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]4035; NOLIT-SRCC-NEXT: s_endpgm4036;4037; LIT-SRCC-LABEL: test_mfma_f32_16x16x1f32_forward_acc:4038; LIT-SRCC: ; %bb.0: ; %bb4039; LIT-SRCC-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x244040; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04041; LIT-SRCC-NEXT: v_mov_b32_e32 v16, 04042; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4043; LIT-SRCC-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x04044; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4045; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s04046; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s14047; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s24048; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v174049; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s34050; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v14051; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v24052; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v174053; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s44054; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s54055; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s64056; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v14057; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v24058; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v174059; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s74060; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s84061; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s94062; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v14063; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v24064; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v174065; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s104066; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s114067; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s124068; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v14069; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v24070; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v174071; LIT-SRCC-NEXT: v_mov_b32_e32 v1, s134072; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s144073; LIT-SRCC-NEXT: v_mov_b32_e32 v17, s154074; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v14075; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v24076; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v174077; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04078; LIT-SRCC-NEXT: s_nop 14079; LIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]4080; LIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]4081; LIT-SRCC-NEXT: s_nop 94082; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154083; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144084; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134085; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124086; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a114087; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a104088; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a94089; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a84090; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a74091; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a64092; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a54093; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a44094; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a34095; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a24096; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a14097; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a04098; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17] offset:484099; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:324100; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:164101; LIT-SRCC-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17]4102; LIT-SRCC-NEXT: s_endpgm4103;4104; GFX90A-LABEL: test_mfma_f32_16x16x1f32_forward_acc:4105; GFX90A: ; %bb.0: ; %bb4106; GFX90A-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x244107; GFX90A-NEXT: v_mov_b32_e32 v0, 1.04108; GFX90A-NEXT: v_mov_b32_e32 v1, 2.04109; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4110; GFX90A-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x04111; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4112; GFX90A-NEXT: v_accvgpr_write_b32 a0, s04113; GFX90A-NEXT: v_accvgpr_write_b32 a1, s14114; GFX90A-NEXT: v_accvgpr_write_b32 a2, s24115; GFX90A-NEXT: v_accvgpr_write_b32 a3, s34116; GFX90A-NEXT: v_accvgpr_write_b32 a4, s44117; GFX90A-NEXT: v_accvgpr_write_b32 a5, s54118; GFX90A-NEXT: v_accvgpr_write_b32 a6, s64119; GFX90A-NEXT: v_accvgpr_write_b32 a7, s74120; GFX90A-NEXT: v_accvgpr_write_b32 a8, s84121; GFX90A-NEXT: v_accvgpr_write_b32 a9, s94122; GFX90A-NEXT: v_accvgpr_write_b32 a10, s104123; GFX90A-NEXT: v_accvgpr_write_b32 a11, s114124; GFX90A-NEXT: v_accvgpr_write_b32 a12, s124125; GFX90A-NEXT: v_accvgpr_write_b32 a13, s134126; GFX90A-NEXT: v_accvgpr_write_b32 a14, s144127; GFX90A-NEXT: v_accvgpr_write_b32 a15, s154128; GFX90A-NEXT: s_nop 14129; GFX90A-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]4130; GFX90A-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]4131; GFX90A-NEXT: v_mov_b32_e32 v0, 04132; GFX90A-NEXT: s_nop 94133; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:484134; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:324135; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:164136; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]4137; GFX90A-NEXT: s_endpgm4138;4139; GFX942-LABEL: test_mfma_f32_16x16x1f32_forward_acc:4140; GFX942: ; %bb.0: ; %bb4141; GFX942-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x244142; GFX942-NEXT: v_mov_b32_e32 v0, 1.04143; GFX942-NEXT: v_mov_b32_e32 v1, 2.04144; GFX942-NEXT: s_waitcnt lgkmcnt(0)4145; GFX942-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x04146; GFX942-NEXT: s_waitcnt lgkmcnt(0)4147; GFX942-NEXT: v_accvgpr_write_b32 a0, s04148; GFX942-NEXT: v_accvgpr_write_b32 a1, s14149; GFX942-NEXT: v_accvgpr_write_b32 a2, s24150; GFX942-NEXT: v_accvgpr_write_b32 a3, s34151; GFX942-NEXT: v_accvgpr_write_b32 a4, s44152; GFX942-NEXT: v_accvgpr_write_b32 a5, s54153; GFX942-NEXT: v_accvgpr_write_b32 a6, s64154; GFX942-NEXT: v_accvgpr_write_b32 a7, s74155; GFX942-NEXT: v_accvgpr_write_b32 a8, s84156; GFX942-NEXT: v_accvgpr_write_b32 a9, s94157; GFX942-NEXT: v_accvgpr_write_b32 a10, s104158; GFX942-NEXT: v_accvgpr_write_b32 a11, s114159; GFX942-NEXT: v_accvgpr_write_b32 a12, s124160; GFX942-NEXT: v_accvgpr_write_b32 a13, s134161; GFX942-NEXT: v_accvgpr_write_b32 a14, s144162; GFX942-NEXT: v_accvgpr_write_b32 a15, s154163; GFX942-NEXT: s_nop 14164; GFX942-NEXT: v_mfma_f32_16x16x1_4b_f32 a[0:15], v0, v1, a[0:15]4165; GFX942-NEXT: v_mfma_f32_16x16x1_4b_f32 a[0:15], v0, v1, a[0:15]4166; GFX942-NEXT: v_mov_b32_e32 v0, 04167; GFX942-NEXT: s_nop 84168; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[16:17] offset:484169; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[16:17] offset:324170; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[16:17] offset:164171; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[16:17]4172; GFX942-NEXT: s_endpgm4173;4174; GFX942-VGPR-LABEL: test_mfma_f32_16x16x1f32_forward_acc:4175; GFX942-VGPR: ; %bb.0: ; %bb4176; GFX942-VGPR-NEXT: s_load_dwordx2 s[16:17], s[4:5], 0x244177; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 1.04178; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, 2.04179; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4180; GFX942-VGPR-NEXT: s_load_dwordx16 s[0:15], s[16:17], 0x04181; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4182; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4183; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4184; GFX942-VGPR-NEXT: v_mov_b64_e32 v[4:5], s[4:5]4185; GFX942-VGPR-NEXT: v_mov_b64_e32 v[6:7], s[6:7]4186; GFX942-VGPR-NEXT: v_mov_b64_e32 v[8:9], s[8:9]4187; GFX942-VGPR-NEXT: v_mov_b64_e32 v[10:11], s[10:11]4188; GFX942-VGPR-NEXT: v_mov_b64_e32 v[12:13], s[12:13]4189; GFX942-VGPR-NEXT: v_mov_b64_e32 v[14:15], s[14:15]4190; GFX942-VGPR-NEXT: s_nop 14191; GFX942-VGPR-NEXT: v_mfma_f32_16x16x1_4b_f32 v[0:15], v16, v17, v[0:15]4192; GFX942-VGPR-NEXT: v_mfma_f32_16x16x1_4b_f32 v[0:15], v16, v17, v[0:15]4193; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 04194; GFX942-VGPR-NEXT: s_nop 84195; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[16:17] offset:484196; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[16:17] offset:324197; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[16:17] offset:164198; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[16:17]4199; GFX942-VGPR-NEXT: s_endpgm4200bb:4201 %in.1 = load <16 x float>, ptr addrspace(1) %arg4202 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.16x16x1f32(float 1.0, float 2.0, <16 x float> %in.1, i32 0, i32 0, i32 0)4203 %mai.2 = tail call <16 x float> @llvm.amdgcn.mfma.f32.16x16x1f32(float 1.0, float 2.0, <16 x float> %mai.1, i32 0, i32 0, i32 0)4204 store <16 x float> %mai.2, ptr addrspace(1) %arg4205 ret void4206}4207 4208define amdgpu_kernel void @test_mfma_f32_4x4x1f32_forward_acc(ptr addrspace(1) %arg) #0 {4209; NOLIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_forward_acc:4210; NOLIT-SRCC: ; %bb.0: ; %bb4211; NOLIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x244212; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04213; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04214; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 04215; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4216; NOLIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x04217; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4218; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s04219; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, s14220; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, s24221; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v54222; NOLIT-SRCC-NEXT: v_mov_b32_e32 v5, s34223; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v24224; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v34225; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v54226; NOLIT-SRCC-NEXT: s_nop 04227; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4228; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4229; NOLIT-SRCC-NEXT: s_nop 34230; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04231; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14232; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24233; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34234; NOLIT-SRCC-NEXT: s_nop 14235; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]4236; NOLIT-SRCC-NEXT: s_endpgm4237;4238; LIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_forward_acc:4239; LIT-SRCC: ; %bb.0: ; %bb4240; LIT-SRCC-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x244241; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04242; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04243; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 04244; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4245; LIT-SRCC-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x04246; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4247; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s04248; LIT-SRCC-NEXT: v_mov_b32_e32 v2, s14249; LIT-SRCC-NEXT: v_mov_b32_e32 v3, s24250; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v54251; LIT-SRCC-NEXT: v_mov_b32_e32 v5, s34252; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v24253; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v34254; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v54255; LIT-SRCC-NEXT: s_nop 04256; LIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4257; LIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4258; LIT-SRCC-NEXT: s_nop 34259; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04260; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14261; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24262; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34263; LIT-SRCC-NEXT: s_nop 14264; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[6:7]4265; LIT-SRCC-NEXT: s_endpgm4266;4267; GFX90A-LABEL: test_mfma_f32_4x4x1f32_forward_acc:4268; GFX90A: ; %bb.0: ; %bb4269; GFX90A-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x244270; GFX90A-NEXT: v_mov_b32_e32 v0, 1.04271; GFX90A-NEXT: v_mov_b32_e32 v1, 2.04272; GFX90A-NEXT: v_mov_b32_e32 v2, 04273; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4274; GFX90A-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x04275; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4276; GFX90A-NEXT: v_accvgpr_write_b32 a0, s04277; GFX90A-NEXT: v_accvgpr_write_b32 a1, s14278; GFX90A-NEXT: v_accvgpr_write_b32 a2, s24279; GFX90A-NEXT: v_accvgpr_write_b32 a3, s34280; GFX90A-NEXT: s_nop 14281; GFX90A-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4282; GFX90A-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4283; GFX90A-NEXT: s_nop 44284; GFX90A-NEXT: global_store_dwordx4 v2, a[0:3], s[6:7]4285; GFX90A-NEXT: s_endpgm4286;4287; GFX942-LABEL: test_mfma_f32_4x4x1f32_forward_acc:4288; GFX942: ; %bb.0: ; %bb4289; GFX942-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x244290; GFX942-NEXT: v_mov_b32_e32 v0, 1.04291; GFX942-NEXT: v_mov_b32_e32 v1, 2.04292; GFX942-NEXT: v_mov_b32_e32 v2, 04293; GFX942-NEXT: s_waitcnt lgkmcnt(0)4294; GFX942-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x04295; GFX942-NEXT: s_waitcnt lgkmcnt(0)4296; GFX942-NEXT: v_accvgpr_write_b32 a0, s04297; GFX942-NEXT: v_accvgpr_write_b32 a1, s14298; GFX942-NEXT: v_accvgpr_write_b32 a2, s24299; GFX942-NEXT: v_accvgpr_write_b32 a3, s34300; GFX942-NEXT: s_nop 14301; GFX942-NEXT: v_mfma_f32_4x4x1_16b_f32 a[0:3], v0, v1, a[0:3]4302; GFX942-NEXT: s_nop 14303; GFX942-NEXT: v_mfma_f32_4x4x1_16b_f32 a[0:3], v0, v1, a[0:3]4304; GFX942-NEXT: s_nop 34305; GFX942-NEXT: global_store_dwordx4 v2, a[0:3], s[6:7]4306; GFX942-NEXT: s_endpgm4307;4308; GFX942-VGPR-LABEL: test_mfma_f32_4x4x1f32_forward_acc:4309; GFX942-VGPR: ; %bb.0: ; %bb4310; GFX942-VGPR-NEXT: s_load_dwordx2 s[6:7], s[4:5], 0x244311; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 1.04312; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, 2.04313; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, 04314; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4315; GFX942-VGPR-NEXT: s_load_dwordx4 s[0:3], s[6:7], 0x04316; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4317; GFX942-VGPR-NEXT: v_mov_b64_e32 v[0:1], s[0:1]4318; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], s[2:3]4319; GFX942-VGPR-NEXT: s_nop 14320; GFX942-VGPR-NEXT: v_mfma_f32_4x4x1_16b_f32 v[0:3], v4, v5, v[0:3]4321; GFX942-VGPR-NEXT: s_nop 14322; GFX942-VGPR-NEXT: v_mfma_f32_4x4x1_16b_f32 v[0:3], v4, v5, v[0:3]4323; GFX942-VGPR-NEXT: s_nop 34324; GFX942-VGPR-NEXT: global_store_dwordx4 v6, v[0:3], s[6:7]4325; GFX942-VGPR-NEXT: s_endpgm4326bb:4327 %in.1 = load <4 x float>, ptr addrspace(1) %arg4328 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float 1.0, float 2.0, <4 x float> %in.1, i32 0, i32 0, i32 0)4329 %mai.2 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float 1.0, float 2.0, <4 x float> %mai.1, i32 0, i32 0, i32 0)4330 store <4 x float> %mai.2, ptr addrspace(1) %arg4331 ret void4332}4333 4334define amdgpu_kernel void @test_mfma_f32_4x4x1f32_imm_splat(ptr addrspace(1) %arg) #0 {4335; NOLIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_imm_splat:4336; NOLIT-SRCC: ; %bb.0: ; %bb4337; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04338; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.04339; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 1.04340; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 1.04341; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 1.04342; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244343; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04344; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 04345; NOLIT-SRCC-NEXT: s_nop 04346; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4347; NOLIT-SRCC-NEXT: s_nop 34348; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04349; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14350; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24351; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34352; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4353; NOLIT-SRCC-NEXT: s_nop 04354; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4355; NOLIT-SRCC-NEXT: s_endpgm4356;4357; LIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_imm_splat:4358; LIT-SRCC: ; %bb.0: ; %bb4359; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04360; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244361; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04362; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 04363; LIT-SRCC-NEXT: s_nop 04364; LIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, 1.04365; LIT-SRCC-NEXT: s_nop 34366; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04367; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14368; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24369; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34370; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4371; LIT-SRCC-NEXT: s_nop 04372; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4373; LIT-SRCC-NEXT: s_endpgm4374;4375; GFX90A-LABEL: test_mfma_f32_4x4x1f32_imm_splat:4376; GFX90A: ; %bb.0: ; %bb4377; GFX90A-NEXT: v_mov_b32_e32 v0, 1.04378; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244379; GFX90A-NEXT: v_mov_b32_e32 v2, 2.04380; GFX90A-NEXT: v_mov_b32_e32 v1, 04381; GFX90A-NEXT: s_nop 04382; GFX90A-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v2, 1.04383; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4384; GFX90A-NEXT: s_nop 34385; GFX90A-NEXT: global_store_dwordx4 v1, a[0:3], s[0:1]4386; GFX90A-NEXT: s_endpgm4387;4388; GFX942-LABEL: test_mfma_f32_4x4x1f32_imm_splat:4389; GFX942: ; %bb.0: ; %bb4390; GFX942-NEXT: v_mov_b32_e32 v0, 1.04391; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244392; GFX942-NEXT: v_mov_b32_e32 v2, 2.04393; GFX942-NEXT: v_mov_b32_e32 v1, 04394; GFX942-NEXT: s_nop 04395; GFX942-NEXT: v_mfma_f32_4x4x1_16b_f32 a[0:3], v0, v2, 1.04396; GFX942-NEXT: s_waitcnt lgkmcnt(0)4397; GFX942-NEXT: s_nop 24398; GFX942-NEXT: global_store_dwordx4 v1, a[0:3], s[0:1]4399; GFX942-NEXT: s_endpgm4400;4401; GFX942-VGPR-LABEL: test_mfma_f32_4x4x1f32_imm_splat:4402; GFX942-VGPR: ; %bb.0: ; %bb4403; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 1.04404; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244405; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, 2.04406; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 04407; GFX942-VGPR-NEXT: s_nop 04408; GFX942-VGPR-NEXT: v_mfma_f32_4x4x1_16b_f32 v[0:3], v0, v1, 1.04409; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4410; GFX942-VGPR-NEXT: s_nop 24411; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4412; GFX942-VGPR-NEXT: s_endpgm4413bb:4414 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float 1.0, float 2.0, <4 x float> <float 1.0, float 1.0, float 1.0, float 1.0>, i32 0, i32 0, i32 0)4415 store <4 x float> %mai.1, ptr addrspace(1) %arg4416 ret void4417}4418 4419define amdgpu_kernel void @test_mfma_f32_16x16x1f32_imm_splat(ptr addrspace(1) %arg) #0 {4420; NOLIT-SRCC-LABEL: test_mfma_f32_16x16x1f32_imm_splat:4421; NOLIT-SRCC: ; %bb.0: ; %bb4422; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04423; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.04424; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 1.04425; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 1.04426; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 1.04427; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 1.04428; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 1.04429; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 1.04430; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 1.04431; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 1.04432; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 1.04433; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 1.04434; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 1.04435; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 1.04436; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 1.04437; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 1.04438; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 1.04439; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04440; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244441; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 04442; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]4443; NOLIT-SRCC-NEXT: s_nop 94444; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154445; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144446; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134447; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124448; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4449; NOLIT-SRCC-NEXT: s_nop 04450; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:484451; NOLIT-SRCC-NEXT: s_nop 04452; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a114453; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a104454; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a94455; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a84456; NOLIT-SRCC-NEXT: s_nop 14457; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:324458; NOLIT-SRCC-NEXT: s_nop 04459; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a74460; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a64461; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a54462; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a44463; NOLIT-SRCC-NEXT: s_nop 14464; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:164465; NOLIT-SRCC-NEXT: s_nop 04466; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34467; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24468; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14469; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04470; NOLIT-SRCC-NEXT: s_nop 14471; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4472; NOLIT-SRCC-NEXT: s_endpgm4473;4474; LIT-SRCC-LABEL: test_mfma_f32_16x16x1f32_imm_splat:4475; LIT-SRCC: ; %bb.0: ; %bb4476; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04477; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04478; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244479; LIT-SRCC-NEXT: v_mov_b32_e32 v8, 04480; LIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, 1.04481; LIT-SRCC-NEXT: s_nop 94482; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154483; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144484; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134485; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124486; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a114487; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a104488; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a94489; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a84490; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4491; LIT-SRCC-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:484492; LIT-SRCC-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1] offset:324493; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a74494; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a64495; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a54496; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a44497; LIT-SRCC-NEXT: s_nop 14498; LIT-SRCC-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1] offset:164499; LIT-SRCC-NEXT: s_nop 04500; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34501; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24502; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14503; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04504; LIT-SRCC-NEXT: s_nop 14505; LIT-SRCC-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]4506; LIT-SRCC-NEXT: s_endpgm4507;4508; GFX90A-LABEL: test_mfma_f32_16x16x1f32_imm_splat:4509; GFX90A: ; %bb.0: ; %bb4510; GFX90A-NEXT: v_mov_b32_e32 v0, 1.04511; GFX90A-NEXT: v_mov_b32_e32 v1, 2.04512; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244513; GFX90A-NEXT: s_nop 04514; GFX90A-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, 1.04515; GFX90A-NEXT: v_mov_b32_e32 v0, 04516; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4517; GFX90A-NEXT: s_nop 84518; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484519; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324520; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164521; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4522; GFX90A-NEXT: s_endpgm4523;4524; GFX942-LABEL: test_mfma_f32_16x16x1f32_imm_splat:4525; GFX942: ; %bb.0: ; %bb4526; GFX942-NEXT: v_mov_b32_e32 v0, 1.04527; GFX942-NEXT: v_mov_b32_e32 v1, 2.04528; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244529; GFX942-NEXT: s_nop 04530; GFX942-NEXT: v_mfma_f32_16x16x1_4b_f32 a[0:15], v0, v1, 1.04531; GFX942-NEXT: v_mov_b32_e32 v0, 04532; GFX942-NEXT: s_waitcnt lgkmcnt(0)4533; GFX942-NEXT: s_nop 74534; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484535; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324536; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164537; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4538; GFX942-NEXT: s_endpgm4539;4540; GFX942-VGPR-LABEL: test_mfma_f32_16x16x1f32_imm_splat:4541; GFX942-VGPR: ; %bb.0: ; %bb4542; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 1.04543; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, 2.04544; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244545; GFX942-VGPR-NEXT: s_nop 04546; GFX942-VGPR-NEXT: v_mfma_f32_16x16x1_4b_f32 v[0:15], v16, v17, 1.04547; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 04548; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4549; GFX942-VGPR-NEXT: s_nop 74550; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] offset:484551; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[0:1] offset:324552; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] offset:164553; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[0:1]4554; GFX942-VGPR-NEXT: s_endpgm4555bb:4556 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.16x16x1f32(float 1.0, float 2.0, <16 x float> <float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0>, i32 0, i32 0, i32 0)4557 store <16 x float> %mai.1, ptr addrspace(1) %arg4558 ret void4559}4560 4561define amdgpu_kernel void @test_mfma_f32_32x32x8f16_imm_splat(ptr addrspace(1) %arg) #0 {4562; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x8f16_imm_splat:4563; NOLIT-SRCC: ; %bb.0: ; %bb4564; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 0x3c003c004565; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, v04566; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.04567; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 1.04568; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 1.04569; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 1.04570; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 1.04571; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 1.04572; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 1.04573; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 1.04574; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 1.04575; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 1.04576; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 1.04577; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 1.04578; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 1.04579; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 1.04580; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 1.04581; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 1.04582; NOLIT-SRCC-NEXT: v_mov_b32_e32 v2, 0x400040004583; NOLIT-SRCC-NEXT: v_mov_b32_e32 v3, v24584; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244585; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 04586; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x8f16 a[0:15], v[0:1], v[2:3], a[0:15]4587; NOLIT-SRCC-NEXT: s_nop 154588; NOLIT-SRCC-NEXT: s_nop 14589; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154590; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144591; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134592; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124593; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4594; NOLIT-SRCC-NEXT: s_nop 04595; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:484596; NOLIT-SRCC-NEXT: s_nop 04597; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a114598; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a104599; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a94600; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a84601; NOLIT-SRCC-NEXT: s_nop 14602; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:324603; NOLIT-SRCC-NEXT: s_nop 04604; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a74605; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a64606; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a54607; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a44608; NOLIT-SRCC-NEXT: s_nop 14609; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:164610; NOLIT-SRCC-NEXT: s_nop 04611; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34612; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24613; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14614; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04615; NOLIT-SRCC-NEXT: s_nop 14616; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4617; NOLIT-SRCC-NEXT: s_endpgm4618;4619; LIT-SRCC-LABEL: test_mfma_f32_32x32x8f16_imm_splat:4620; LIT-SRCC: ; %bb.0: ; %bb4621; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 0x3c003c004622; LIT-SRCC-NEXT: v_mov_b32_e32 v1, v04623; LIT-SRCC-NEXT: v_mov_b32_e32 v2, 0x400040004624; LIT-SRCC-NEXT: v_mov_b32_e32 v3, v24625; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244626; LIT-SRCC-NEXT: v_mov_b32_e32 v13, 04627; LIT-SRCC-NEXT: v_mfma_f32_32x32x8f16 a[0:15], v[0:1], v[2:3], 1.04628; LIT-SRCC-NEXT: s_nop 154629; LIT-SRCC-NEXT: s_nop 14630; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154631; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144632; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134633; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124634; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a74635; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a64636; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a54637; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a114638; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a104639; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a94640; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a84641; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a44642; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a34643; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4644; LIT-SRCC-NEXT: global_store_dwordx4 v13, v[0:3], s[0:1] offset:484645; LIT-SRCC-NEXT: global_store_dwordx4 v13, v[4:7], s[0:1] offset:324646; LIT-SRCC-NEXT: global_store_dwordx4 v13, v[8:11], s[0:1] offset:164647; LIT-SRCC-NEXT: s_nop 04648; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a24649; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a14650; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a04651; LIT-SRCC-NEXT: s_nop 14652; LIT-SRCC-NEXT: global_store_dwordx4 v13, v[9:12], s[0:1]4653; LIT-SRCC-NEXT: s_endpgm4654;4655; GFX90A-LABEL: test_mfma_f32_32x32x8f16_imm_splat:4656; GFX90A: ; %bb.0: ; %bb4657; GFX90A-NEXT: v_mov_b32_e32 v0, 0x3c003c004658; GFX90A-NEXT: v_mov_b32_e32 v1, v04659; GFX90A-NEXT: v_mov_b32_e32 v2, 0x400040004660; GFX90A-NEXT: v_mov_b32_e32 v3, v24661; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244662; GFX90A-NEXT: s_nop 04663; GFX90A-NEXT: v_mfma_f32_32x32x8f16 a[0:15], v[0:1], v[2:3], 1.04664; GFX90A-NEXT: v_mov_b32_e32 v0, 04665; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4666; GFX90A-NEXT: s_nop 154667; GFX90A-NEXT: s_nop 04668; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484669; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324670; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164671; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4672; GFX90A-NEXT: s_endpgm4673;4674; GFX942-LABEL: test_mfma_f32_32x32x8f16_imm_splat:4675; GFX942: ; %bb.0: ; %bb4676; GFX942-NEXT: v_mov_b32_e32 v0, 0x3c003c004677; GFX942-NEXT: v_mov_b32_e32 v1, v04678; GFX942-NEXT: v_mov_b32_e32 v2, 0x400040004679; GFX942-NEXT: v_mov_b32_e32 v3, v24680; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244681; GFX942-NEXT: s_nop 04682; GFX942-NEXT: v_mfma_f32_32x32x8_f16 a[0:15], v[0:1], v[2:3], 1.04683; GFX942-NEXT: v_mov_b32_e32 v0, 04684; GFX942-NEXT: s_waitcnt lgkmcnt(0)4685; GFX942-NEXT: s_nop 84686; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484687; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324688; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164689; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4690; GFX942-NEXT: s_endpgm4691;4692; GFX942-VGPR-LABEL: test_mfma_f32_32x32x8f16_imm_splat:4693; GFX942-VGPR: ; %bb.0: ; %bb4694; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 0x3c003c004695; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, v164696; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, 0x400040004697; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, v184698; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244699; GFX942-VGPR-NEXT: s_nop 04700; GFX942-VGPR-NEXT: v_mfma_f32_32x32x8_f16 v[0:15], v[16:17], v[18:19], 1.04701; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 04702; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4703; GFX942-VGPR-NEXT: s_nop 84704; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] offset:484705; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[0:1] offset:324706; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] offset:164707; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[0:1]4708; GFX942-VGPR-NEXT: s_endpgm4709bb:4710 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.32x32x8f16(<4 x half> <half 1.0, half 1.0, half 1.0, half 1.0>, <4 x half> <half 2.0, half 2.0, half 2.0, half 2.0>, <16 x float> <float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0>, i32 0, i32 0, i32 0)4711 store <16 x float> %mai.1, ptr addrspace(1) %arg4712 ret void4713}4714 4715define amdgpu_kernel void @test_mfma_f32_32x32x1f32_imm_splat(ptr addrspace(1) %arg) #0 {4716; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_imm_splat:4717; NOLIT-SRCC: ; %bb.0: ; %bb4718; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04719; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 04720; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 04721; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 04722; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 04723; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 04724; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 04725; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 04726; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 04727; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 04728; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 04729; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 04730; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 04731; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 04732; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 04733; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 04734; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 04735; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a16, 04736; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a17, 04737; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a18, 04738; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a19, 04739; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a20, 04740; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a21, 04741; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a22, 04742; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a23, 04743; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a24, 04744; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a25, 04745; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a26, 04746; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a27, 04747; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a28, 04748; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a29, 04749; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a30, 04750; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a31, 04751; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04752; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244753; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 04754; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, a[0:31]4755; NOLIT-SRCC-NEXT: s_nop 154756; NOLIT-SRCC-NEXT: s_nop 14757; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a314758; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a304759; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a294760; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a284761; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4762; NOLIT-SRCC-NEXT: s_nop 04763; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:1124764; NOLIT-SRCC-NEXT: s_nop 04765; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a274766; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a264767; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a254768; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a244769; NOLIT-SRCC-NEXT: s_nop 14770; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:964771; NOLIT-SRCC-NEXT: s_nop 04772; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a234773; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a224774; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a214775; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a204776; NOLIT-SRCC-NEXT: s_nop 14777; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:804778; NOLIT-SRCC-NEXT: s_nop 04779; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a194780; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a184781; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a174782; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a164783; NOLIT-SRCC-NEXT: s_nop 14784; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:644785; NOLIT-SRCC-NEXT: s_nop 04786; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154787; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144788; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134789; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124790; NOLIT-SRCC-NEXT: s_nop 14791; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:484792; NOLIT-SRCC-NEXT: s_nop 04793; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a114794; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a104795; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a94796; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a84797; NOLIT-SRCC-NEXT: s_nop 14798; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:324799; NOLIT-SRCC-NEXT: s_nop 04800; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a74801; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a64802; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a54803; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a44804; NOLIT-SRCC-NEXT: s_nop 14805; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:164806; NOLIT-SRCC-NEXT: s_nop 04807; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34808; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24809; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14810; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04811; NOLIT-SRCC-NEXT: s_nop 14812; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4813; NOLIT-SRCC-NEXT: s_endpgm4814;4815; LIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_imm_splat:4816; LIT-SRCC: ; %bb.0: ; %bb4817; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04818; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04819; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244820; LIT-SRCC-NEXT: v_mov_b32_e32 v14, 04821; LIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, 04822; LIT-SRCC-NEXT: s_nop 154823; LIT-SRCC-NEXT: s_nop 14824; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a314825; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a304826; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a294827; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a284828; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a274829; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a264830; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a254831; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a244832; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a234833; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a224834; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a214835; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a204836; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4837; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[0:3], s[0:1] offset:1124838; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[4:7], s[0:1] offset:964839; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[8:11], s[0:1] offset:804840; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a154841; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a144842; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a134843; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a124844; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a194845; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a184846; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[0:3], s[0:1] offset:484847; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a174848; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a114849; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a104850; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a94851; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a84852; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a164853; LIT-SRCC-NEXT: s_nop 04854; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[0:3], s[0:1] offset:324855; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[10:13], s[0:1] offset:644856; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a74857; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a64858; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a54859; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a44860; LIT-SRCC-NEXT: s_nop 14861; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[0:3], s[0:1] offset:164862; LIT-SRCC-NEXT: s_nop 04863; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34864; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24865; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14866; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04867; LIT-SRCC-NEXT: s_nop 14868; LIT-SRCC-NEXT: global_store_dwordx4 v14, v[0:3], s[0:1]4869; LIT-SRCC-NEXT: s_endpgm4870;4871; GFX90A-LABEL: test_mfma_f32_32x32x1f32_imm_splat:4872; GFX90A: ; %bb.0: ; %bb4873; GFX90A-NEXT: v_mov_b32_e32 v0, 1.04874; GFX90A-NEXT: v_mov_b32_e32 v1, 2.04875; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244876; GFX90A-NEXT: s_nop 04877; GFX90A-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, 04878; GFX90A-NEXT: v_mov_b32_e32 v0, 04879; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4880; GFX90A-NEXT: s_nop 154881; GFX90A-NEXT: s_nop 04882; GFX90A-NEXT: global_store_dwordx4 v0, a[28:31], s[0:1] offset:1124883; GFX90A-NEXT: global_store_dwordx4 v0, a[24:27], s[0:1] offset:964884; GFX90A-NEXT: global_store_dwordx4 v0, a[20:23], s[0:1] offset:804885; GFX90A-NEXT: global_store_dwordx4 v0, a[16:19], s[0:1] offset:644886; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484887; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324888; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164889; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4890; GFX90A-NEXT: s_endpgm4891;4892; GFX942-LABEL: test_mfma_f32_32x32x1f32_imm_splat:4893; GFX942: ; %bb.0: ; %bb4894; GFX942-NEXT: v_mov_b32_e32 v0, 1.04895; GFX942-NEXT: v_mov_b32_e32 v1, 2.04896; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244897; GFX942-NEXT: s_nop 04898; GFX942-NEXT: v_mfma_f32_32x32x1_2b_f32 a[0:31], v0, v1, 04899; GFX942-NEXT: v_mov_b32_e32 v0, 04900; GFX942-NEXT: s_waitcnt lgkmcnt(0)4901; GFX942-NEXT: s_nop 154902; GFX942-NEXT: global_store_dwordx4 v0, a[28:31], s[0:1] offset:1124903; GFX942-NEXT: global_store_dwordx4 v0, a[24:27], s[0:1] offset:964904; GFX942-NEXT: global_store_dwordx4 v0, a[20:23], s[0:1] offset:804905; GFX942-NEXT: global_store_dwordx4 v0, a[16:19], s[0:1] offset:644906; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:484907; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:324908; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:164909; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4910; GFX942-NEXT: s_endpgm4911;4912; GFX942-VGPR-LABEL: test_mfma_f32_32x32x1f32_imm_splat:4913; GFX942-VGPR: ; %bb.0: ; %bb4914; GFX942-VGPR-NEXT: v_mov_b32_e32 v32, 1.04915; GFX942-VGPR-NEXT: v_mov_b32_e32 v33, 2.04916; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244917; GFX942-VGPR-NEXT: s_nop 04918; GFX942-VGPR-NEXT: v_mfma_f32_32x32x1_2b_f32 v[0:31], v32, v33, 04919; GFX942-VGPR-NEXT: v_mov_b32_e32 v32, 04920; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)4921; GFX942-VGPR-NEXT: s_nop 154922; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[28:31], s[0:1] offset:1124923; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[24:27], s[0:1] offset:964924; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[20:23], s[0:1] offset:804925; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[16:19], s[0:1] offset:644926; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[12:15], s[0:1] offset:484927; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[8:11], s[0:1] offset:324928; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[4:7], s[0:1] offset:164929; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[0:3], s[0:1]4930; GFX942-VGPR-NEXT: s_endpgm4931bb:4932 %mai.1 = tail call <32 x float> @llvm.amdgcn.mfma.f32.32x32x1f32(float 1.0, float 2.0, <32 x float> <float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0>, i32 0, i32 0, i32 0)4933 store <32 x float> %mai.1, ptr addrspace(1) %arg4934 ret void4935}4936 4937define amdgpu_kernel void @test_mfma_f32_4x4x1f32_imm(ptr addrspace(1) %arg) #0 {4938; NOLIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_imm:4939; NOLIT-SRCC: ; %bb.0: ; %bb4940; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04941; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.04942; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 2.04943; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 1.04944; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 1.04945; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244946; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04947; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 04948; NOLIT-SRCC-NEXT: s_nop 04949; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4950; NOLIT-SRCC-NEXT: s_nop 34951; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04952; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14953; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24954; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34955; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4956; NOLIT-SRCC-NEXT: s_nop 04957; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4958; NOLIT-SRCC-NEXT: s_endpgm4959;4960; LIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_imm:4961; LIT-SRCC: ; %bb.0: ; %bb4962; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.04963; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.04964; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 2.04965; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 1.04966; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 1.04967; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244968; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.04969; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 04970; LIT-SRCC-NEXT: s_nop 04971; LIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]4972; LIT-SRCC-NEXT: s_nop 34973; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a04974; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a14975; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a24976; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a34977; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)4978; LIT-SRCC-NEXT: s_nop 04979; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4980; LIT-SRCC-NEXT: s_endpgm4981;4982; GFX90A-LABEL: test_mfma_f32_4x4x1f32_imm:4983; GFX90A: ; %bb.0: ; %bb4984; GFX90A-NEXT: v_mov_b32_e32 v1, 1.04985; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x244986; GFX90A-NEXT: v_accvgpr_write_b32 a0, 1.04987; GFX90A-NEXT: v_accvgpr_write_b32 a1, 2.04988; GFX90A-NEXT: v_accvgpr_mov_b32 a2, a04989; GFX90A-NEXT: v_accvgpr_mov_b32 a3, a04990; GFX90A-NEXT: v_mov_b32_e32 v2, 2.04991; GFX90A-NEXT: v_mov_b32_e32 v0, 04992; GFX90A-NEXT: s_nop 04993; GFX90A-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v1, v2, a[0:3]4994; GFX90A-NEXT: s_waitcnt lgkmcnt(0)4995; GFX90A-NEXT: s_nop 34996; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]4997; GFX90A-NEXT: s_endpgm4998;4999; GFX942-LABEL: test_mfma_f32_4x4x1f32_imm:5000; GFX942: ; %bb.0: ; %bb5001; GFX942-NEXT: v_mov_b32_e32 v1, 1.05002; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245003; GFX942-NEXT: v_accvgpr_write_b32 a0, 1.05004; GFX942-NEXT: v_accvgpr_write_b32 a1, 2.05005; GFX942-NEXT: v_accvgpr_mov_b32 a2, a05006; GFX942-NEXT: v_accvgpr_mov_b32 a3, a05007; GFX942-NEXT: v_mov_b32_e32 v2, 2.05008; GFX942-NEXT: v_mov_b32_e32 v0, 05009; GFX942-NEXT: s_nop 05010; GFX942-NEXT: v_mfma_f32_4x4x1_16b_f32 a[0:3], v1, v2, a[0:3]5011; GFX942-NEXT: s_waitcnt lgkmcnt(0)5012; GFX942-NEXT: s_nop 25013; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5014; GFX942-NEXT: s_endpgm5015;5016; GFX942-VGPR-LABEL: test_mfma_f32_4x4x1f32_imm:5017; GFX942-VGPR: ; %bb.0: ; %bb5018; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 1.05019; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245020; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, 2.05021; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, v05022; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, v05023; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 05024; GFX942-VGPR-NEXT: s_nop 05025; GFX942-VGPR-NEXT: v_mfma_f32_4x4x1_16b_f32 v[0:3], v0, v1, v[0:3]5026; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)5027; GFX942-VGPR-NEXT: s_nop 25028; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5029; GFX942-VGPR-NEXT: s_endpgm5030bb:5031 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float 1.0, float 2.0, <4 x float> <float 1.0, float 2.0, float 1.0, float 1.0>, i32 0, i32 0, i32 0)5032 store <4 x float> %mai.1, ptr addrspace(1) %arg5033 ret void5034}5035 5036define amdgpu_kernel void @test_mfma_f32_16x16x1f32_imm(ptr addrspace(1) %arg) #0 {5037; NOLIT-SRCC-LABEL: test_mfma_f32_16x16x1f32_imm:5038; NOLIT-SRCC: ; %bb.0: ; %bb5039; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05040; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.05041; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 2.05042; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 1.05043; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 1.05044; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 1.05045; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 1.05046; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 1.05047; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 1.05048; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 1.05049; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 1.05050; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 1.05051; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 1.05052; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 1.05053; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 1.05054; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 1.05055; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 1.05056; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05057; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245058; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 05059; NOLIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]5060; NOLIT-SRCC-NEXT: s_nop 95061; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a155062; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a145063; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a135064; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a125065; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5066; NOLIT-SRCC-NEXT: s_nop 05067; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:485068; NOLIT-SRCC-NEXT: s_nop 05069; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a115070; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a105071; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a95072; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a85073; NOLIT-SRCC-NEXT: s_nop 15074; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:325075; NOLIT-SRCC-NEXT: s_nop 05076; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a75077; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a65078; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a55079; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a45080; NOLIT-SRCC-NEXT: s_nop 15081; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:165082; NOLIT-SRCC-NEXT: s_nop 05083; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35084; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25085; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15086; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05087; NOLIT-SRCC-NEXT: s_nop 15088; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5089; NOLIT-SRCC-NEXT: s_endpgm5090;5091; LIT-SRCC-LABEL: test_mfma_f32_16x16x1f32_imm:5092; LIT-SRCC: ; %bb.0: ; %bb5093; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05094; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.05095; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 2.05096; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 1.05097; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 1.05098; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 1.05099; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 1.05100; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 1.05101; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 1.05102; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 1.05103; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 1.05104; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 1.05105; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 1.05106; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 1.05107; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 1.05108; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 1.05109; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 1.05110; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05111; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245112; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 05113; LIT-SRCC-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v0, v1, a[0:15]5114; LIT-SRCC-NEXT: s_nop 95115; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a155116; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a145117; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a135118; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a125119; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5120; LIT-SRCC-NEXT: s_nop 05121; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:485122; LIT-SRCC-NEXT: s_nop 05123; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a115124; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a105125; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a95126; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a85127; LIT-SRCC-NEXT: s_nop 15128; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:325129; LIT-SRCC-NEXT: s_nop 05130; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a75131; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a65132; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a55133; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a45134; LIT-SRCC-NEXT: s_nop 15135; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:165136; LIT-SRCC-NEXT: s_nop 05137; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35138; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25139; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15140; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05141; LIT-SRCC-NEXT: s_nop 15142; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5143; LIT-SRCC-NEXT: s_endpgm5144;5145; GFX90A-LABEL: test_mfma_f32_16x16x1f32_imm:5146; GFX90A: ; %bb.0: ; %bb5147; GFX90A-NEXT: v_mov_b32_e32 v1, 1.05148; GFX90A-NEXT: v_accvgpr_write_b32 a0, 1.05149; GFX90A-NEXT: v_accvgpr_write_b32 a15, 2.05150; GFX90A-NEXT: v_accvgpr_mov_b32 a1, a05151; GFX90A-NEXT: v_accvgpr_mov_b32 a2, a05152; GFX90A-NEXT: v_accvgpr_mov_b32 a3, a05153; GFX90A-NEXT: v_accvgpr_mov_b32 a4, a05154; GFX90A-NEXT: v_accvgpr_mov_b32 a5, a05155; GFX90A-NEXT: v_accvgpr_mov_b32 a6, a05156; GFX90A-NEXT: v_accvgpr_mov_b32 a7, a05157; GFX90A-NEXT: v_accvgpr_mov_b32 a8, a05158; GFX90A-NEXT: v_accvgpr_mov_b32 a9, a05159; GFX90A-NEXT: v_accvgpr_mov_b32 a10, a05160; GFX90A-NEXT: v_accvgpr_mov_b32 a11, a05161; GFX90A-NEXT: v_accvgpr_mov_b32 a12, a05162; GFX90A-NEXT: v_accvgpr_mov_b32 a13, a05163; GFX90A-NEXT: v_accvgpr_mov_b32 a14, a05164; GFX90A-NEXT: v_mov_b32_e32 v2, 2.05165; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245166; GFX90A-NEXT: v_mov_b32_e32 v0, 05167; GFX90A-NEXT: v_mfma_f32_16x16x1f32 a[0:15], v1, v2, a[0:15]5168; GFX90A-NEXT: s_waitcnt lgkmcnt(0)5169; GFX90A-NEXT: s_nop 95170; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:485171; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:325172; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:165173; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5174; GFX90A-NEXT: s_endpgm5175;5176; GFX942-LABEL: test_mfma_f32_16x16x1f32_imm:5177; GFX942: ; %bb.0: ; %bb5178; GFX942-NEXT: v_mov_b32_e32 v1, 1.05179; GFX942-NEXT: v_accvgpr_write_b32 a0, 1.05180; GFX942-NEXT: v_accvgpr_write_b32 a15, 2.05181; GFX942-NEXT: v_accvgpr_mov_b32 a1, a05182; GFX942-NEXT: v_accvgpr_mov_b32 a2, a05183; GFX942-NEXT: v_accvgpr_mov_b32 a3, a05184; GFX942-NEXT: v_accvgpr_mov_b32 a4, a05185; GFX942-NEXT: v_accvgpr_mov_b32 a5, a05186; GFX942-NEXT: v_accvgpr_mov_b32 a6, a05187; GFX942-NEXT: v_accvgpr_mov_b32 a7, a05188; GFX942-NEXT: v_accvgpr_mov_b32 a8, a05189; GFX942-NEXT: v_accvgpr_mov_b32 a9, a05190; GFX942-NEXT: v_accvgpr_mov_b32 a10, a05191; GFX942-NEXT: v_accvgpr_mov_b32 a11, a05192; GFX942-NEXT: v_accvgpr_mov_b32 a12, a05193; GFX942-NEXT: v_accvgpr_mov_b32 a13, a05194; GFX942-NEXT: v_accvgpr_mov_b32 a14, a05195; GFX942-NEXT: v_mov_b32_e32 v2, 2.05196; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245197; GFX942-NEXT: v_mov_b32_e32 v0, 05198; GFX942-NEXT: v_mfma_f32_16x16x1_4b_f32 a[0:15], v1, v2, a[0:15]5199; GFX942-NEXT: s_waitcnt lgkmcnt(0)5200; GFX942-NEXT: s_nop 85201; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:485202; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:325203; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:165204; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5205; GFX942-NEXT: s_endpgm5206;5207; GFX942-VGPR-LABEL: test_mfma_f32_16x16x1f32_imm:5208; GFX942-VGPR: ; %bb.0: ; %bb5209; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 1.05210; GFX942-VGPR-NEXT: v_mov_b32_e32 v15, 2.05211; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, v05212; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, v05213; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, v05214; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, v05215; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, v05216; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, v05217; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, v05218; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, v05219; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, v05220; GFX942-VGPR-NEXT: v_mov_b32_e32 v10, v05221; GFX942-VGPR-NEXT: v_mov_b32_e32 v11, v05222; GFX942-VGPR-NEXT: v_mov_b32_e32 v12, v05223; GFX942-VGPR-NEXT: v_mov_b32_e32 v13, v05224; GFX942-VGPR-NEXT: v_mov_b32_e32 v14, v05225; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245226; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, 05227; GFX942-VGPR-NEXT: v_mfma_f32_16x16x1_4b_f32 v[0:15], v0, v15, v[0:15]5228; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)5229; GFX942-VGPR-NEXT: s_nop 85230; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[12:15], s[0:1] offset:485231; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[8:11], s[0:1] offset:325232; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[4:7], s[0:1] offset:165233; GFX942-VGPR-NEXT: global_store_dwordx4 v16, v[0:3], s[0:1]5234; GFX942-VGPR-NEXT: s_endpgm5235bb:5236 %mai.1 = tail call <16 x float> @llvm.amdgcn.mfma.f32.16x16x1f32(float 1.0, float 2.0, <16 x float> <float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 1.0, float 2.0>, i32 0, i32 0, i32 0)5237 store <16 x float> %mai.1, ptr addrspace(1) %arg5238 ret void5239}5240 5241define amdgpu_kernel void @test_mfma_f32_32x32x1f32_imm(ptr addrspace(1) %arg) #0 {5242; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_imm:5243; NOLIT-SRCC: ; %bb.0: ; %bb5244; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05245; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.05246; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 05247; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 05248; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 05249; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 05250; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 05251; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 05252; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 05253; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 05254; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 05255; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 05256; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 05257; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 05258; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 05259; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 05260; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 05261; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a16, 05262; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a17, 05263; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a18, 05264; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a19, 05265; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a20, 05266; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a21, 05267; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a22, 05268; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a23, 05269; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a24, 05270; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a25, 05271; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a26, 05272; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a27, 05273; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a28, 05274; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a29, 05275; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a30, 05276; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a31, 05277; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05278; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245279; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 05280; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, a[0:31]5281; NOLIT-SRCC-NEXT: s_nop 155282; NOLIT-SRCC-NEXT: s_nop 15283; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a315284; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a305285; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a295286; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a285287; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5288; NOLIT-SRCC-NEXT: s_nop 05289; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:1125290; NOLIT-SRCC-NEXT: s_nop 05291; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a275292; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a265293; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a255294; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a245295; NOLIT-SRCC-NEXT: s_nop 15296; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:965297; NOLIT-SRCC-NEXT: s_nop 05298; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a235299; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a225300; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a215301; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a205302; NOLIT-SRCC-NEXT: s_nop 15303; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:805304; NOLIT-SRCC-NEXT: s_nop 05305; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a195306; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a185307; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a175308; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a165309; NOLIT-SRCC-NEXT: s_nop 15310; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:645311; NOLIT-SRCC-NEXT: s_nop 05312; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a155313; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a145314; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a135315; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a125316; NOLIT-SRCC-NEXT: s_nop 15317; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:485318; NOLIT-SRCC-NEXT: s_nop 05319; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a115320; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a105321; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a95322; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a85323; NOLIT-SRCC-NEXT: s_nop 15324; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:325325; NOLIT-SRCC-NEXT: s_nop 05326; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a75327; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a65328; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a55329; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a45330; NOLIT-SRCC-NEXT: s_nop 15331; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:165332; NOLIT-SRCC-NEXT: s_nop 05333; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35334; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25335; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15336; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05337; NOLIT-SRCC-NEXT: s_nop 15338; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5339; NOLIT-SRCC-NEXT: s_endpgm5340;5341; LIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_imm:5342; LIT-SRCC: ; %bb.0: ; %bb5343; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05344; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, 1.05345; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, 05346; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, 05347; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, 05348; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, 05349; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, 05350; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, 05351; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, 05352; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, 05353; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, 05354; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, 05355; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, 05356; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, 05357; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, 05358; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, 05359; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, 05360; LIT-SRCC-NEXT: v_accvgpr_write_b32 a16, 05361; LIT-SRCC-NEXT: v_accvgpr_write_b32 a17, 05362; LIT-SRCC-NEXT: v_accvgpr_write_b32 a18, 05363; LIT-SRCC-NEXT: v_accvgpr_write_b32 a19, 05364; LIT-SRCC-NEXT: v_accvgpr_write_b32 a20, 05365; LIT-SRCC-NEXT: v_accvgpr_write_b32 a21, 05366; LIT-SRCC-NEXT: v_accvgpr_write_b32 a22, 05367; LIT-SRCC-NEXT: v_accvgpr_write_b32 a23, 05368; LIT-SRCC-NEXT: v_accvgpr_write_b32 a24, 05369; LIT-SRCC-NEXT: v_accvgpr_write_b32 a25, 05370; LIT-SRCC-NEXT: v_accvgpr_write_b32 a26, 05371; LIT-SRCC-NEXT: v_accvgpr_write_b32 a27, 05372; LIT-SRCC-NEXT: v_accvgpr_write_b32 a28, 05373; LIT-SRCC-NEXT: v_accvgpr_write_b32 a29, 05374; LIT-SRCC-NEXT: v_accvgpr_write_b32 a30, 05375; LIT-SRCC-NEXT: v_accvgpr_write_b32 a31, 05376; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05377; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245378; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 05379; LIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, a[0:31]5380; LIT-SRCC-NEXT: s_nop 155381; LIT-SRCC-NEXT: s_nop 15382; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a315383; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a305384; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a295385; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a285386; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5387; LIT-SRCC-NEXT: s_nop 05388; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:1125389; LIT-SRCC-NEXT: s_nop 05390; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a275391; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a265392; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a255393; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a245394; LIT-SRCC-NEXT: s_nop 15395; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:965396; LIT-SRCC-NEXT: s_nop 05397; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a235398; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a225399; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a215400; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a205401; LIT-SRCC-NEXT: s_nop 15402; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:805403; LIT-SRCC-NEXT: s_nop 05404; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a195405; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a185406; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a175407; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a165408; LIT-SRCC-NEXT: s_nop 15409; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:645410; LIT-SRCC-NEXT: s_nop 05411; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a155412; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a145413; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a135414; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a125415; LIT-SRCC-NEXT: s_nop 15416; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:485417; LIT-SRCC-NEXT: s_nop 05418; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a115419; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a105420; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a95421; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a85422; LIT-SRCC-NEXT: s_nop 15423; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:325424; LIT-SRCC-NEXT: s_nop 05425; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a75426; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a65427; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a55428; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a45429; LIT-SRCC-NEXT: s_nop 15430; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1] offset:165431; LIT-SRCC-NEXT: s_nop 05432; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35433; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25434; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15435; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05436; LIT-SRCC-NEXT: s_nop 15437; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5438; LIT-SRCC-NEXT: s_endpgm5439;5440; GFX90A-LABEL: test_mfma_f32_32x32x1f32_imm:5441; GFX90A: ; %bb.0: ; %bb5442; GFX90A-NEXT: v_mov_b32_e32 v1, 1.05443; GFX90A-NEXT: v_accvgpr_write_b32 a1, 05444; GFX90A-NEXT: v_accvgpr_write_b32 a0, 1.05445; GFX90A-NEXT: v_accvgpr_mov_b32 a2, a15446; GFX90A-NEXT: v_accvgpr_mov_b32 a3, a15447; GFX90A-NEXT: v_accvgpr_mov_b32 a4, a15448; GFX90A-NEXT: v_accvgpr_mov_b32 a5, a15449; GFX90A-NEXT: v_accvgpr_mov_b32 a6, a15450; GFX90A-NEXT: v_accvgpr_mov_b32 a7, a15451; GFX90A-NEXT: v_accvgpr_mov_b32 a8, a15452; GFX90A-NEXT: v_accvgpr_mov_b32 a9, a15453; GFX90A-NEXT: v_accvgpr_mov_b32 a10, a15454; GFX90A-NEXT: v_accvgpr_mov_b32 a11, a15455; GFX90A-NEXT: v_accvgpr_mov_b32 a12, a15456; GFX90A-NEXT: v_accvgpr_mov_b32 a13, a15457; GFX90A-NEXT: v_accvgpr_mov_b32 a14, a15458; GFX90A-NEXT: v_accvgpr_mov_b32 a15, a15459; GFX90A-NEXT: v_accvgpr_mov_b32 a16, a15460; GFX90A-NEXT: v_accvgpr_mov_b32 a17, a15461; GFX90A-NEXT: v_accvgpr_mov_b32 a18, a15462; GFX90A-NEXT: v_accvgpr_mov_b32 a19, a15463; GFX90A-NEXT: v_accvgpr_mov_b32 a20, a15464; GFX90A-NEXT: v_accvgpr_mov_b32 a21, a15465; GFX90A-NEXT: v_accvgpr_mov_b32 a22, a15466; GFX90A-NEXT: v_accvgpr_mov_b32 a23, a15467; GFX90A-NEXT: v_accvgpr_mov_b32 a24, a15468; GFX90A-NEXT: v_accvgpr_mov_b32 a25, a15469; GFX90A-NEXT: v_accvgpr_mov_b32 a26, a15470; GFX90A-NEXT: v_accvgpr_mov_b32 a27, a15471; GFX90A-NEXT: v_accvgpr_mov_b32 a28, a15472; GFX90A-NEXT: v_accvgpr_mov_b32 a29, a15473; GFX90A-NEXT: v_accvgpr_mov_b32 a30, a15474; GFX90A-NEXT: v_accvgpr_mov_b32 a31, a15475; GFX90A-NEXT: v_mov_b32_e32 v2, 2.05476; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245477; GFX90A-NEXT: v_mov_b32_e32 v0, 05478; GFX90A-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v1, v2, a[0:31]5479; GFX90A-NEXT: s_waitcnt lgkmcnt(0)5480; GFX90A-NEXT: s_nop 155481; GFX90A-NEXT: s_nop 15482; GFX90A-NEXT: global_store_dwordx4 v0, a[28:31], s[0:1] offset:1125483; GFX90A-NEXT: global_store_dwordx4 v0, a[24:27], s[0:1] offset:965484; GFX90A-NEXT: global_store_dwordx4 v0, a[20:23], s[0:1] offset:805485; GFX90A-NEXT: global_store_dwordx4 v0, a[16:19], s[0:1] offset:645486; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:485487; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:325488; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:165489; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5490; GFX90A-NEXT: s_endpgm5491;5492; GFX942-LABEL: test_mfma_f32_32x32x1f32_imm:5493; GFX942: ; %bb.0: ; %bb5494; GFX942-NEXT: v_mov_b32_e32 v1, 1.05495; GFX942-NEXT: v_accvgpr_write_b32 a1, 05496; GFX942-NEXT: v_accvgpr_write_b32 a0, 1.05497; GFX942-NEXT: v_accvgpr_mov_b32 a2, a15498; GFX942-NEXT: v_accvgpr_mov_b32 a3, a15499; GFX942-NEXT: v_accvgpr_mov_b32 a4, a15500; GFX942-NEXT: v_accvgpr_mov_b32 a5, a15501; GFX942-NEXT: v_accvgpr_mov_b32 a6, a15502; GFX942-NEXT: v_accvgpr_mov_b32 a7, a15503; GFX942-NEXT: v_accvgpr_mov_b32 a8, a15504; GFX942-NEXT: v_accvgpr_mov_b32 a9, a15505; GFX942-NEXT: v_accvgpr_mov_b32 a10, a15506; GFX942-NEXT: v_accvgpr_mov_b32 a11, a15507; GFX942-NEXT: v_accvgpr_mov_b32 a12, a15508; GFX942-NEXT: v_accvgpr_mov_b32 a13, a15509; GFX942-NEXT: v_accvgpr_mov_b32 a14, a15510; GFX942-NEXT: v_accvgpr_mov_b32 a15, a15511; GFX942-NEXT: v_accvgpr_mov_b32 a16, a15512; GFX942-NEXT: v_accvgpr_mov_b32 a17, a15513; GFX942-NEXT: v_accvgpr_mov_b32 a18, a15514; GFX942-NEXT: v_accvgpr_mov_b32 a19, a15515; GFX942-NEXT: v_accvgpr_mov_b32 a20, a15516; GFX942-NEXT: v_accvgpr_mov_b32 a21, a15517; GFX942-NEXT: v_accvgpr_mov_b32 a22, a15518; GFX942-NEXT: v_accvgpr_mov_b32 a23, a15519; GFX942-NEXT: v_accvgpr_mov_b32 a24, a15520; GFX942-NEXT: v_accvgpr_mov_b32 a25, a15521; GFX942-NEXT: v_accvgpr_mov_b32 a26, a15522; GFX942-NEXT: v_accvgpr_mov_b32 a27, a15523; GFX942-NEXT: v_accvgpr_mov_b32 a28, a15524; GFX942-NEXT: v_accvgpr_mov_b32 a29, a15525; GFX942-NEXT: v_accvgpr_mov_b32 a30, a15526; GFX942-NEXT: v_accvgpr_mov_b32 a31, a15527; GFX942-NEXT: v_mov_b32_e32 v2, 2.05528; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245529; GFX942-NEXT: v_mov_b32_e32 v0, 05530; GFX942-NEXT: v_mfma_f32_32x32x1_2b_f32 a[0:31], v1, v2, a[0:31]5531; GFX942-NEXT: s_waitcnt lgkmcnt(0)5532; GFX942-NEXT: s_nop 155533; GFX942-NEXT: s_nop 05534; GFX942-NEXT: global_store_dwordx4 v0, a[28:31], s[0:1] offset:1125535; GFX942-NEXT: global_store_dwordx4 v0, a[24:27], s[0:1] offset:965536; GFX942-NEXT: global_store_dwordx4 v0, a[20:23], s[0:1] offset:805537; GFX942-NEXT: global_store_dwordx4 v0, a[16:19], s[0:1] offset:645538; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:485539; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:325540; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:165541; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5542; GFX942-NEXT: s_endpgm5543;5544; GFX942-VGPR-LABEL: test_mfma_f32_32x32x1f32_imm:5545; GFX942-VGPR: ; %bb.0: ; %bb5546; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 1.05547; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, 05548; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, v15549; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, v15550; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, v15551; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, v15552; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, v15553; GFX942-VGPR-NEXT: v_mov_b32_e32 v7, v15554; GFX942-VGPR-NEXT: v_mov_b32_e32 v8, v15555; GFX942-VGPR-NEXT: v_mov_b32_e32 v9, v15556; GFX942-VGPR-NEXT: v_mov_b32_e32 v10, v15557; GFX942-VGPR-NEXT: v_mov_b32_e32 v11, v15558; GFX942-VGPR-NEXT: v_mov_b32_e32 v12, v15559; GFX942-VGPR-NEXT: v_mov_b32_e32 v13, v15560; GFX942-VGPR-NEXT: v_mov_b32_e32 v14, v15561; GFX942-VGPR-NEXT: v_mov_b32_e32 v15, v15562; GFX942-VGPR-NEXT: v_mov_b32_e32 v16, v15563; GFX942-VGPR-NEXT: v_mov_b32_e32 v17, v15564; GFX942-VGPR-NEXT: v_mov_b32_e32 v18, v15565; GFX942-VGPR-NEXT: v_mov_b32_e32 v19, v15566; GFX942-VGPR-NEXT: v_mov_b32_e32 v20, v15567; GFX942-VGPR-NEXT: v_mov_b32_e32 v21, v15568; GFX942-VGPR-NEXT: v_mov_b32_e32 v22, v15569; GFX942-VGPR-NEXT: v_mov_b32_e32 v23, v15570; GFX942-VGPR-NEXT: v_mov_b32_e32 v24, v15571; GFX942-VGPR-NEXT: v_mov_b32_e32 v25, v15572; GFX942-VGPR-NEXT: v_mov_b32_e32 v26, v15573; GFX942-VGPR-NEXT: v_mov_b32_e32 v27, v15574; GFX942-VGPR-NEXT: v_mov_b32_e32 v28, v15575; GFX942-VGPR-NEXT: v_mov_b32_e32 v29, v15576; GFX942-VGPR-NEXT: v_mov_b32_e32 v30, v15577; GFX942-VGPR-NEXT: v_mov_b32_e32 v31, v15578; GFX942-VGPR-NEXT: v_mov_b64_e32 v[32:33], v[30:31]5579; GFX942-VGPR-NEXT: v_mov_b32_e32 v34, 2.05580; GFX942-VGPR-NEXT: v_mov_b64_e32 v[30:31], v[28:29]5581; GFX942-VGPR-NEXT: v_mov_b64_e32 v[28:29], v[26:27]5582; GFX942-VGPR-NEXT: v_mov_b64_e32 v[26:27], v[24:25]5583; GFX942-VGPR-NEXT: v_mov_b64_e32 v[24:25], v[22:23]5584; GFX942-VGPR-NEXT: v_mov_b64_e32 v[22:23], v[20:21]5585; GFX942-VGPR-NEXT: v_mov_b64_e32 v[20:21], v[18:19]5586; GFX942-VGPR-NEXT: v_mov_b64_e32 v[18:19], v[16:17]5587; GFX942-VGPR-NEXT: v_mov_b64_e32 v[16:17], v[14:15]5588; GFX942-VGPR-NEXT: v_mov_b64_e32 v[14:15], v[12:13]5589; GFX942-VGPR-NEXT: v_mov_b64_e32 v[12:13], v[10:11]5590; GFX942-VGPR-NEXT: v_mov_b64_e32 v[10:11], v[8:9]5591; GFX942-VGPR-NEXT: v_mov_b64_e32 v[8:9], v[6:7]5592; GFX942-VGPR-NEXT: v_mov_b64_e32 v[6:7], v[4:5]5593; GFX942-VGPR-NEXT: v_mov_b64_e32 v[4:5], v[2:3]5594; GFX942-VGPR-NEXT: v_mov_b64_e32 v[2:3], v[0:1]5595; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245596; GFX942-VGPR-NEXT: s_nop 05597; GFX942-VGPR-NEXT: v_mfma_f32_32x32x1_2b_f32 v[2:33], v0, v34, v[2:33]5598; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)5599; GFX942-VGPR-NEXT: s_nop 155600; GFX942-VGPR-NEXT: s_nop 05601; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[30:33], s[0:1] offset:1125602; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[26:29], s[0:1] offset:965603; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[22:25], s[0:1] offset:805604; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[18:21], s[0:1] offset:645605; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[14:17], s[0:1] offset:485606; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[10:13], s[0:1] offset:325607; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[6:9], s[0:1] offset:165608; GFX942-VGPR-NEXT: global_store_dwordx4 v1, v[2:5], s[0:1]5609; GFX942-VGPR-NEXT: s_endpgm5610bb:5611 %mai.1 = tail call <32 x float> @llvm.amdgcn.mfma.f32.32x32x1f32(float 1.0, float 2.0, <32 x float> <float 1.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0, float 0.0>, i32 0, i32 0, i32 0)5612 store <32 x float> %mai.1, ptr addrspace(1) %arg5613 ret void5614}5615 5616define amdgpu_kernel void @test_mfma_f32_4x4x1f32_lit_splat(ptr addrspace(1) %arg, i64 %idx) #0 {5617; NOLIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_lit_splat:5618; NOLIT-SRCC: ; %bb.0: ; %bb5619; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 0x42f600005620; NOLIT-SRCC-NEXT: v_lshlrev_b32_e32 v4, 4, v05621; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05622; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v15623; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v15624; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v15625; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v15626; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245627; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05628; NOLIT-SRCC-NEXT: s_nop 15629; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]5630; NOLIT-SRCC-NEXT: s_nop 35631; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05632; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15633; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25634; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35635; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5636; NOLIT-SRCC-NEXT: s_nop 05637; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5638; NOLIT-SRCC-NEXT: s_endpgm5639;5640; LIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_lit_splat:5641; LIT-SRCC: ; %bb.0: ; %bb5642; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 0x42f600005643; LIT-SRCC-NEXT: v_lshlrev_b32_e32 v4, 4, v05644; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05645; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v15646; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v15647; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v15648; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v15649; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245650; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05651; LIT-SRCC-NEXT: s_nop 15652; LIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v0, v1, a[0:3]5653; LIT-SRCC-NEXT: s_nop 35654; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05655; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15656; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25657; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35658; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5659; LIT-SRCC-NEXT: s_nop 05660; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5661; LIT-SRCC-NEXT: s_endpgm5662;5663; GFX90A-LABEL: test_mfma_f32_4x4x1f32_lit_splat:5664; GFX90A: ; %bb.0: ; %bb5665; GFX90A-NEXT: v_mov_b32_e32 v1, 0x42f600005666; GFX90A-NEXT: v_accvgpr_write_b32 a0, v15667; GFX90A-NEXT: v_mov_b32_e32 v1, 1.05668; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245669; GFX90A-NEXT: v_accvgpr_mov_b32 a1, a05670; GFX90A-NEXT: v_accvgpr_mov_b32 a2, a05671; GFX90A-NEXT: v_accvgpr_mov_b32 a3, a05672; GFX90A-NEXT: v_mov_b32_e32 v2, 2.05673; GFX90A-NEXT: v_and_b32_e32 v0, 0x3ff, v05674; GFX90A-NEXT: v_lshlrev_b32_e32 v0, 4, v05675; GFX90A-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v1, v2, a[0:3]5676; GFX90A-NEXT: s_waitcnt lgkmcnt(0)5677; GFX90A-NEXT: s_nop 35678; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5679; GFX90A-NEXT: s_endpgm5680;5681; GFX942-LABEL: test_mfma_f32_4x4x1f32_lit_splat:5682; GFX942: ; %bb.0: ; %bb5683; GFX942-NEXT: v_mov_b32_e32 v1, 0x42f600005684; GFX942-NEXT: v_accvgpr_write_b32 a0, v15685; GFX942-NEXT: v_mov_b32_e32 v1, 1.05686; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245687; GFX942-NEXT: v_accvgpr_mov_b32 a1, a05688; GFX942-NEXT: v_accvgpr_mov_b32 a2, a05689; GFX942-NEXT: v_accvgpr_mov_b32 a3, a05690; GFX942-NEXT: v_mov_b32_e32 v2, 2.05691; GFX942-NEXT: v_and_b32_e32 v0, 0x3ff, v05692; GFX942-NEXT: v_lshlrev_b32_e32 v0, 4, v05693; GFX942-NEXT: v_mfma_f32_4x4x1_16b_f32 a[0:3], v1, v2, a[0:3]5694; GFX942-NEXT: s_waitcnt lgkmcnt(0)5695; GFX942-NEXT: s_nop 25696; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5697; GFX942-NEXT: s_endpgm5698;5699; GFX942-VGPR-LABEL: test_mfma_f32_4x4x1f32_lit_splat:5700; GFX942-VGPR: ; %bb.0: ; %bb5701; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, 1.05702; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245703; GFX942-VGPR-NEXT: v_and_b32_e32 v0, 0x3ff, v05704; GFX942-VGPR-NEXT: v_lshlrev_b32_e32 v4, 4, v05705; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 0x42f600005706; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, v05707; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, v05708; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, v05709; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, 2.05710; GFX942-VGPR-NEXT: s_nop 15711; GFX942-VGPR-NEXT: v_mfma_f32_4x4x1_16b_f32 v[0:3], v5, v6, v[0:3]5712; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)5713; GFX942-VGPR-NEXT: s_nop 25714; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5715; GFX942-VGPR-NEXT: s_endpgm5716bb:5717 %tid = call i32 @llvm.amdgcn.workitem.id.x()5718 %gep = getelementptr inbounds <4 x float>, ptr addrspace(1) %arg, i32 %tid5719 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float 1.0, float 2.0, <4 x float> <float 123.0, float 123.0, float 123.0, float 123.0>, i32 0, i32 0, i32 0)5720 ;store <4 x float> %mai.1, ptr addrspace(1) %arg5721 store <4 x float> %mai.1, ptr addrspace(1) %gep5722 ret void5723}5724 5725define amdgpu_kernel void @test_mfma_f32_4x4x1f32_lit_splat_bad_code(ptr addrspace(1) %arg) #0 {5726; NOLIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_lit_splat_bad_code:5727; NOLIT-SRCC: ; %bb.0: ; %bb5728; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 0x42f600005729; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 1.05730; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245731; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v05732; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v05733; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v05734; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v05735; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 2.05736; NOLIT-SRCC-NEXT: v_mov_b32_e32 v4, 05737; NOLIT-SRCC-NEXT: s_nop 05738; NOLIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v1, v0, a[0:3]5739; NOLIT-SRCC-NEXT: s_nop 35740; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05741; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15742; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25743; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35744; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5745; NOLIT-SRCC-NEXT: s_nop 05746; NOLIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5747; NOLIT-SRCC-NEXT: s_endpgm5748;5749; LIT-SRCC-LABEL: test_mfma_f32_4x4x1f32_lit_splat_bad_code:5750; LIT-SRCC: ; %bb.0: ; %bb5751; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 0x42f600005752; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 1.05753; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245754; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v05755; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v05756; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v05757; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v05758; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 2.05759; LIT-SRCC-NEXT: v_mov_b32_e32 v4, 05760; LIT-SRCC-NEXT: s_nop 05761; LIT-SRCC-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v1, v0, a[0:3]5762; LIT-SRCC-NEXT: s_nop 35763; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a05764; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a15765; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a25766; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a35767; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5768; LIT-SRCC-NEXT: s_nop 05769; LIT-SRCC-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5770; LIT-SRCC-NEXT: s_endpgm5771;5772; GFX90A-LABEL: test_mfma_f32_4x4x1f32_lit_splat_bad_code:5773; GFX90A: ; %bb.0: ; %bb5774; GFX90A-NEXT: v_mov_b32_e32 v1, 0x42f600005775; GFX90A-NEXT: v_accvgpr_write_b32 a0, v15776; GFX90A-NEXT: v_mov_b32_e32 v1, 1.05777; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245778; GFX90A-NEXT: v_accvgpr_mov_b32 a1, a05779; GFX90A-NEXT: v_accvgpr_mov_b32 a2, a05780; GFX90A-NEXT: v_accvgpr_mov_b32 a3, a05781; GFX90A-NEXT: v_mov_b32_e32 v2, 2.05782; GFX90A-NEXT: v_mov_b32_e32 v0, 05783; GFX90A-NEXT: s_nop 05784; GFX90A-NEXT: v_mfma_f32_4x4x1f32 a[0:3], v1, v2, a[0:3]5785; GFX90A-NEXT: s_waitcnt lgkmcnt(0)5786; GFX90A-NEXT: s_nop 35787; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5788; GFX90A-NEXT: s_endpgm5789;5790; GFX942-LABEL: test_mfma_f32_4x4x1f32_lit_splat_bad_code:5791; GFX942: ; %bb.0: ; %bb5792; GFX942-NEXT: v_mov_b32_e32 v1, 0x42f600005793; GFX942-NEXT: v_accvgpr_write_b32 a0, v15794; GFX942-NEXT: v_mov_b32_e32 v1, 1.05795; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245796; GFX942-NEXT: v_accvgpr_mov_b32 a1, a05797; GFX942-NEXT: v_accvgpr_mov_b32 a2, a05798; GFX942-NEXT: v_accvgpr_mov_b32 a3, a05799; GFX942-NEXT: v_mov_b32_e32 v2, 2.05800; GFX942-NEXT: v_mov_b32_e32 v0, 05801; GFX942-NEXT: s_nop 05802; GFX942-NEXT: v_mfma_f32_4x4x1_16b_f32 a[0:3], v1, v2, a[0:3]5803; GFX942-NEXT: s_waitcnt lgkmcnt(0)5804; GFX942-NEXT: s_nop 25805; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]5806; GFX942-NEXT: s_endpgm5807;5808; GFX942-VGPR-LABEL: test_mfma_f32_4x4x1f32_lit_splat_bad_code:5809; GFX942-VGPR: ; %bb.0: ; %bb5810; GFX942-VGPR-NEXT: v_mov_b32_e32 v5, 1.05811; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245812; GFX942-VGPR-NEXT: v_mov_b32_e32 v0, 0x42f600005813; GFX942-VGPR-NEXT: v_mov_b32_e32 v1, v05814; GFX942-VGPR-NEXT: v_mov_b32_e32 v2, v05815; GFX942-VGPR-NEXT: v_mov_b32_e32 v3, v05816; GFX942-VGPR-NEXT: v_mov_b32_e32 v6, 2.05817; GFX942-VGPR-NEXT: v_mov_b32_e32 v4, 05818; GFX942-VGPR-NEXT: s_nop 05819; GFX942-VGPR-NEXT: v_mfma_f32_4x4x1_16b_f32 v[0:3], v5, v6, v[0:3]5820; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)5821; GFX942-VGPR-NEXT: s_nop 25822; GFX942-VGPR-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5823; GFX942-VGPR-NEXT: s_endpgm5824bb:5825 %tid = call i32 @llvm.amdgcn.workitem.id.x()5826 %gep = getelementptr inbounds <4 x float>, ptr addrspace(1) %arg, i32 %tid5827 5828 %mai.1 = tail call <4 x float> @llvm.amdgcn.mfma.f32.4x4x1f32(float 1.0, float 2.0, <4 x float> <float 123.0, float 123.0, float 123.0, float 123.0>, i32 0, i32 0, i32 0)5829 store <4 x float> %mai.1, ptr addrspace(1) %arg5830 ret void5831}5832 5833define amdgpu_kernel void @test_mfma_f32_32x32x1f32_vecarg(ptr addrspace(1) %arg) #0 {5834; NOLIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_vecarg:5835; NOLIT-SRCC: ; %bb.0: ; %bb5836; NOLIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245837; NOLIT-SRCC-NEXT: v_lshlrev_b32_e32 v32, 7, v05838; NOLIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5839; NOLIT-SRCC-NEXT: global_load_dwordx4 v[28:31], v32, s[0:1] offset:1125840; NOLIT-SRCC-NEXT: global_load_dwordx4 v[24:27], v32, s[0:1] offset:965841; NOLIT-SRCC-NEXT: global_load_dwordx4 v[20:23], v32, s[0:1] offset:805842; NOLIT-SRCC-NEXT: global_load_dwordx4 v[16:19], v32, s[0:1] offset:645843; NOLIT-SRCC-NEXT: global_load_dwordx4 v[12:15], v32, s[0:1] offset:485844; NOLIT-SRCC-NEXT: global_load_dwordx4 v[8:11], v32, s[0:1] offset:325845; NOLIT-SRCC-NEXT: global_load_dwordx4 v[4:7], v32, s[0:1] offset:165846; NOLIT-SRCC-NEXT: global_load_dwordx4 v[0:3], v32, s[0:1]5847; NOLIT-SRCC-NEXT: s_waitcnt vmcnt(0)5848; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v05849; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v15850; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v25851; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v35852; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v45853; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v55854; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v65855; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v75856; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v85857; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v95858; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v105859; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v115860; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v125861; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v135862; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v145863; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v155864; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v165865; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v175866; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v185867; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v195868; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v205869; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v215870; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v225871; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v235872; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v245873; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v255874; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v265875; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v275876; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v285877; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v295878; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v305879; NOLIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v315880; NOLIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05881; NOLIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05882; NOLIT-SRCC-NEXT: s_nop 15883; NOLIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, a[0:31] cbsz:1 abid:2 blgp:35884; NOLIT-SRCC-NEXT: s_nop 155885; NOLIT-SRCC-NEXT: s_nop 15886; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a275887; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a265888; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a255889; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a245890; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a315891; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a305892; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a295893; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a285894; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a195895; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a185896; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a175897; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a165898; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a235899; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a225900; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a215901; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a205902; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v19, a115903; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v18, a105904; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v17, a95905; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v16, a85906; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v23, a155907; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v22, a145908; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v21, a135909; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v20, a125910; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v27, a35911; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v26, a25912; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v25, a15913; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v24, a05914; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[0:3], s[0:1] offset:965915; NOLIT-SRCC-NEXT: s_nop 05916; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a75917; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a65918; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a55919; NOLIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a45920; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[4:7], s[0:1] offset:1125921; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[8:11], s[0:1] offset:645922; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[12:15], s[0:1] offset:805923; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[16:19], s[0:1] offset:325924; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[20:23], s[0:1] offset:485925; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[24:27], s[0:1]5926; NOLIT-SRCC-NEXT: global_store_dwordx4 v32, v[0:3], s[0:1] offset:165927; NOLIT-SRCC-NEXT: s_endpgm5928;5929; LIT-SRCC-LABEL: test_mfma_f32_32x32x1f32_vecarg:5930; LIT-SRCC: ; %bb.0: ; %bb5931; LIT-SRCC-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x245932; LIT-SRCC-NEXT: v_lshlrev_b32_e32 v32, 7, v05933; LIT-SRCC-NEXT: s_waitcnt lgkmcnt(0)5934; LIT-SRCC-NEXT: global_load_dwordx4 v[28:31], v32, s[0:1] offset:1125935; LIT-SRCC-NEXT: global_load_dwordx4 v[24:27], v32, s[0:1] offset:965936; LIT-SRCC-NEXT: global_load_dwordx4 v[20:23], v32, s[0:1] offset:805937; LIT-SRCC-NEXT: global_load_dwordx4 v[16:19], v32, s[0:1] offset:645938; LIT-SRCC-NEXT: global_load_dwordx4 v[12:15], v32, s[0:1] offset:485939; LIT-SRCC-NEXT: global_load_dwordx4 v[8:11], v32, s[0:1] offset:325940; LIT-SRCC-NEXT: global_load_dwordx4 v[4:7], v32, s[0:1] offset:165941; LIT-SRCC-NEXT: global_load_dwordx4 v[0:3], v32, s[0:1]5942; LIT-SRCC-NEXT: s_waitcnt vmcnt(0)5943; LIT-SRCC-NEXT: v_accvgpr_write_b32 a0, v05944; LIT-SRCC-NEXT: v_accvgpr_write_b32 a1, v15945; LIT-SRCC-NEXT: v_accvgpr_write_b32 a2, v25946; LIT-SRCC-NEXT: v_accvgpr_write_b32 a3, v35947; LIT-SRCC-NEXT: v_accvgpr_write_b32 a4, v45948; LIT-SRCC-NEXT: v_accvgpr_write_b32 a5, v55949; LIT-SRCC-NEXT: v_accvgpr_write_b32 a6, v65950; LIT-SRCC-NEXT: v_accvgpr_write_b32 a7, v75951; LIT-SRCC-NEXT: v_accvgpr_write_b32 a8, v85952; LIT-SRCC-NEXT: v_accvgpr_write_b32 a9, v95953; LIT-SRCC-NEXT: v_accvgpr_write_b32 a10, v105954; LIT-SRCC-NEXT: v_accvgpr_write_b32 a11, v115955; LIT-SRCC-NEXT: v_accvgpr_write_b32 a12, v125956; LIT-SRCC-NEXT: v_accvgpr_write_b32 a13, v135957; LIT-SRCC-NEXT: v_accvgpr_write_b32 a14, v145958; LIT-SRCC-NEXT: v_accvgpr_write_b32 a15, v155959; LIT-SRCC-NEXT: v_accvgpr_write_b32 a16, v165960; LIT-SRCC-NEXT: v_accvgpr_write_b32 a17, v175961; LIT-SRCC-NEXT: v_accvgpr_write_b32 a18, v185962; LIT-SRCC-NEXT: v_accvgpr_write_b32 a19, v195963; LIT-SRCC-NEXT: v_accvgpr_write_b32 a20, v205964; LIT-SRCC-NEXT: v_accvgpr_write_b32 a21, v215965; LIT-SRCC-NEXT: v_accvgpr_write_b32 a22, v225966; LIT-SRCC-NEXT: v_accvgpr_write_b32 a23, v235967; LIT-SRCC-NEXT: v_accvgpr_write_b32 a24, v245968; LIT-SRCC-NEXT: v_accvgpr_write_b32 a25, v255969; LIT-SRCC-NEXT: v_accvgpr_write_b32 a26, v265970; LIT-SRCC-NEXT: v_accvgpr_write_b32 a27, v275971; LIT-SRCC-NEXT: v_accvgpr_write_b32 a28, v285972; LIT-SRCC-NEXT: v_accvgpr_write_b32 a29, v295973; LIT-SRCC-NEXT: v_accvgpr_write_b32 a30, v305974; LIT-SRCC-NEXT: v_accvgpr_write_b32 a31, v315975; LIT-SRCC-NEXT: v_mov_b32_e32 v0, 1.05976; LIT-SRCC-NEXT: v_mov_b32_e32 v1, 2.05977; LIT-SRCC-NEXT: s_nop 15978; LIT-SRCC-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v0, v1, a[0:31] cbsz:1 abid:2 blgp:35979; LIT-SRCC-NEXT: s_nop 155980; LIT-SRCC-NEXT: s_nop 15981; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a275982; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a265983; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a255984; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a245985; LIT-SRCC-NEXT: v_accvgpr_read_b32 v7, a315986; LIT-SRCC-NEXT: v_accvgpr_read_b32 v6, a305987; LIT-SRCC-NEXT: v_accvgpr_read_b32 v5, a295988; LIT-SRCC-NEXT: v_accvgpr_read_b32 v4, a285989; LIT-SRCC-NEXT: v_accvgpr_read_b32 v11, a195990; LIT-SRCC-NEXT: v_accvgpr_read_b32 v10, a185991; LIT-SRCC-NEXT: v_accvgpr_read_b32 v9, a175992; LIT-SRCC-NEXT: v_accvgpr_read_b32 v8, a165993; LIT-SRCC-NEXT: v_accvgpr_read_b32 v15, a235994; LIT-SRCC-NEXT: v_accvgpr_read_b32 v14, a225995; LIT-SRCC-NEXT: v_accvgpr_read_b32 v13, a215996; LIT-SRCC-NEXT: v_accvgpr_read_b32 v12, a205997; LIT-SRCC-NEXT: v_accvgpr_read_b32 v19, a115998; LIT-SRCC-NEXT: v_accvgpr_read_b32 v18, a105999; LIT-SRCC-NEXT: v_accvgpr_read_b32 v17, a96000; LIT-SRCC-NEXT: v_accvgpr_read_b32 v16, a86001; LIT-SRCC-NEXT: v_accvgpr_read_b32 v23, a156002; LIT-SRCC-NEXT: v_accvgpr_read_b32 v22, a146003; LIT-SRCC-NEXT: v_accvgpr_read_b32 v21, a136004; LIT-SRCC-NEXT: v_accvgpr_read_b32 v20, a126005; LIT-SRCC-NEXT: v_accvgpr_read_b32 v27, a36006; LIT-SRCC-NEXT: v_accvgpr_read_b32 v26, a26007; LIT-SRCC-NEXT: v_accvgpr_read_b32 v25, a16008; LIT-SRCC-NEXT: v_accvgpr_read_b32 v24, a06009; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[0:3], s[0:1] offset:966010; LIT-SRCC-NEXT: s_nop 06011; LIT-SRCC-NEXT: v_accvgpr_read_b32 v3, a76012; LIT-SRCC-NEXT: v_accvgpr_read_b32 v2, a66013; LIT-SRCC-NEXT: v_accvgpr_read_b32 v1, a56014; LIT-SRCC-NEXT: v_accvgpr_read_b32 v0, a46015; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[4:7], s[0:1] offset:1126016; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[8:11], s[0:1] offset:646017; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[12:15], s[0:1] offset:806018; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[16:19], s[0:1] offset:326019; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[20:23], s[0:1] offset:486020; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[24:27], s[0:1]6021; LIT-SRCC-NEXT: global_store_dwordx4 v32, v[0:3], s[0:1] offset:166022; LIT-SRCC-NEXT: s_endpgm6023;6024; GFX90A-LABEL: test_mfma_f32_32x32x1f32_vecarg:6025; GFX90A: ; %bb.0: ; %bb6026; GFX90A-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246027; GFX90A-NEXT: v_and_b32_e32 v0, 0x3ff, v06028; GFX90A-NEXT: v_lshlrev_b32_e32 v0, 7, v06029; GFX90A-NEXT: v_mov_b32_e32 v1, 1.06030; GFX90A-NEXT: v_mov_b32_e32 v2, 2.06031; GFX90A-NEXT: s_waitcnt lgkmcnt(0)6032; GFX90A-NEXT: global_load_dwordx4 a[28:31], v0, s[0:1] offset:1126033; GFX90A-NEXT: global_load_dwordx4 a[24:27], v0, s[0:1] offset:966034; GFX90A-NEXT: global_load_dwordx4 a[20:23], v0, s[0:1] offset:806035; GFX90A-NEXT: global_load_dwordx4 a[16:19], v0, s[0:1] offset:646036; GFX90A-NEXT: global_load_dwordx4 a[12:15], v0, s[0:1] offset:486037; GFX90A-NEXT: global_load_dwordx4 a[8:11], v0, s[0:1] offset:326038; GFX90A-NEXT: global_load_dwordx4 a[4:7], v0, s[0:1] offset:166039; GFX90A-NEXT: global_load_dwordx4 a[0:3], v0, s[0:1]6040; GFX90A-NEXT: s_waitcnt vmcnt(0)6041; GFX90A-NEXT: v_mfma_f32_32x32x1f32 a[0:31], v1, v2, a[0:31] cbsz:1 abid:2 blgp:36042; GFX90A-NEXT: s_nop 156043; GFX90A-NEXT: s_nop 26044; GFX90A-NEXT: global_store_dwordx4 v0, a[24:27], s[0:1] offset:966045; GFX90A-NEXT: global_store_dwordx4 v0, a[28:31], s[0:1] offset:1126046; GFX90A-NEXT: global_store_dwordx4 v0, a[16:19], s[0:1] offset:646047; GFX90A-NEXT: global_store_dwordx4 v0, a[20:23], s[0:1] offset:806048; GFX90A-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:326049; GFX90A-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:486050; GFX90A-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]6051; GFX90A-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:166052; GFX90A-NEXT: s_endpgm6053;6054; GFX942-LABEL: test_mfma_f32_32x32x1f32_vecarg:6055; GFX942: ; %bb.0: ; %bb6056; GFX942-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246057; GFX942-NEXT: v_and_b32_e32 v0, 0x3ff, v06058; GFX942-NEXT: v_lshlrev_b32_e32 v0, 7, v06059; GFX942-NEXT: v_mov_b32_e32 v1, 1.06060; GFX942-NEXT: v_mov_b32_e32 v2, 2.06061; GFX942-NEXT: s_waitcnt lgkmcnt(0)6062; GFX942-NEXT: global_load_dwordx4 a[28:31], v0, s[0:1] offset:1126063; GFX942-NEXT: global_load_dwordx4 a[24:27], v0, s[0:1] offset:966064; GFX942-NEXT: global_load_dwordx4 a[20:23], v0, s[0:1] offset:806065; GFX942-NEXT: global_load_dwordx4 a[16:19], v0, s[0:1] offset:646066; GFX942-NEXT: global_load_dwordx4 a[12:15], v0, s[0:1] offset:486067; GFX942-NEXT: global_load_dwordx4 a[8:11], v0, s[0:1] offset:326068; GFX942-NEXT: global_load_dwordx4 a[4:7], v0, s[0:1] offset:166069; GFX942-NEXT: global_load_dwordx4 a[0:3], v0, s[0:1]6070; GFX942-NEXT: s_waitcnt vmcnt(0)6071; GFX942-NEXT: v_mfma_f32_32x32x1_2b_f32 a[0:31], v1, v2, a[0:31] cbsz:1 abid:2 blgp:36072; GFX942-NEXT: s_nop 156073; GFX942-NEXT: s_nop 16074; GFX942-NEXT: global_store_dwordx4 v0, a[24:27], s[0:1] offset:966075; GFX942-NEXT: global_store_dwordx4 v0, a[28:31], s[0:1] offset:1126076; GFX942-NEXT: global_store_dwordx4 v0, a[16:19], s[0:1] offset:646077; GFX942-NEXT: global_store_dwordx4 v0, a[20:23], s[0:1] offset:806078; GFX942-NEXT: global_store_dwordx4 v0, a[8:11], s[0:1] offset:326079; GFX942-NEXT: global_store_dwordx4 v0, a[12:15], s[0:1] offset:486080; GFX942-NEXT: global_store_dwordx4 v0, a[0:3], s[0:1]6081; GFX942-NEXT: global_store_dwordx4 v0, a[4:7], s[0:1] offset:166082; GFX942-NEXT: s_endpgm6083;6084; GFX942-VGPR-LABEL: test_mfma_f32_32x32x1f32_vecarg:6085; GFX942-VGPR: ; %bb.0: ; %bb6086; GFX942-VGPR-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x246087; GFX942-VGPR-NEXT: v_and_b32_e32 v0, 0x3ff, v06088; GFX942-VGPR-NEXT: v_lshlrev_b32_e32 v32, 7, v06089; GFX942-VGPR-NEXT: v_mov_b32_e32 v33, 1.06090; GFX942-VGPR-NEXT: v_mov_b32_e32 v34, 2.06091; GFX942-VGPR-NEXT: s_waitcnt lgkmcnt(0)6092; GFX942-VGPR-NEXT: global_load_dwordx4 v[28:31], v32, s[0:1] offset:1126093; GFX942-VGPR-NEXT: global_load_dwordx4 v[24:27], v32, s[0:1] offset:966094; GFX942-VGPR-NEXT: global_load_dwordx4 v[20:23], v32, s[0:1] offset:806095; GFX942-VGPR-NEXT: global_load_dwordx4 v[16:19], v32, s[0:1] offset:646096; GFX942-VGPR-NEXT: global_load_dwordx4 v[12:15], v32, s[0:1] offset:486097; GFX942-VGPR-NEXT: global_load_dwordx4 v[8:11], v32, s[0:1] offset:326098; GFX942-VGPR-NEXT: global_load_dwordx4 v[4:7], v32, s[0:1] offset:166099; GFX942-VGPR-NEXT: global_load_dwordx4 v[0:3], v32, s[0:1]6100; GFX942-VGPR-NEXT: s_waitcnt vmcnt(0)6101; GFX942-VGPR-NEXT: v_mfma_f32_32x32x1_2b_f32 v[0:31], v33, v34, v[0:31] cbsz:1 abid:2 blgp:36102; GFX942-VGPR-NEXT: s_nop 156103; GFX942-VGPR-NEXT: s_nop 16104; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[24:27], s[0:1] offset:966105; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[28:31], s[0:1] offset:1126106; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[16:19], s[0:1] offset:646107; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[20:23], s[0:1] offset:806108; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[8:11], s[0:1] offset:326109; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[12:15], s[0:1] offset:486110; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[0:3], s[0:1]6111; GFX942-VGPR-NEXT: global_store_dwordx4 v32, v[4:7], s[0:1] offset:166112; GFX942-VGPR-NEXT: s_endpgm6113bb:6114 %tid = call i32 @llvm.amdgcn.workitem.id.x()6115 %gep = getelementptr inbounds <32 x float>, ptr addrspace(1) %arg, i32 %tid6116 %in.1 = load <32 x float>, ptr addrspace(1) %gep6117 %mai.1 = tail call <32 x float> @llvm.amdgcn.mfma.f32.32x32x1f32(float 1.0, float 2.0, <32 x float> %in.1, i32 1, i32 2, i32 3)6118 store <32 x float> %mai.1, ptr addrspace(1) %gep6119 ret void6120}6121 6122attributes #0 = { "amdgpu-flat-work-group-size"="1,256" }6123;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:6124; GCN: {{.*}}6125; GFX908: {{.*}}6126; GFX908_A: {{.*}}6127; GFX90A_42: {{.*}}6128