340 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -misched-cluster=0 < %s | FileCheck -check-prefix=GCN %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -misched-cluster=0 -amdgpu-igrouplp-exact-solver-max-branches=250000 < %s | FileCheck -check-prefix=EXACTCUTOFF %s4 5declare <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16..i16(<8 x half>, <16 x half>, <8 x half>, i16)6 7define amdgpu_kernel void @test_sched_group_barrier_pipeline_SWMMAC_cluster(ptr addrspace(3) noalias %in, ptr addrspace(3) noalias %out) #0 {8; GCN-LABEL: test_sched_group_barrier_pipeline_SWMMAC_cluster:9; GCN: ; %bb.0: ; %entry10; GCN-NEXT: s_load_b64 s[0:1], s[4:5], 0x2411; GCN-NEXT: v_lshlrev_b32_e32 v0, 4, v012; GCN-NEXT: v_mov_b32_e32 v48, 013; GCN-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)14; GCN-NEXT: v_and_b32_e32 v28, 0x3ff0, v015; GCN-NEXT: s_wait_kmcnt 0x016; GCN-NEXT: v_add_nc_u32_e32 v0, s0, v2817; GCN-NEXT: v_dual_mov_b32 v50, s1 :: v_dual_add_nc_u32 v49, s1, v2818; GCN-NEXT: ds_load_b128 v[8:11], v019; GCN-NEXT: ds_load_b128 v[12:15], v0 offset:51220; GCN-NEXT: ds_load_b128 v[16:19], v0 offset:153621; GCN-NEXT: ds_load_b128 v[20:23], v0 offset:307222; GCN-NEXT: ds_load_b128 v[24:27], v0 offset:512023; GCN-NEXT: ds_load_b128 v[4:7], v0 offset:1128024; GCN-NEXT: ds_load_b128 v[0:3], v0 offset:1126425; GCN-NEXT: ; sched_group_barrier mask(0x00000100) size(7) SyncID(0)26; GCN-NEXT: s_wait_dscnt 0x627; GCN-NEXT: v_mov_b32_e32 v31, v1128; GCN-NEXT: s_wait_dscnt 0x529; GCN-NEXT: v_mov_b32_e32 v35, v1530; GCN-NEXT: s_wait_dscnt 0x431; GCN-NEXT: v_mov_b32_e32 v39, v1932; GCN-NEXT: s_wait_dscnt 0x333; GCN-NEXT: v_mov_b32_e32 v43, v2334; GCN-NEXT: s_wait_dscnt 0x235; GCN-NEXT: v_dual_mov_b32 v47, v27 :: v_dual_mov_b32 v30, v1036; GCN-NEXT: v_dual_mov_b32 v29, v9 :: v_dual_mov_b32 v28, v837; GCN-NEXT: v_dual_mov_b32 v34, v14 :: v_dual_mov_b32 v33, v1338; GCN-NEXT: v_mov_b32_e32 v32, v1239; GCN-NEXT: v_dual_mov_b32 v38, v18 :: v_dual_mov_b32 v37, v1740; GCN-NEXT: v_mov_b32_e32 v36, v1641; GCN-NEXT: v_dual_mov_b32 v42, v22 :: v_dual_mov_b32 v41, v2142; GCN-NEXT: v_mov_b32_e32 v40, v2043; GCN-NEXT: v_dual_mov_b32 v46, v26 :: v_dual_mov_b32 v45, v2544; GCN-NEXT: v_mov_b32_e32 v44, v2445; GCN-NEXT: s_wait_dscnt 0x046; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[28:31], v[8:11], v[0:7], v4847; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[32:35], v[12:15], v[0:7], v4848; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[36:39], v[16:19], v[0:7], v4849; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[40:43], v[20:23], v[0:7], v4850; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[44:47], v[24:27], v[0:7], v4851; GCN-NEXT: ds_store_b128 v49, v[28:31]52; GCN-NEXT: ds_store_b128 v50, v[32:35] offset:51253; GCN-NEXT: ds_store_b128 v50, v[36:39] offset:102454; GCN-NEXT: ds_store_b128 v50, v[40:43] offset:153655; GCN-NEXT: ds_store_b128 v50, v[44:47] offset:204856; GCN-NEXT: ; sched_group_barrier mask(0x00000008) size(5) SyncID(0)57; GCN-NEXT: ; sched_group_barrier mask(0x00000200) size(5) SyncID(0)58; GCN-NEXT: s_endpgm59;60; EXACTCUTOFF-LABEL: test_sched_group_barrier_pipeline_SWMMAC_cluster:61; EXACTCUTOFF: ; %bb.0: ; %entry62; EXACTCUTOFF-NEXT: s_load_b64 s[0:1], s[4:5], 0x2463; EXACTCUTOFF-NEXT: v_lshlrev_b32_e32 v0, 4, v064; EXACTCUTOFF-NEXT: v_mov_b32_e32 v48, 065; EXACTCUTOFF-NEXT: s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)66; EXACTCUTOFF-NEXT: v_and_b32_e32 v28, 0x3ff0, v067; EXACTCUTOFF-NEXT: s_wait_kmcnt 0x068; EXACTCUTOFF-NEXT: v_add_nc_u32_e32 v0, s0, v2869; EXACTCUTOFF-NEXT: v_dual_mov_b32 v50, s1 :: v_dual_add_nc_u32 v49, s1, v2870; EXACTCUTOFF-NEXT: ds_load_b128 v[8:11], v071; EXACTCUTOFF-NEXT: ds_load_b128 v[12:15], v0 offset:51272; EXACTCUTOFF-NEXT: ds_load_b128 v[16:19], v0 offset:153673; EXACTCUTOFF-NEXT: ds_load_b128 v[20:23], v0 offset:307274; EXACTCUTOFF-NEXT: ds_load_b128 v[24:27], v0 offset:512075; EXACTCUTOFF-NEXT: ds_load_b128 v[4:7], v0 offset:1128076; EXACTCUTOFF-NEXT: ds_load_b128 v[0:3], v0 offset:1126477; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000100) size(7) SyncID(0)78; EXACTCUTOFF-NEXT: s_wait_dscnt 0x679; EXACTCUTOFF-NEXT: v_mov_b32_e32 v31, v1180; EXACTCUTOFF-NEXT: s_wait_dscnt 0x581; EXACTCUTOFF-NEXT: v_mov_b32_e32 v35, v1582; EXACTCUTOFF-NEXT: s_wait_dscnt 0x483; EXACTCUTOFF-NEXT: v_mov_b32_e32 v39, v1984; EXACTCUTOFF-NEXT: s_wait_dscnt 0x385; EXACTCUTOFF-NEXT: v_mov_b32_e32 v43, v2386; EXACTCUTOFF-NEXT: s_wait_dscnt 0x287; EXACTCUTOFF-NEXT: v_dual_mov_b32 v47, v27 :: v_dual_mov_b32 v30, v1088; EXACTCUTOFF-NEXT: v_dual_mov_b32 v29, v9 :: v_dual_mov_b32 v28, v889; EXACTCUTOFF-NEXT: v_dual_mov_b32 v34, v14 :: v_dual_mov_b32 v33, v1390; EXACTCUTOFF-NEXT: v_mov_b32_e32 v32, v1291; EXACTCUTOFF-NEXT: v_dual_mov_b32 v38, v18 :: v_dual_mov_b32 v37, v1792; EXACTCUTOFF-NEXT: v_mov_b32_e32 v36, v1693; EXACTCUTOFF-NEXT: v_dual_mov_b32 v42, v22 :: v_dual_mov_b32 v41, v2194; EXACTCUTOFF-NEXT: v_mov_b32_e32 v40, v2095; EXACTCUTOFF-NEXT: v_dual_mov_b32 v46, v26 :: v_dual_mov_b32 v45, v2596; EXACTCUTOFF-NEXT: v_mov_b32_e32 v44, v2497; EXACTCUTOFF-NEXT: s_wait_dscnt 0x098; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[28:31], v[8:11], v[0:7], v4899; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[32:35], v[12:15], v[0:7], v48100; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[36:39], v[16:19], v[0:7], v48101; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[40:43], v[20:23], v[0:7], v48102; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[44:47], v[24:27], v[0:7], v48103; EXACTCUTOFF-NEXT: ds_store_b128 v49, v[28:31]104; EXACTCUTOFF-NEXT: ds_store_b128 v50, v[32:35] offset:512105; EXACTCUTOFF-NEXT: ds_store_b128 v50, v[36:39] offset:1024106; EXACTCUTOFF-NEXT: ds_store_b128 v50, v[40:43] offset:1536107; EXACTCUTOFF-NEXT: ds_store_b128 v50, v[44:47] offset:2048108; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000008) size(5) SyncID(0)109; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000200) size(5) SyncID(0)110; EXACTCUTOFF-NEXT: s_endpgm111entry:112 %idx = call i32 @llvm.amdgcn.workitem.id.x()113 %load.0.addr = getelementptr <8 x half>, ptr addrspace(3) %in, i32 %idx114 %load.0 = load <8 x half>, ptr addrspace(3) %load.0.addr115 %load.1.addr = getelementptr <8 x half>, ptr addrspace(3) %load.0.addr, i32 32116 %load.1 = load <8 x half>, ptr addrspace(3) %load.1.addr117 %load.2.addr = getelementptr <8 x half>, ptr addrspace(3) %load.1.addr, i32 64118 %load.2 = load <8 x half>, ptr addrspace(3) %load.2.addr119 %load.3.addr = getelementptr <8 x half>, ptr addrspace(3) %load.2.addr, i32 96120 %load.3 = load <8 x half>, ptr addrspace(3) %load.3.addr121 %load.4.addr = getelementptr <8 x half>, ptr addrspace(3) %load.3.addr, i32 128122 %load.4 = load <8 x half>, ptr addrspace(3) %load.4.addr123 %load.b.addr = getelementptr <16 x half>, ptr addrspace(3) %load.4.addr, i32 192124 %load.b = load <16 x half>, ptr addrspace(3) %load.b.addr125 %mai.0 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.0, <16 x half> %load.b, <8 x half> %load.0, i1 0)126 %mai.1 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.1, <16 x half> %load.b, <8 x half> %load.1, i1 0)127 %mai.2 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.2, <16 x half> %load.b, <8 x half> %load.2, i1 0)128 %mai.3 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.3, <16 x half> %load.b, <8 x half> %load.3, i1 0)129 %mai.4 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.4, <16 x half> %load.b, <8 x half> %load.4, i1 0)130 %store.0.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 %idx131 store <8 x half> %mai.0, ptr addrspace(3) %store.0.addr132 %store.1.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 32133 store <8 x half> %mai.1, ptr addrspace(3) %store.1.addr134 %store.2.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 64135 store <8 x half> %mai.2, ptr addrspace(3) %store.2.addr136 %store.3.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 96137 store <8 x half> %mai.3, ptr addrspace(3) %store.3.addr138 %store.4.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 128139 store <8 x half> %mai.4, ptr addrspace(3) %store.4.addr140 ; 7 DS read141 call void @llvm.amdgcn.sched.group.barrier(i32 256, i32 7, i32 0)142 ; 5 SWMMAC143 call void @llvm.amdgcn.sched.group.barrier(i32 8, i32 5, i32 0)144 ; 5 DS write145 call void @llvm.amdgcn.sched.group.barrier(i32 512, i32 5, i32 0)146 ret void147}148 149define amdgpu_kernel void @test_sched_group_barrier_pipeline_SWMMAC_interleaved(ptr addrspace(3) noalias %in, ptr addrspace(3) noalias %out) #0 {150; GCN-LABEL: test_sched_group_barrier_pipeline_SWMMAC_interleaved:151; GCN: ; %bb.0: ; %entry152; GCN-NEXT: s_load_b64 s[0:1], s[4:5], 0x24153; GCN-NEXT: v_and_b32_e32 v16, 0x3ff, v0154; GCN-NEXT: v_mov_b32_e32 v18, 0155; GCN-NEXT: s_wait_kmcnt 0x0156; GCN-NEXT: s_delay_alu instid0(VALU_DEP_2)157; GCN-NEXT: v_lshl_add_u32 v17, v16, 5, s0158; GCN-NEXT: v_lshl_add_u32 v16, v16, 4, s1159; GCN-NEXT: ds_load_b128 v[8:11], v17 offset:1024160; GCN-NEXT: ds_load_b128 v[0:3], v17161; GCN-NEXT: ds_load_b128 v[4:7], v17 offset:16162; GCN-NEXT: ; sched_group_barrier mask(0x00000100) size(3) SyncID(0)163; GCN-NEXT: s_wait_dscnt 0x2164; GCN-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10165; GCN-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8166; GCN-NEXT: s_wait_dscnt 0x0167; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1)168; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18169; GCN-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)170; GCN-NEXT: ds_store_b128 v16, v[12:15]171; GCN-NEXT: ds_load_b128 v[8:11], v17 offset:2560172; GCN-NEXT: v_mov_b32_e32 v16, s1173; GCN-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)174; GCN-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)175; GCN-NEXT: s_wait_dscnt 0x0176; GCN-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10177; GCN-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8178; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1)179; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18180; GCN-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)181; GCN-NEXT: ds_store_b128 v16, v[12:15] offset:512182; GCN-NEXT: ds_load_b128 v[8:11], v17 offset:4608183; GCN-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)184; GCN-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)185; GCN-NEXT: s_wait_dscnt 0x0186; GCN-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10187; GCN-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8188; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1)189; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18190; GCN-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)191; GCN-NEXT: ds_store_b128 v16, v[12:15] offset:1024192; GCN-NEXT: ds_load_b128 v[8:11], v17 offset:7168193; GCN-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)194; GCN-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)195; GCN-NEXT: s_wait_dscnt 0x0196; GCN-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10197; GCN-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8198; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1)199; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18200; GCN-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)201; GCN-NEXT: ds_store_b128 v16, v[12:15] offset:1536202; GCN-NEXT: ds_load_b128 v[8:11], v17 offset:10240203; GCN-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)204; GCN-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)205; GCN-NEXT: s_wait_dscnt 0x0206; GCN-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10207; GCN-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8208; GCN-NEXT: s_delay_alu instid0(VALU_DEP_1)209; GCN-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18210; GCN-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)211; GCN-NEXT: ds_store_b128 v16, v[12:15] offset:2048212; GCN-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)213; GCN-NEXT: s_endpgm214;215; EXACTCUTOFF-LABEL: test_sched_group_barrier_pipeline_SWMMAC_interleaved:216; EXACTCUTOFF: ; %bb.0: ; %entry217; EXACTCUTOFF-NEXT: s_load_b64 s[0:1], s[4:5], 0x24218; EXACTCUTOFF-NEXT: v_and_b32_e32 v16, 0x3ff, v0219; EXACTCUTOFF-NEXT: v_mov_b32_e32 v18, 0220; EXACTCUTOFF-NEXT: s_wait_kmcnt 0x0221; EXACTCUTOFF-NEXT: s_delay_alu instid0(VALU_DEP_2)222; EXACTCUTOFF-NEXT: v_lshl_add_u32 v17, v16, 5, s0223; EXACTCUTOFF-NEXT: v_lshl_add_u32 v16, v16, 4, s1224; EXACTCUTOFF-NEXT: ds_load_b128 v[8:11], v17 offset:1024225; EXACTCUTOFF-NEXT: ds_load_b128 v[0:3], v17226; EXACTCUTOFF-NEXT: ds_load_b128 v[4:7], v17 offset:16227; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000100) size(3) SyncID(0)228; EXACTCUTOFF-NEXT: s_wait_dscnt 0x2229; EXACTCUTOFF-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10230; EXACTCUTOFF-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8231; EXACTCUTOFF-NEXT: s_wait_dscnt 0x0232; EXACTCUTOFF-NEXT: s_delay_alu instid0(VALU_DEP_1)233; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18234; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)235; EXACTCUTOFF-NEXT: ds_store_b128 v16, v[12:15]236; EXACTCUTOFF-NEXT: ds_load_b128 v[8:11], v17 offset:2560237; EXACTCUTOFF-NEXT: v_mov_b32_e32 v16, s1238; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)239; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)240; EXACTCUTOFF-NEXT: s_wait_dscnt 0x0241; EXACTCUTOFF-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10242; EXACTCUTOFF-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8243; EXACTCUTOFF-NEXT: s_delay_alu instid0(VALU_DEP_1)244; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18245; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)246; EXACTCUTOFF-NEXT: ds_store_b128 v16, v[12:15] offset:512247; EXACTCUTOFF-NEXT: ds_load_b128 v[8:11], v17 offset:4608248; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)249; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)250; EXACTCUTOFF-NEXT: s_wait_dscnt 0x0251; EXACTCUTOFF-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10252; EXACTCUTOFF-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8253; EXACTCUTOFF-NEXT: s_delay_alu instid0(VALU_DEP_1)254; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18255; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)256; EXACTCUTOFF-NEXT: ds_store_b128 v16, v[12:15] offset:1024257; EXACTCUTOFF-NEXT: ds_load_b128 v[8:11], v17 offset:7168258; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)259; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)260; EXACTCUTOFF-NEXT: s_wait_dscnt 0x0261; EXACTCUTOFF-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10262; EXACTCUTOFF-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8263; EXACTCUTOFF-NEXT: s_delay_alu instid0(VALU_DEP_1)264; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18265; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)266; EXACTCUTOFF-NEXT: ds_store_b128 v16, v[12:15] offset:1536267; EXACTCUTOFF-NEXT: ds_load_b128 v[8:11], v17 offset:10240268; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)269; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000100) size(1) SyncID(0)270; EXACTCUTOFF-NEXT: s_wait_dscnt 0x0271; EXACTCUTOFF-NEXT: v_dual_mov_b32 v15, v11 :: v_dual_mov_b32 v14, v10272; EXACTCUTOFF-NEXT: v_dual_mov_b32 v13, v9 :: v_dual_mov_b32 v12, v8273; EXACTCUTOFF-NEXT: s_delay_alu instid0(VALU_DEP_1)274; EXACTCUTOFF-NEXT: v_swmmac_f16_16x16x32_f16 v[12:15], v[8:11], v[0:7], v18275; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000008) size(1) SyncID(0)276; EXACTCUTOFF-NEXT: ds_store_b128 v16, v[12:15] offset:2048277; EXACTCUTOFF-NEXT: ; sched_group_barrier mask(0x00000200) size(1) SyncID(0)278; EXACTCUTOFF-NEXT: s_endpgm279entry:280 %idx = call i32 @llvm.amdgcn.workitem.id.x()281 %load.b.addr = getelementptr <16 x half>, ptr addrspace(3) %in, i32 %idx282 %load.b = load <16 x half>, ptr addrspace(3) %load.b.addr283 %load.0.addr = getelementptr <8 x half>, ptr addrspace(3) %load.b.addr, i32 64284 %load.0 = load <8 x half>, ptr addrspace(3) %load.0.addr285 %load.1.addr = getelementptr <8 x half>, ptr addrspace(3) %load.0.addr, i32 96286 %load.1 = load <8 x half>, ptr addrspace(3) %load.1.addr287 %load.2.addr = getelementptr <8 x half>, ptr addrspace(3) %load.1.addr, i32 128288 %load.2 = load <8 x half>, ptr addrspace(3) %load.2.addr289 %load.3.addr = getelementptr <8 x half>, ptr addrspace(3) %load.2.addr, i32 160290 %load.3 = load <8 x half>, ptr addrspace(3) %load.3.addr291 %load.4.addr = getelementptr <8 x half>, ptr addrspace(3) %load.3.addr, i32 192292 %load.4 = load <8 x half>, ptr addrspace(3) %load.4.addr293 %mai.0 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.0, <16 x half> %load.b, <8 x half> %load.0, i1 0)294 %mai.1 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.1, <16 x half> %load.b, <8 x half> %load.1, i1 0)295 %mai.2 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.2, <16 x half> %load.b, <8 x half> %load.2, i1 0)296 %mai.3 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.3, <16 x half> %load.b, <8 x half> %load.3, i1 0)297 %mai.4 = call <8 x half> @llvm.amdgcn.swmmac.f16.16x16x32.f16.v8f16.v8f16.v16f16.i16(<8 x half> %load.4, <16 x half> %load.b, <8 x half> %load.4, i1 0)298 %store.0.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 %idx299 store <8 x half> %mai.0, ptr addrspace(3) %store.0.addr300 %store.1.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 32301 store <8 x half> %mai.1, ptr addrspace(3) %store.1.addr302 %store.2.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 64303 store <8 x half> %mai.2, ptr addrspace(3) %store.2.addr304 %store.3.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 96305 store <8 x half> %mai.3, ptr addrspace(3) %store.3.addr306 %store.4.addr = getelementptr <8 x half>, ptr addrspace(3) %out, i32 128307 store <8 x half> %mai.4, ptr addrspace(3) %store.4.addr308 ; 3 DS read309 call void @llvm.amdgcn.sched.group.barrier(i32 256, i32 3, i32 0)310 ; 1 SWMMAC311 call void @llvm.amdgcn.sched.group.barrier(i32 8, i32 1, i32 0)312 ; 1 DS write313 call void @llvm.amdgcn.sched.group.barrier(i32 512, i32 1, i32 0)314 ; 1 DS read315 call void @llvm.amdgcn.sched.group.barrier(i32 256, i32 1, i32 0)316 ; 1 SWMMAC317 call void @llvm.amdgcn.sched.group.barrier(i32 8, i32 1, i32 0)318 ; 1 DS write319 call void @llvm.amdgcn.sched.group.barrier(i32 512, i32 1, i32 0)320 ; 1 DS read321 call void @llvm.amdgcn.sched.group.barrier(i32 256, i32 1, i32 0)322 ; 1 SWMMAC323 call void @llvm.amdgcn.sched.group.barrier(i32 8, i32 1, i32 0)324 ; 1 DS write325 call void @llvm.amdgcn.sched.group.barrier(i32 512, i32 1, i32 0)326 ; 1 DS read327 call void @llvm.amdgcn.sched.group.barrier(i32 256, i32 1, i32 0)328 ; 1 SWMMAC329 call void @llvm.amdgcn.sched.group.barrier(i32 8, i32 1, i32 0)330 ; 1 DS write331 call void @llvm.amdgcn.sched.group.barrier(i32 512, i32 1, i32 0)332 ; 1 DS read333 call void @llvm.amdgcn.sched.group.barrier(i32 256, i32 1, i32 0)334 ; 1 SWMMAC335 call void @llvm.amdgcn.sched.group.barrier(i32 8, i32 1, i32 0)336 ; 1 DS write337 call void @llvm.amdgcn.sched.group.barrier(i32 512, i32 1, i32 0)338 ret void339}340