brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.8 KiB · 329b761 Raw
480 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:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV128; GFX1250-NEXT:    s_wait_dscnt 0x0129; GFX1250-NEXT:    s_set_pc_i64 s[30:31]130entry:131  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 3, metadata !0)132  ret void133}134 135define void @test_flat_amdgcn_cooperative_atomic_store_16x8B_release(ptr noundef %addr, <2 x i32> noundef %val)  {136; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_16x8B_release:137; GFX1250:       ; %bb.0: ; %entry138; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0139; GFX1250-NEXT:    s_wait_kmcnt 0x0140; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV141; GFX1250-NEXT:    s_wait_dscnt 0x0142; GFX1250-NEXT:    s_set_pc_i64 s[30:31]143entry:144  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 3, metadata !0)145  ret void146}147 148define void @test_flat_amdgcn_cooperative_atomic_store_8x16B_release(ptr noundef %addr, <4 x i32> noundef %val)  {149; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_8x16B_release:150; GFX1250:       ; %bb.0: ; %entry151; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0152; GFX1250-NEXT:    s_wait_kmcnt 0x0153; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV154; GFX1250-NEXT:    s_wait_dscnt 0x0155; GFX1250-NEXT:    s_set_pc_i64 s[30:31]156entry:157  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 3, metadata !0)158  ret void159}160 161define i32 @test_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst(ptr noundef readonly %addr)  {162; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst:163; GFX1250:       ; %bb.0: ; %entry164; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0165; GFX1250-NEXT:    s_wait_kmcnt 0x0166; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV167; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0168; GFX1250-NEXT:    s_set_pc_i64 s[30:31]169entry:170  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 5, metadata !0)171  ret i32 %0172}173 174define <2 x i32> @test_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst(ptr noundef readonly %addr)  {175; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst:176; GFX1250:       ; %bb.0: ; %entry177; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0178; GFX1250-NEXT:    s_wait_kmcnt 0x0179; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV180; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0181; GFX1250-NEXT:    s_set_pc_i64 s[30:31]182entry:183  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 5, metadata !0)184  ret <2 x i32> %0185}186 187define <4 x i32> @test_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst(ptr noundef readonly %addr)  {188; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst:189; GFX1250:       ; %bb.0: ; %entry190; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0191; GFX1250-NEXT:    s_wait_kmcnt 0x0192; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV193; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0194; GFX1250-NEXT:    s_set_pc_i64 s[30:31]195entry:196  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 5, metadata !0)197  ret <4 x i32> %0198}199 200define void @test_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst(ptr noundef %addr, i32 noundef %val)  {201; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst:202; GFX1250:       ; %bb.0: ; %entry203; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0204; GFX1250-NEXT:    s_wait_kmcnt 0x0205; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV206; GFX1250-NEXT:    s_wait_dscnt 0x0207; GFX1250-NEXT:    s_set_pc_i64 s[30:31]208entry:209  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 5, metadata !0)210  ret void211}212 213define void @test_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst(ptr noundef %addr, <2 x i32> noundef %val)  {214; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst:215; GFX1250:       ; %bb.0: ; %entry216; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0217; GFX1250-NEXT:    s_wait_kmcnt 0x0218; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV219; GFX1250-NEXT:    s_wait_dscnt 0x0220; GFX1250-NEXT:    s_set_pc_i64 s[30:31]221entry:222  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 5, metadata !0)223  ret void224}225 226define void @test_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst(ptr noundef %addr, <4 x i32> noundef %val)  {227; GFX1250-LABEL: test_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst:228; GFX1250:       ; %bb.0: ; %entry229; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0230; GFX1250-NEXT:    s_wait_kmcnt 0x0231; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV232; GFX1250-NEXT:    s_wait_dscnt 0x0233; GFX1250-NEXT:    s_set_pc_i64 s[30:31]234entry:235  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 5, metadata !0)236  ret void237}238 239define i32 @test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_relaxed(ptr noundef readonly %addr)  {240; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_relaxed:241; GFX1250:       ; %bb.0: ; %entry242; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0243; GFX1250-NEXT:    s_wait_kmcnt 0x0244; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV245; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0246; GFX1250-NEXT:    s_set_pc_i64 s[30:31]247entry:248  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 0, metadata !1)249  ret i32 %0250}251 252define <2 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_relaxed(ptr noundef readonly %addr)  {253; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_relaxed:254; GFX1250:       ; %bb.0: ; %entry255; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0256; GFX1250-NEXT:    s_wait_kmcnt 0x0257; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV258; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0259; GFX1250-NEXT:    s_set_pc_i64 s[30:31]260entry:261  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 0, metadata !1)262  ret <2 x i32> %0263}264 265define <4 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_relaxed(ptr noundef readonly %addr)  {266; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_relaxed:267; GFX1250:       ; %bb.0: ; %entry268; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0269; GFX1250-NEXT:    s_wait_kmcnt 0x0270; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV271; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0272; GFX1250-NEXT:    s_set_pc_i64 s[30:31]273entry:274  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 0, metadata !1)275  ret <4 x i32> %0276}277 278define void @test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_relaxed(ptr noundef %addr, i32 noundef %val)  {279; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_relaxed:280; GFX1250:       ; %bb.0: ; %entry281; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0282; GFX1250-NEXT:    s_wait_kmcnt 0x0283; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV284; GFX1250-NEXT:    s_wait_dscnt 0x0285; GFX1250-NEXT:    s_set_pc_i64 s[30:31]286entry:287  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 0, metadata !1)288  ret void289}290 291define void @test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_relaxed(ptr noundef %addr, <2 x i32> noundef %val)  {292; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_relaxed:293; GFX1250:       ; %bb.0: ; %entry294; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0295; GFX1250-NEXT:    s_wait_kmcnt 0x0296; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV297; GFX1250-NEXT:    s_wait_dscnt 0x0298; GFX1250-NEXT:    s_set_pc_i64 s[30:31]299entry:300  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 0, metadata !1)301  ret void302}303 304define void @test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_relaxed(ptr noundef %addr, <4 x i32> noundef %val)  {305; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_relaxed:306; GFX1250:       ; %bb.0: ; %entry307; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0308; GFX1250-NEXT:    s_wait_kmcnt 0x0309; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV310; GFX1250-NEXT:    s_wait_dscnt 0x0311; GFX1250-NEXT:    s_set_pc_i64 s[30:31]312entry:313  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 0, metadata !1)314  ret void315}316 317define i32 @test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_acquire(ptr noundef readonly %addr)  {318; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_acquire:319; GFX1250:       ; %bb.0: ; %entry320; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0321; GFX1250-NEXT:    s_wait_kmcnt 0x0322; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV323; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0324; GFX1250-NEXT:    s_set_pc_i64 s[30:31]325entry:326  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 2, metadata !1)327  ret i32 %0328}329 330define <2 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_acquire(ptr noundef readonly %addr)  {331; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_acquire:332; GFX1250:       ; %bb.0: ; %entry333; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0334; GFX1250-NEXT:    s_wait_kmcnt 0x0335; GFX1250-NEXT:    flat_load_b64 v[0:1], v[0:1] scope:SCOPE_DEV336; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0337; GFX1250-NEXT:    s_set_pc_i64 s[30:31]338entry:339  %0 = tail call <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 2, metadata !1)340  ret <2 x i32> %0341}342 343define <4 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_acquire(ptr noundef readonly %addr)  {344; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_acquire:345; GFX1250:       ; %bb.0: ; %entry346; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0347; GFX1250-NEXT:    s_wait_kmcnt 0x0348; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV349; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0350; GFX1250-NEXT:    s_set_pc_i64 s[30:31]351entry:352  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 2, metadata !1)353  ret <4 x i32> %0354}355 356define void @test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_release(ptr noundef %addr, i32 noundef %val)  {357; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_release:358; GFX1250:       ; %bb.0: ; %entry359; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0360; GFX1250-NEXT:    s_wait_kmcnt 0x0361; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV362; GFX1250-NEXT:    s_wait_dscnt 0x0363; GFX1250-NEXT:    s_set_pc_i64 s[30:31]364entry:365  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 3, metadata !1)366  ret void367}368 369define void @test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_release(ptr noundef %addr, <2 x i32> noundef %val)  {370; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_release:371; GFX1250:       ; %bb.0: ; %entry372; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0373; GFX1250-NEXT:    s_wait_kmcnt 0x0374; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV375; GFX1250-NEXT:    s_wait_dscnt 0x0376; GFX1250-NEXT:    s_set_pc_i64 s[30:31]377entry:378  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 3, metadata !1)379  ret void380}381 382define void @test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_release(ptr noundef %addr, <4 x i32> noundef %val)  {383; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_release:384; GFX1250:       ; %bb.0: ; %entry385; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0386; GFX1250-NEXT:    s_wait_kmcnt 0x0387; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV388; GFX1250-NEXT:    s_wait_dscnt 0x0389; GFX1250-NEXT:    s_set_pc_i64 s[30:31]390entry:391  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 3, metadata !1)392  ret void393}394 395define i32 @test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst(ptr noundef readonly %addr)  {396; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_32x4B_seq_cst:397; GFX1250:       ; %bb.0: ; %entry398; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0399; GFX1250-NEXT:    s_wait_kmcnt 0x0400; GFX1250-NEXT:    flat_load_b32 v0, v[0:1] scope:SCOPE_DEV401; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0402; GFX1250-NEXT:    s_set_pc_i64 s[30:31]403entry:404  %0 = tail call i32 @llvm.amdgcn.cooperative.atomic.load.32x4B.p0(ptr %addr, i32 5, metadata !1)405  ret i32 %0406}407 408define <2 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst(ptr noundef readonly %addr)  {409; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_16x8B_seq_cst:410; GFX1250:       ; %bb.0: ; %entry411; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0412; GFX1250-NEXT:    s_wait_kmcnt 0x0413; GFX1250-NEXT:    flat_load_b64 v[0:1], 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 <2 x i32> @llvm.amdgcn.cooperative.atomic.load.16x8B.p0(ptr %addr, i32 5, metadata !1)418  ret <2 x i32> %0419}420 421define <4 x i32> @test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst(ptr noundef readonly %addr)  {422; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_load_8x16B_seq_cst:423; GFX1250:       ; %bb.0: ; %entry424; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0425; GFX1250-NEXT:    s_wait_kmcnt 0x0426; GFX1250-NEXT:    flat_load_b128 v[0:3], v[0:1] scope:SCOPE_DEV427; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0428; GFX1250-NEXT:    s_set_pc_i64 s[30:31]429entry:430  %0 = tail call <4 x i32> @llvm.amdgcn.cooperative.atomic.load.8x16B.p0(ptr %addr, i32 5, metadata !1)431  ret <4 x i32> %0432}433 434define void @test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst(ptr noundef %addr, i32 noundef %val)  {435; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_32x4B_seq_cst:436; GFX1250:       ; %bb.0: ; %entry437; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0438; GFX1250-NEXT:    s_wait_kmcnt 0x0439; GFX1250-NEXT:    flat_store_b32 v[0:1], v2 scope:SCOPE_DEV440; GFX1250-NEXT:    s_wait_dscnt 0x0441; GFX1250-NEXT:    s_set_pc_i64 s[30:31]442entry:443  tail call void @llvm.amdgcn.cooperative.atomic.store.32x4B.p0(ptr %addr, i32 %val, i32 5, metadata !1)444  ret void445}446 447define void @test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst(ptr noundef %addr, <2 x i32> noundef %val)  {448; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_16x8B_seq_cst:449; GFX1250:       ; %bb.0: ; %entry450; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0451; GFX1250-NEXT:    s_wait_kmcnt 0x0452; GFX1250-NEXT:    flat_store_b64 v[0:1], v[2:3] scope:SCOPE_DEV453; GFX1250-NEXT:    s_wait_dscnt 0x0454; GFX1250-NEXT:    s_set_pc_i64 s[30:31]455entry:456  tail call void @llvm.amdgcn.cooperative.atomic.store.16x8B.p0(ptr %addr, <2 x i32> %val, i32 5, metadata !1)457  ret void458}459 460define void @test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst(ptr noundef %addr, <4 x i32> noundef %val)  {461; GFX1250-LABEL: test_one_as_flat_amdgcn_cooperative_atomic_store_8x16B_seq_cst:462; GFX1250:       ; %bb.0: ; %entry463; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0464; GFX1250-NEXT:    s_wait_kmcnt 0x0465; GFX1250-NEXT:    flat_store_b128 v[0:1], v[2:5] scope:SCOPE_DEV466; GFX1250-NEXT:    s_wait_dscnt 0x0467; GFX1250-NEXT:    s_set_pc_i64 s[30:31]468entry:469  tail call void @llvm.amdgcn.cooperative.atomic.store.8x16B.p0(ptr %addr, <4 x i32> %val, i32 5, metadata !1)470  ret void471}472 473!0 = !{ !"wavefront" }474!1 = !{ !"wavefront-one-as" }475 476;; GFX1250: {{.*}}477;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:478; GFX1250-GISEL: {{.*}}479; GFX1250-SDAG: {{.*}}480