brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.5 KiB · 2b04ab5 Raw
498 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1250 < %s | FileCheck -check-prefixes=GFX1250,GFX1250-GISEL %s4 5define i32 @test_flat_amdgcn_cooperative_atomic_load_32x4B_relaxed(ptr noundef readonly %addr)  {6; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_32x4B_relaxed:7; GFX1250:       ; %bb.0: ; %entry8; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x09; GFX1250-NEXT:    s_wait_kmcnt 0x010; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV11; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x012; GFX1250-NEXT:    s_set_pc_i64 s[30:31]13entry:14  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 0, metadata !0)15  ret i32 %016}17 18define <2 x i32> @test_flat_amdgcn_cooperative_atomic_load_16x8B_relaxed(ptr noundef readonly %addr)  {19; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_16x8B_relaxed:20; GFX1250:       ; %bb.0: ; %entry21; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x022; GFX1250-NEXT:    s_wait_kmcnt 0x023; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV24; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x025; GFX1250-NEXT:    s_set_pc_i64 s[30:31]26entry:27  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 0, metadata !0)28  ret <2 x i32> %029}30 31define <4 x i32> @test_flat_amdgcn_cooperative_atomic_load_8x16B_relaxed(ptr noundef readonly %addr)  {32; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_8x16B_relaxed:33; GFX1250:       ; %bb.0: ; %entry34; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x035; GFX1250-NEXT:    s_wait_kmcnt 0x036; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV37; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x038; GFX1250-NEXT:    s_set_pc_i64 s[30:31]39entry:40  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 0, metadata !0)41  ret <4 x i32> %042}43 44define void @test_flat_amdgcn_cooperative_atomic_store_32x4B_relaxed(ptr noundef %addr, i32 noundef %val)  {45; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_32x4B_relaxed:46; GFX1250:       ; %bb.0: ; %entry47; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x048; GFX1250-NEXT:    s_wait_kmcnt 0x049; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV50; GFX1250-NEXT:    s_wait_dscnt 0x051; GFX1250-NEXT:    s_set_pc_i64 s[30:31]52entry:53  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 0, metadata !0)54  ret void55}56 57define void @test_flat_amdgcn_cooperative_atomic_store_16x8B_relaxed(ptr noundef %addr, <2 x i32> noundef %val)  {58; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_16x8B_relaxed:59; GFX1250:       ; %bb.0: ; %entry60; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x061; GFX1250-NEXT:    s_wait_kmcnt 0x062; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV63; GFX1250-NEXT:    s_wait_dscnt 0x064; GFX1250-NEXT:    s_set_pc_i64 s[30:31]65entry:66  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 0, metadata !0)67  ret void68}69 70define void @test_flat_amdgcn_cooperative_atomic_store_8x16B_relaxed(ptr noundef %addr, <4 x i32> noundef %val)  {71; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_8x16B_relaxed:72; GFX1250:       ; %bb.0: ; %entry73; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x074; GFX1250-NEXT:    s_wait_kmcnt 0x075; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV76; GFX1250-NEXT:    s_wait_dscnt 0x077; GFX1250-NEXT:    s_set_pc_i64 s[30:31]78entry:79  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 0, metadata !0)80  ret void81}82 83define i32 @test_flat_amdgcn_cooperative_atomic_load_32x4B_acquire(ptr noundef readonly %addr)  {84; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_32x4B_acquire:85; GFX1250:       ; %bb.0: ; %entry86; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x087; GFX1250-NEXT:    s_wait_kmcnt 0x088; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV89; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x090; GFX1250-NEXT:    s_set_pc_i64 s[30:31]91entry:92  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 2, metadata !0)93  ret i32 %094}95 96define <2 x i32> @test_flat_amdgcn_cooperative_atomic_load_16x8B_acquire(ptr noundef readonly %addr)  {97; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_16x8B_acquire:98; GFX1250:       ; %bb.0: ; %entry99; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0100; GFX1250-NEXT:    s_wait_kmcnt 0x0101; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV102; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0103; GFX1250-NEXT:    s_set_pc_i64 s[30:31]104entry:105  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 2, metadata !0)106  ret <2 x i32> %0107}108 109define <4 x i32> @test_flat_amdgcn_cooperative_atomic_load_8x16B_acquire(ptr noundef readonly %addr)  {110; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_8x16B_acquire:111; GFX1250:       ; %bb.0: ; %entry112; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0113; GFX1250-NEXT:    s_wait_kmcnt 0x0114; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV115; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0116; GFX1250-NEXT:    s_set_pc_i64 s[30:31]117entry:118  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 2, metadata !0)119  ret <4 x i32> %0120}121 122define void @test_flat_amdgcn_cooperative_atomic_store_32x4B_release(ptr noundef %addr, i32 noundef %val)  {123; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_32x4B_release:124; GFX1250:       ; %bb.0: ; %entry125; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0126; GFX1250-NEXT:    s_wait_kmcnt 0x0127; GFX1250-NEXT:    s_wait_storecnt 0x0128; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV129; GFX1250-NEXT:    s_wait_dscnt 0x0130; GFX1250-NEXT:    s_set_pc_i64 s[30:31]131entry:132  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 3, metadata !0)133  ret void134}135 136define void @test_flat_amdgcn_cooperative_atomic_store_16x8B_release(ptr noundef %addr, <2 x i32> noundef %val)  {137; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_16x8B_release:138; GFX1250:       ; %bb.0: ; %entry139; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0140; GFX1250-NEXT:    s_wait_kmcnt 0x0141; GFX1250-NEXT:    s_wait_storecnt 0x0142; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV143; GFX1250-NEXT:    s_wait_dscnt 0x0144; GFX1250-NEXT:    s_set_pc_i64 s[30:31]145entry:146  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 3, metadata !0)147  ret void148}149 150define void @test_flat_amdgcn_cooperative_atomic_store_8x16B_release(ptr noundef %addr, <4 x i32> noundef %val)  {151; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_8x16B_release:152; GFX1250:       ; %bb.0: ; %entry153; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0154; GFX1250-NEXT:    s_wait_kmcnt 0x0155; GFX1250-NEXT:    s_wait_storecnt 0x0156; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV157; GFX1250-NEXT:    s_wait_dscnt 0x0158; GFX1250-NEXT:    s_set_pc_i64 s[30:31]159entry:160  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 3, metadata !0)161  ret void162}163 164define i32 @test_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst(ptr noundef readonly %addr)  {165; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst:166; GFX1250:       ; %bb.0: ; %entry167; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0168; GFX1250-NEXT:    s_wait_kmcnt 0x0169; GFX1250-NEXT:    s_wait_storecnt 0x0170; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV171; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0172; GFX1250-NEXT:    s_set_pc_i64 s[30:31]173entry:174  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 5, metadata !0)175  ret i32 %0176}177 178define <2 x i32> @test_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst(ptr noundef readonly %addr)  {179; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst:180; GFX1250:       ; %bb.0: ; %entry181; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0182; GFX1250-NEXT:    s_wait_kmcnt 0x0183; GFX1250-NEXT:    s_wait_storecnt 0x0184; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV185; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0186; GFX1250-NEXT:    s_set_pc_i64 s[30:31]187entry:188  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 5, metadata !0)189  ret <2 x i32> %0190}191 192define <4 x i32> @test_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst(ptr noundef readonly %addr)  {193; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst:194; GFX1250:       ; %bb.0: ; %entry195; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0196; GFX1250-NEXT:    s_wait_kmcnt 0x0197; GFX1250-NEXT:    s_wait_storecnt 0x0198; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV199; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0200; GFX1250-NEXT:    s_set_pc_i64 s[30:31]201entry:202  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 5, metadata !0)203  ret <4 x i32> %0204}205 206define void @test_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst(ptr noundef %addr, i32 noundef %val)  {207; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst:208; GFX1250:       ; %bb.0: ; %entry209; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0210; GFX1250-NEXT:    s_wait_kmcnt 0x0211; GFX1250-NEXT:    s_wait_storecnt 0x0212; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV213; GFX1250-NEXT:    s_wait_dscnt 0x0214; GFX1250-NEXT:    s_set_pc_i64 s[30:31]215entry:216  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 5, metadata !0)217  ret void218}219 220define void @test_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst(ptr noundef %addr, <2 x i32> noundef %val)  {221; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst:222; GFX1250:       ; %bb.0: ; %entry223; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0224; GFX1250-NEXT:    s_wait_kmcnt 0x0225; GFX1250-NEXT:    s_wait_storecnt 0x0226; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV227; GFX1250-NEXT:    s_wait_dscnt 0x0228; GFX1250-NEXT:    s_set_pc_i64 s[30:31]229entry:230  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 5, metadata !0)231  ret void232}233 234define void @test_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst(ptr noundef %addr, <4 x i32> noundef %val)  {235; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst:236; GFX1250:       ; %bb.0: ; %entry237; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0238; GFX1250-NEXT:    s_wait_kmcnt 0x0239; GFX1250-NEXT:    s_wait_storecnt 0x0240; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV241; GFX1250-NEXT:    s_wait_dscnt 0x0242; GFX1250-NEXT:    s_set_pc_i64 s[30:31]243entry:244  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 5, metadata !0)245  ret void246}247 248define i32 @test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_relaxed(ptr noundef readonly %addr)  {249; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_relaxed:250; GFX1250:       ; %bb.0: ; %entry251; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0252; GFX1250-NEXT:    s_wait_kmcnt 0x0253; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV254; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0255; GFX1250-NEXT:    s_set_pc_i64 s[30:31]256entry:257  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 0, metadata !1)258  ret i32 %0259}260 261define <2 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_relaxed(ptr noundef readonly %addr)  {262; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_relaxed:263; GFX1250:       ; %bb.0: ; %entry264; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0265; GFX1250-NEXT:    s_wait_kmcnt 0x0266; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV267; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0268; GFX1250-NEXT:    s_set_pc_i64 s[30:31]269entry:270  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 0, metadata !1)271  ret <2 x i32> %0272}273 274define <4 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_relaxed(ptr noundef readonly %addr)  {275; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_relaxed:276; GFX1250:       ; %bb.0: ; %entry277; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0278; GFX1250-NEXT:    s_wait_kmcnt 0x0279; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV280; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0281; GFX1250-NEXT:    s_set_pc_i64 s[30:31]282entry:283  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 0, metadata !1)284  ret <4 x i32> %0285}286 287define void @test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_relaxed(ptr noundef %addr, i32 noundef %val)  {288; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_relaxed:289; GFX1250:       ; %bb.0: ; %entry290; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0291; GFX1250-NEXT:    s_wait_kmcnt 0x0292; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV293; GFX1250-NEXT:    s_wait_dscnt 0x0294; GFX1250-NEXT:    s_set_pc_i64 s[30:31]295entry:296  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 0, metadata !1)297  ret void298}299 300define void @test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_relaxed(ptr noundef %addr, <2 x i32> noundef %val)  {301; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_relaxed:302; GFX1250:       ; %bb.0: ; %entry303; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0304; GFX1250-NEXT:    s_wait_kmcnt 0x0305; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV306; GFX1250-NEXT:    s_wait_dscnt 0x0307; GFX1250-NEXT:    s_set_pc_i64 s[30:31]308entry:309  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 0, metadata !1)310  ret void311}312 313define void @test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_relaxed(ptr noundef %addr, <4 x i32> noundef %val)  {314; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_relaxed:315; GFX1250:       ; %bb.0: ; %entry316; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0317; GFX1250-NEXT:    s_wait_kmcnt 0x0318; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV319; GFX1250-NEXT:    s_wait_dscnt 0x0320; GFX1250-NEXT:    s_set_pc_i64 s[30:31]321entry:322  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 0, metadata !1)323  ret void324}325 326define i32 @test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_acquire(ptr noundef readonly %addr)  {327; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_acquire:328; GFX1250:       ; %bb.0: ; %entry329; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0330; GFX1250-NEXT:    s_wait_kmcnt 0x0331; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV332; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0333; GFX1250-NEXT:    s_set_pc_i64 s[30:31]334entry:335  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 2, metadata !1)336  ret i32 %0337}338 339define <2 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_acquire(ptr noundef readonly %addr)  {340; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_acquire:341; GFX1250:       ; %bb.0: ; %entry342; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0343; GFX1250-NEXT:    s_wait_kmcnt 0x0344; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV345; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0346; GFX1250-NEXT:    s_set_pc_i64 s[30:31]347entry:348  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 2, metadata !1)349  ret <2 x i32> %0350}351 352define <4 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_acquire(ptr noundef readonly %addr)  {353; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_acquire:354; GFX1250:       ; %bb.0: ; %entry355; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0356; GFX1250-NEXT:    s_wait_kmcnt 0x0357; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV358; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0359; GFX1250-NEXT:    s_set_pc_i64 s[30:31]360entry:361  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 2, metadata !1)362  ret <4 x i32> %0363}364 365define void @test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_release(ptr noundef %addr, i32 noundef %val)  {366; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_release:367; GFX1250:       ; %bb.0: ; %entry368; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0369; GFX1250-NEXT:    s_wait_kmcnt 0x0370; GFX1250-NEXT:    s_wait_storecnt 0x0371; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV372; GFX1250-NEXT:    s_wait_dscnt 0x0373; GFX1250-NEXT:    s_set_pc_i64 s[30:31]374entry:375  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 3, metadata !1)376  ret void377}378 379define void @test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_release(ptr noundef %addr, <2 x i32> noundef %val)  {380; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_release:381; GFX1250:       ; %bb.0: ; %entry382; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0383; GFX1250-NEXT:    s_wait_kmcnt 0x0384; GFX1250-NEXT:    s_wait_storecnt 0x0385; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV386; GFX1250-NEXT:    s_wait_dscnt 0x0387; GFX1250-NEXT:    s_set_pc_i64 s[30:31]388entry:389  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 3, metadata !1)390  ret void391}392 393define void @test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_release(ptr noundef %addr, <4 x i32> noundef %val)  {394; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_release:395; GFX1250:       ; %bb.0: ; %entry396; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0397; GFX1250-NEXT:    s_wait_kmcnt 0x0398; GFX1250-NEXT:    s_wait_storecnt 0x0399; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV400; GFX1250-NEXT:    s_wait_dscnt 0x0401; GFX1250-NEXT:    s_set_pc_i64 s[30:31]402entry:403  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 3, metadata !1)404  ret void405}406 407define i32 @test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst(ptr noundef readonly %addr)  {408; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst:409; GFX1250:       ; %bb.0: ; %entry410; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0411; GFX1250-NEXT:    s_wait_kmcnt 0x0412; GFX1250-NEXT:    s_wait_storecnt 0x0413; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV414; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0415; GFX1250-NEXT:    s_set_pc_i64 s[30:31]416entry:417  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 5, metadata !1)418  ret i32 %0419}420 421define <2 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst(ptr noundef readonly %addr)  {422; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst:423; GFX1250:       ; %bb.0: ; %entry424; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0425; GFX1250-NEXT:    s_wait_kmcnt 0x0426; GFX1250-NEXT:    s_wait_storecnt 0x0427; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV428; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0429; GFX1250-NEXT:    s_set_pc_i64 s[30:31]430entry:431  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 5, metadata !1)432  ret <2 x i32> %0433}434 435define <4 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst(ptr noundef readonly %addr)  {436; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst:437; GFX1250:       ; %bb.0: ; %entry438; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0439; GFX1250-NEXT:    s_wait_kmcnt 0x0440; GFX1250-NEXT:    s_wait_storecnt 0x0441; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV442; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0443; GFX1250-NEXT:    s_set_pc_i64 s[30:31]444entry:445  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 5, metadata !1)446  ret <4 x i32> %0447}448 449define void @test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst(ptr noundef %addr, i32 noundef %val)  {450; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst:451; GFX1250:       ; %bb.0: ; %entry452; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0453; GFX1250-NEXT:    s_wait_kmcnt 0x0454; GFX1250-NEXT:    s_wait_storecnt 0x0455; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV456; GFX1250-NEXT:    s_wait_dscnt 0x0457; GFX1250-NEXT:    s_set_pc_i64 s[30:31]458entry:459  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 5, metadata !1)460  ret void461}462 463define void @test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst(ptr noundef %addr, <2 x i32> noundef %val)  {464; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst:465; GFX1250:       ; %bb.0: ; %entry466; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0467; GFX1250-NEXT:    s_wait_kmcnt 0x0468; GFX1250-NEXT:    s_wait_storecnt 0x0469; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV470; GFX1250-NEXT:    s_wait_dscnt 0x0471; GFX1250-NEXT:    s_set_pc_i64 s[30:31]472entry:473  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 5, metadata !1)474  ret void475}476 477define void @test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst(ptr noundef %addr, <4 x i32> noundef %val)  {478; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst:479; GFX1250:       ; %bb.0: ; %entry480; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0481; GFX1250-NEXT:    s_wait_kmcnt 0x0482; GFX1250-NEXT:    s_wait_storecnt 0x0483; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV484; GFX1250-NEXT:    s_wait_dscnt 0x0485; GFX1250-NEXT:    s_set_pc_i64 s[30:31]486entry:487  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 5, metadata !1)488  ret void489}490 491!0 = !{ !"workgroup" }492!1 = !{ !"workgroup-one-as" }493 494;; GFX1250: {{.*}}495;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:496; GFX1250-GISEL: {{.*}}497; GFX1250-SDAG: {{.*}}498