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