brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.0 KiB · b7971a0 Raw
436 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc -mtriple=amdgcn-amd-amdhsa -O0 -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GFX1250 %s3 4define void @buffer_fat_ptr_agent_atomic_add_noret_i32(ptr addrspace(7) inreg %ptr, i32 %val) {5; GFX1250-LABEL: buffer_fat_ptr_agent_atomic_add_noret_i32:6; GFX1250:       ; %bb.0:7; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x08; GFX1250-NEXT:    s_wait_kmcnt 0x09; GFX1250-NEXT:    s_mov_b32 s6, s210; GFX1250-NEXT:    s_mov_b32 s4, s011; GFX1250-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr712; GFX1250-NEXT:    s_mov_b32 s7, s313; GFX1250-NEXT:    s_mov_b32 s8, s714; GFX1250-NEXT:    s_mov_b32 s9, s615; GFX1250-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr516; GFX1250-NEXT:    s_mov_b32 s5, s117; GFX1250-NEXT:    s_mov_b32 s10, s518; GFX1250-NEXT:    s_mov_b32 s0, s419; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr320; GFX1250-NEXT:    s_mov_b32 s1, s1021; GFX1250-NEXT:    s_mov_b32 s2, s922; GFX1250-NEXT:    s_mov_b32 s3, s823; GFX1250-NEXT:    ; kill: def $sgpr8 killed $sgpr1624; GFX1250-NEXT:    v_mov_b32_e32 v1, s1625; GFX1250-NEXT:    s_wait_xcnt 0x026; GFX1250-NEXT:    buffer_atomic_add_u32 v0, v1, s[0:3], null offen27; GFX1250-NEXT:    s_set_pc_i64 s[30:31]28  %unused = atomicrmw add ptr addrspace(7) %ptr, i32 %val syncscope("agent") monotonic29  ret void30}31 32define i32 @buffer_fat_ptr_agent_atomic_add_ret_i32(ptr addrspace(7) inreg %ptr, i32 %val) {33; GFX1250-LABEL: buffer_fat_ptr_agent_atomic_add_ret_i32:34; GFX1250:       ; %bb.0:35; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x036; GFX1250-NEXT:    s_wait_kmcnt 0x037; GFX1250-NEXT:    s_mov_b32 s6, s238; GFX1250-NEXT:    s_mov_b32 s4, s039; GFX1250-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr740; GFX1250-NEXT:    s_mov_b32 s7, s341; GFX1250-NEXT:    s_mov_b32 s8, s742; GFX1250-NEXT:    s_mov_b32 s9, s643; GFX1250-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr544; GFX1250-NEXT:    s_mov_b32 s5, s145; GFX1250-NEXT:    s_mov_b32 s10, s546; GFX1250-NEXT:    s_mov_b32 s0, s447; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr348; GFX1250-NEXT:    s_mov_b32 s1, s1049; GFX1250-NEXT:    s_mov_b32 s2, s950; GFX1250-NEXT:    s_mov_b32 s3, s851; GFX1250-NEXT:    ; kill: def $sgpr8 killed $sgpr1652; GFX1250-NEXT:    v_mov_b32_e32 v1, s1653; GFX1250-NEXT:    s_wait_xcnt 0x054; GFX1250-NEXT:    buffer_atomic_add_u32 v0, v1, s[0:3], null offen th:TH_ATOMIC_RETURN55; GFX1250-NEXT:    s_wait_loadcnt 0x056; GFX1250-NEXT:    s_set_pc_i64 s[30:31]57  %ret = atomicrmw add ptr addrspace(7) %ptr, i32 %val syncscope("agent") monotonic58  ret i32 %ret59}60 61define void @raw_buffer_atomic_add_v2f16_noret(<2 x half> %val, <4 x i32> inreg %rsrc, i32 %voffset, i32 inreg %soffset) {62; GFX1250-LABEL: raw_buffer_atomic_add_v2f16_noret:63; GFX1250:       ; %bb.0:64; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x065; GFX1250-NEXT:    s_wait_kmcnt 0x066; GFX1250-NEXT:    s_mov_b32 s4, s367; GFX1250-NEXT:    s_mov_b32 s5, s268; GFX1250-NEXT:    s_mov_b32 s6, s169; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr370; GFX1250-NEXT:    s_mov_b32 s1, s671; GFX1250-NEXT:    s_mov_b32 s2, s572; GFX1250-NEXT:    s_mov_b32 s3, s473; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr374; GFX1250-NEXT:    s_wait_xcnt 0x075; GFX1250-NEXT:    buffer_atomic_pk_add_f16 v0, v1, s[0:3], s16 offen76; GFX1250-NEXT:    s_set_pc_i64 s[30:31]77  %ret = call <2 x half> @llvm.amdgcn.raw.buffer.atomic.fadd.v2f16(<2 x half> %val, <4 x i32> %rsrc, i32 %voffset, i32 %soffset, i32 0)78  ret void79}80 81define <2 x half> @raw_buffer_atomic_add_v2f16_ret(<2 x half> %val, <4 x i32> inreg %rsrc, i32 %voffset, i32 inreg %soffset) {82; GFX1250-LABEL: raw_buffer_atomic_add_v2f16_ret:83; GFX1250:       ; %bb.0:84; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x085; GFX1250-NEXT:    s_wait_kmcnt 0x086; GFX1250-NEXT:    s_mov_b32 s4, s387; GFX1250-NEXT:    s_mov_b32 s5, s288; GFX1250-NEXT:    s_mov_b32 s6, s189; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr390; GFX1250-NEXT:    s_mov_b32 s1, s691; GFX1250-NEXT:    s_mov_b32 s2, s592; GFX1250-NEXT:    s_mov_b32 s3, s493; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr394; GFX1250-NEXT:    s_wait_xcnt 0x095; GFX1250-NEXT:    buffer_atomic_pk_add_f16 v0, v1, s[0:3], s16 offen th:TH_ATOMIC_RETURN96; GFX1250-NEXT:    s_wait_loadcnt 0x097; GFX1250-NEXT:    s_set_pc_i64 s[30:31]98  %ret = call <2 x half> @llvm.amdgcn.raw.buffer.atomic.fadd.v2f16(<2 x half> %val, <4 x i32> %rsrc, i32 %voffset, i32 %soffset, i32 0)99  ret <2 x half> %ret100}101 102define float @struct_buffer_atomic_add_v2f16_ret(<2 x half> %val, <4 x i32> inreg %rsrc, i32 %vindex, i32 %voffset, i32 inreg %soffset) {103; GFX1250-LABEL: struct_buffer_atomic_add_v2f16_ret:104; GFX1250:       ; %bb.0:105; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0106; GFX1250-NEXT:    s_wait_kmcnt 0x0107; GFX1250-NEXT:    scratch_store_b32 off, v2, s32 ; 4-byte Folded Spill108; GFX1250-NEXT:    s_wait_xcnt 0x0109; GFX1250-NEXT:    v_mov_b32_e32 v2, v1110; GFX1250-NEXT:    scratch_load_b32 v1, off, s32 ; 4-byte Folded Reload111; GFX1250-NEXT:    s_mov_b32 s4, s3112; GFX1250-NEXT:    s_mov_b32 s5, s2113; GFX1250-NEXT:    s_mov_b32 s6, s1114; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3115; GFX1250-NEXT:    s_mov_b32 s1, s6116; GFX1250-NEXT:    s_mov_b32 s2, s5117; GFX1250-NEXT:    s_mov_b32 s3, s4118; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3119; GFX1250-NEXT:    ; kill: def $vgpr2 killed $vgpr2 def $vgpr2_vgpr3 killed $exec120; GFX1250-NEXT:    s_wait_loadcnt 0x0121; GFX1250-NEXT:    v_mov_b32_e32 v3, v1122; GFX1250-NEXT:    s_wait_xcnt 0x0123; GFX1250-NEXT:    buffer_atomic_pk_add_f16 v0, v[2:3], s[0:3], s16 idxen offen th:TH_ATOMIC_RETURN124; GFX1250-NEXT:    s_wait_loadcnt 0x0125; GFX1250-NEXT:    s_set_pc_i64 s[30:31]126  %orig = call <2 x half> @llvm.amdgcn.struct.buffer.atomic.fadd.v2f16(<2 x half> %val, <4 x i32> %rsrc, i32 %vindex, i32 %voffset, i32 %soffset, i32 0)127  %r = bitcast <2 x half> %orig to float128  ret float %r129}130 131define void @struct_buffer_atomic_add_v2f16_noret(<2 x half> %val, <4 x i32> inreg %rsrc, i32 %vindex, i32 %voffset, i32 inreg %soffset) {132; GFX1250-LABEL: struct_buffer_atomic_add_v2f16_noret:133; GFX1250:       ; %bb.0:134; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0135; GFX1250-NEXT:    s_wait_kmcnt 0x0136; GFX1250-NEXT:    scratch_store_b32 off, v2, s32 ; 4-byte Folded Spill137; GFX1250-NEXT:    s_wait_xcnt 0x0138; GFX1250-NEXT:    v_mov_b32_e32 v2, v1139; GFX1250-NEXT:    scratch_load_b32 v1, off, s32 ; 4-byte Folded Reload140; GFX1250-NEXT:    s_mov_b32 s4, s3141; GFX1250-NEXT:    s_mov_b32 s5, s2142; GFX1250-NEXT:    s_mov_b32 s6, s1143; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3144; GFX1250-NEXT:    s_mov_b32 s1, s6145; GFX1250-NEXT:    s_mov_b32 s2, s5146; GFX1250-NEXT:    s_mov_b32 s3, s4147; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3148; GFX1250-NEXT:    ; kill: def $vgpr2 killed $vgpr2 def $vgpr2_vgpr3 killed $exec149; GFX1250-NEXT:    s_wait_loadcnt 0x0150; GFX1250-NEXT:    v_mov_b32_e32 v3, v1151; GFX1250-NEXT:    s_wait_xcnt 0x0152; GFX1250-NEXT:    buffer_atomic_pk_add_f16 v0, v[2:3], s[0:3], s16 idxen offen153; GFX1250-NEXT:    s_set_pc_i64 s[30:31]154  %orig = call <2 x half> @llvm.amdgcn.struct.buffer.atomic.fadd.v2f16(<2 x half> %val, <4 x i32> %rsrc, i32 %vindex, i32 %voffset, i32 %soffset, i32 0)155  ret void156}157 158define void @raw_buffer_store_i32(<4 x i32> inreg %rsrc, i32 %v) {159; GFX1250-LABEL: raw_buffer_store_i32:160; GFX1250:       ; %bb.0:161; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0162; GFX1250-NEXT:    s_wait_kmcnt 0x0163; GFX1250-NEXT:    s_mov_b32 s4, s3164; GFX1250-NEXT:    s_mov_b32 s5, s2165; GFX1250-NEXT:    s_mov_b32 s6, s1166; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3167; GFX1250-NEXT:    s_mov_b32 s1, s6168; GFX1250-NEXT:    s_mov_b32 s2, s5169; GFX1250-NEXT:    s_mov_b32 s3, s4170; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3171; GFX1250-NEXT:    buffer_store_b32 v0, off, s[0:3], null172; GFX1250-NEXT:    s_set_pc_i64 s[30:31]173  call void @llvm.amdgcn.raw.buffer.store.i32(i32 %v, <4 x i32> %rsrc, i32 0, i32 0, i32 0)174  ret void175}176 177define void @raw_buffer_store_i32_volatile(<4 x i32> inreg %rsrc, i32 %v) {178; GFX1250-LABEL: raw_buffer_store_i32_volatile:179; GFX1250:       ; %bb.0:180; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0181; GFX1250-NEXT:    s_wait_kmcnt 0x0182; GFX1250-NEXT:    s_mov_b32 s4, s3183; GFX1250-NEXT:    s_mov_b32 s5, s2184; GFX1250-NEXT:    s_mov_b32 s6, s1185; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3186; GFX1250-NEXT:    s_mov_b32 s1, s6187; GFX1250-NEXT:    s_mov_b32 s2, s5188; GFX1250-NEXT:    s_mov_b32 s3, s4189; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3190; GFX1250-NEXT:    s_wait_xcnt 0x0191; GFX1250-NEXT:    buffer_store_b32 v0, off, s[0:3], null scope:SCOPE_SYS192; GFX1250-NEXT:    s_wait_storecnt 0x0193; GFX1250-NEXT:    s_set_pc_i64 s[30:31]194  call void @llvm.amdgcn.raw.buffer.store.i32(i32 %v, <4 x i32> %rsrc, i32 0, i32 0, i32 2147483648)195  ret void196}197 198define void @struct_buffer_store_i32(<4 x i32> inreg %rsrc, i32 %v) {199; GFX1250-LABEL: struct_buffer_store_i32:200; GFX1250:       ; %bb.0:201; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0202; GFX1250-NEXT:    s_wait_kmcnt 0x0203; GFX1250-NEXT:    s_mov_b32 s4, s3204; GFX1250-NEXT:    s_mov_b32 s5, s2205; GFX1250-NEXT:    s_mov_b32 s6, s1206; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3207; GFX1250-NEXT:    s_mov_b32 s1, s6208; GFX1250-NEXT:    s_mov_b32 s2, s5209; GFX1250-NEXT:    s_mov_b32 s3, s4210; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3211; GFX1250-NEXT:    v_mov_b32_e32 v1, 0212; GFX1250-NEXT:    buffer_store_b32 v0, v1, s[0:3], null idxen213; GFX1250-NEXT:    s_set_pc_i64 s[30:31]214  call void @llvm.amdgcn.struct.buffer.store.i32(i32 %v, <4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 0)215  ret void216}217 218define void @struct_buffer_store_i32_volatile(<4 x i32> inreg %rsrc, i32 %v) {219; GFX1250-LABEL: struct_buffer_store_i32_volatile:220; GFX1250:       ; %bb.0:221; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0222; GFX1250-NEXT:    s_wait_kmcnt 0x0223; GFX1250-NEXT:    s_mov_b32 s4, s3224; GFX1250-NEXT:    s_mov_b32 s5, s2225; GFX1250-NEXT:    s_mov_b32 s6, s1226; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3227; GFX1250-NEXT:    s_mov_b32 s1, s6228; GFX1250-NEXT:    s_mov_b32 s2, s5229; GFX1250-NEXT:    s_mov_b32 s3, s4230; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3231; GFX1250-NEXT:    v_mov_b32_e32 v1, 0232; GFX1250-NEXT:    s_wait_xcnt 0x0233; GFX1250-NEXT:    buffer_store_b32 v0, v1, s[0:3], null idxen scope:SCOPE_SYS234; GFX1250-NEXT:    s_wait_storecnt 0x0235; GFX1250-NEXT:    s_set_pc_i64 s[30:31]236  call void @llvm.amdgcn.struct.buffer.store.i32(i32 %v, <4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 2147483648)237  ret void238}239 240define i32 @raw_buffer_load_i32(<4 x i32> inreg %rsrc, i32 %v) {241; GFX1250-LABEL: raw_buffer_load_i32:242; GFX1250:       ; %bb.0:243; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0244; GFX1250-NEXT:    s_wait_kmcnt 0x0245; GFX1250-NEXT:    s_mov_b32 s4, s3246; GFX1250-NEXT:    s_mov_b32 s5, s2247; GFX1250-NEXT:    s_mov_b32 s6, s1248; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3249; GFX1250-NEXT:    s_mov_b32 s1, s6250; GFX1250-NEXT:    s_mov_b32 s2, s5251; GFX1250-NEXT:    s_mov_b32 s3, s4252; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3253; GFX1250-NEXT:    buffer_load_b32 v0, off, s[0:3], null254; GFX1250-NEXT:    s_wait_loadcnt 0x0255; GFX1250-NEXT:    s_set_pc_i64 s[30:31]256  %val = call i32 @llvm.amdgcn.raw.buffer.load.i32(<4 x i32> %rsrc, i32 0, i32 0, i32 0)257  ret i32 %val258}259 260; FIXME?: Compiler strips volatile bit during lowering, we cannot emit volatile buffer loads this way.261define i32 @raw_buffer_load_i32_volatile(<4 x i32> inreg %rsrc, i32 %v) {262; GFX1250-LABEL: raw_buffer_load_i32_volatile:263; GFX1250:       ; %bb.0:264; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0265; GFX1250-NEXT:    s_wait_kmcnt 0x0266; GFX1250-NEXT:    s_mov_b32 s4, s3267; GFX1250-NEXT:    s_mov_b32 s5, s2268; GFX1250-NEXT:    s_mov_b32 s6, s1269; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3270; GFX1250-NEXT:    s_mov_b32 s1, s6271; GFX1250-NEXT:    s_mov_b32 s2, s5272; GFX1250-NEXT:    s_mov_b32 s3, s4273; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3274; GFX1250-NEXT:    buffer_load_b32 v0, off, s[0:3], null275; GFX1250-NEXT:    s_wait_loadcnt 0x0276; GFX1250-NEXT:    s_set_pc_i64 s[30:31]277  %val = call i32 @llvm.amdgcn.raw.buffer.load.i32(<4 x i32> %rsrc, i32 0, i32 0, i32 21474836480)278  ret i32 %val279}280 281define i32 @struct_buffer_load_i32(<4 x i32> inreg %rsrc, i32 %v) {282; GFX1250-LABEL: struct_buffer_load_i32:283; GFX1250:       ; %bb.0:284; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0285; GFX1250-NEXT:    s_wait_kmcnt 0x0286; GFX1250-NEXT:    s_mov_b32 s4, s3287; GFX1250-NEXT:    s_mov_b32 s5, s2288; GFX1250-NEXT:    s_mov_b32 s6, s1289; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3290; GFX1250-NEXT:    s_mov_b32 s1, s6291; GFX1250-NEXT:    s_mov_b32 s2, s5292; GFX1250-NEXT:    s_mov_b32 s3, s4293; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3294; GFX1250-NEXT:    v_mov_b32_e32 v0, 0295; GFX1250-NEXT:    buffer_load_b32 v0, v0, s[0:3], null idxen296; GFX1250-NEXT:    s_wait_loadcnt 0x0297; GFX1250-NEXT:    s_set_pc_i64 s[30:31]298  %val = call i32 @llvm.amdgcn.struct.buffer.load.i32(<4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 0)299  ret i32 %val300}301 302; FIXME?: Compiler strips volatile bit during lowering, we cannot emit volatile buffer loads this way.303define i32 @struct_buffer_load_i32_volatile(<4 x i32> inreg %rsrc, i32 %v) {304; GFX1250-LABEL: struct_buffer_load_i32_volatile:305; GFX1250:       ; %bb.0:306; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0307; GFX1250-NEXT:    s_wait_kmcnt 0x0308; GFX1250-NEXT:    s_mov_b32 s4, s3309; GFX1250-NEXT:    s_mov_b32 s5, s2310; GFX1250-NEXT:    s_mov_b32 s6, s1311; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3312; GFX1250-NEXT:    s_mov_b32 s1, s6313; GFX1250-NEXT:    s_mov_b32 s2, s5314; GFX1250-NEXT:    s_mov_b32 s3, s4315; GFX1250-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3316; GFX1250-NEXT:    v_mov_b32_e32 v0, 0317; GFX1250-NEXT:    buffer_load_b32 v0, v0, s[0:3], null idxen318; GFX1250-NEXT:    s_wait_loadcnt 0x0319; GFX1250-NEXT:    s_set_pc_i64 s[30:31]320  %val = call i32 @llvm.amdgcn.struct.buffer.load.i32(<4 x i32> %rsrc, i32 0, i32 0, i32 0, i32 21474836480)321  ret i32 %val322}323 324define void @buffer_fat_ptr_store_i32(ptr addrspace(7) inreg %ptr, i32 %val) {325; GFX1250-LABEL: buffer_fat_ptr_store_i32:326; GFX1250:       ; %bb.0:327; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0328; GFX1250-NEXT:    s_wait_kmcnt 0x0329; GFX1250-NEXT:    s_mov_b32 s6, s2330; GFX1250-NEXT:    s_mov_b32 s4, s0331; GFX1250-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr7332; GFX1250-NEXT:    s_mov_b32 s7, s3333; GFX1250-NEXT:    s_mov_b32 s8, s7334; GFX1250-NEXT:    s_mov_b32 s9, s6335; GFX1250-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5336; GFX1250-NEXT:    s_mov_b32 s5, s1337; GFX1250-NEXT:    s_mov_b32 s10, s5338; GFX1250-NEXT:    s_mov_b32 s0, s4339; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3340; GFX1250-NEXT:    s_mov_b32 s1, s10341; GFX1250-NEXT:    s_mov_b32 s2, s9342; GFX1250-NEXT:    s_mov_b32 s3, s8343; GFX1250-NEXT:    ; kill: def $sgpr8 killed $sgpr16344; GFX1250-NEXT:    v_mov_b32_e32 v1, s16345; GFX1250-NEXT:    buffer_store_b32 v0, v1, s[0:3], null offen346; GFX1250-NEXT:    s_set_pc_i64 s[30:31]347  store i32 %val, ptr addrspace(7) %ptr348  ret void349}350 351define void @buffer_fat_ptr_store_i32_volatile(ptr addrspace(7) inreg %ptr, i32 %val) {352; GFX1250-LABEL: buffer_fat_ptr_store_i32_volatile:353; GFX1250:       ; %bb.0:354; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0355; GFX1250-NEXT:    s_wait_kmcnt 0x0356; GFX1250-NEXT:    s_mov_b32 s6, s2357; GFX1250-NEXT:    s_mov_b32 s4, s0358; GFX1250-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr7359; GFX1250-NEXT:    s_mov_b32 s7, s3360; GFX1250-NEXT:    s_mov_b32 s8, s7361; GFX1250-NEXT:    s_mov_b32 s9, s6362; GFX1250-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5363; GFX1250-NEXT:    s_mov_b32 s5, s1364; GFX1250-NEXT:    s_mov_b32 s10, s5365; GFX1250-NEXT:    s_mov_b32 s0, s4366; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3367; GFX1250-NEXT:    s_mov_b32 s1, s10368; GFX1250-NEXT:    s_mov_b32 s2, s9369; GFX1250-NEXT:    s_mov_b32 s3, s8370; GFX1250-NEXT:    ; kill: def $sgpr8 killed $sgpr16371; GFX1250-NEXT:    v_mov_b32_e32 v1, s16372; GFX1250-NEXT:    s_wait_xcnt 0x0373; GFX1250-NEXT:    buffer_store_b32 v0, v1, s[0:3], null offen scope:SCOPE_SYS374; GFX1250-NEXT:    s_wait_storecnt 0x0375; GFX1250-NEXT:    s_set_pc_i64 s[30:31]376  store volatile i32 %val, ptr addrspace(7) %ptr377  ret void378}379 380define i32 @buffer_fat_ptr_load_i32(ptr addrspace(7) inreg %ptr) {381; GFX1250-LABEL: buffer_fat_ptr_load_i32:382; GFX1250:       ; %bb.0:383; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0384; GFX1250-NEXT:    s_wait_kmcnt 0x0385; GFX1250-NEXT:    s_mov_b32 s6, s2386; GFX1250-NEXT:    s_mov_b32 s4, s0387; GFX1250-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr7388; GFX1250-NEXT:    s_mov_b32 s7, s3389; GFX1250-NEXT:    s_mov_b32 s8, s7390; GFX1250-NEXT:    s_mov_b32 s9, s6391; GFX1250-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5392; GFX1250-NEXT:    s_mov_b32 s5, s1393; GFX1250-NEXT:    s_mov_b32 s10, s5394; GFX1250-NEXT:    s_mov_b32 s0, s4395; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3396; GFX1250-NEXT:    s_mov_b32 s1, s10397; GFX1250-NEXT:    s_mov_b32 s2, s9398; GFX1250-NEXT:    s_mov_b32 s3, s8399; GFX1250-NEXT:    ; kill: def $sgpr8 killed $sgpr16400; GFX1250-NEXT:    v_mov_b32_e32 v0, s16401; GFX1250-NEXT:    buffer_load_b32 v0, v0, s[0:3], null offen402; GFX1250-NEXT:    s_wait_loadcnt 0x0403; GFX1250-NEXT:    s_set_pc_i64 s[30:31]404  %val = load i32, ptr addrspace(7) %ptr405  ret i32 %val406}407 408define i32 @buffer_fat_ptr_load_i32_volatile(ptr addrspace(7) inreg %ptr) {409; GFX1250-LABEL: buffer_fat_ptr_load_i32_volatile:410; GFX1250:       ; %bb.0:411; GFX1250-NEXT:    s_wait_loadcnt_dscnt 0x0412; GFX1250-NEXT:    s_wait_kmcnt 0x0413; GFX1250-NEXT:    s_mov_b32 s6, s2414; GFX1250-NEXT:    s_mov_b32 s4, s0415; GFX1250-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr7416; GFX1250-NEXT:    s_mov_b32 s7, s3417; GFX1250-NEXT:    s_mov_b32 s8, s7418; GFX1250-NEXT:    s_mov_b32 s9, s6419; GFX1250-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5420; GFX1250-NEXT:    s_mov_b32 s5, s1421; GFX1250-NEXT:    s_mov_b32 s10, s5422; GFX1250-NEXT:    s_mov_b32 s0, s4423; GFX1250-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3424; GFX1250-NEXT:    s_mov_b32 s1, s10425; GFX1250-NEXT:    s_mov_b32 s2, s9426; GFX1250-NEXT:    s_mov_b32 s3, s8427; GFX1250-NEXT:    ; kill: def $sgpr8 killed $sgpr16428; GFX1250-NEXT:    v_mov_b32_e32 v0, s16429; GFX1250-NEXT:    s_wait_xcnt 0x0430; GFX1250-NEXT:    buffer_load_b32 v0, v0, s[0:3], null offen scope:SCOPE_SYS431; GFX1250-NEXT:    s_wait_loadcnt 0x0432; GFX1250-NEXT:    s_set_pc_i64 s[30:31]433  %val = load volatile i32, ptr addrspace(7) %ptr434  ret i32 %val435}436