brintos

brintos / llvm-project-archived public Read only

0
0
Text · 48.5 KiB · 63bacf1 Raw
1131 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2;RUN: llc < %s -mtriple=amdgcn -mcpu=verde | FileCheck --check-prefixes=GFX6 %s3;RUN: llc < %s -mtriple=amdgcn -mcpu=tonga | FileCheck --check-prefixes=GFX8PLUS %s4;RUN: llc < %s -mtriple=amdgcn -mcpu=gfx1100 | FileCheck --check-prefixes=GFX11 %s5;RUN: llc < %s -mtriple=amdgcn -mattr=-enable-prt-strict-null -mcpu=gfx1100 | FileCheck --check-prefixes=NOPRT %s6 7define amdgpu_ps {<4 x float>, <4 x float>, <4 x float>} @buffer_load(ptr addrspace(8) inreg) {8; GFX6-LABEL: buffer_load:9; GFX6:       ; %bb.0: ; %main_body10; GFX6-NEXT:    v_mov_b32_e32 v8, 011; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 0 idxen12; GFX6-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], 0 idxen glc13; GFX6-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], 0 idxen slc14; GFX6-NEXT:    s_waitcnt vmcnt(0)15; GFX6-NEXT:    ; return to shader part epilog16;17; GFX8PLUS-LABEL: buffer_load:18; GFX8PLUS:       ; %bb.0: ; %main_body19; GFX8PLUS-NEXT:    v_mov_b32_e32 v8, 020; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 0 idxen21; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], 0 idxen glc22; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], 0 idxen slc23; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)24; GFX8PLUS-NEXT:    ; return to shader part epilog25;26; GFX11-LABEL: buffer_load:27; GFX11:       ; %bb.0: ; %main_body28; GFX11-NEXT:    v_mov_b32_e32 v8, 029; GFX11-NEXT:    s_clause 0x230; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 0 idxen31; GFX11-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], 0 idxen glc32; GFX11-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], 0 idxen slc33; GFX11-NEXT:    s_waitcnt vmcnt(0)34; GFX11-NEXT:    ; return to shader part epilog35;36; NOPRT-LABEL: buffer_load:37; NOPRT:       ; %bb.0: ; %main_body38; NOPRT-NEXT:    v_mov_b32_e32 v8, 039; NOPRT-NEXT:    s_clause 0x240; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 0 idxen41; NOPRT-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], 0 idxen glc42; NOPRT-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], 0 idxen slc43; NOPRT-NEXT:    s_waitcnt vmcnt(0)44; NOPRT-NEXT:    ; return to shader part epilog45main_body:46  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 0, i32 0)47  %data_glc = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 0, i32 1)48  %data_slc = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 0, i32 0, i32 2)49  %r0 = insertvalue {<4 x float>, <4 x float>, <4 x float>} poison, <4 x float> %data, 050  %r1 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r0, <4 x float> %data_glc, 151  %r2 = insertvalue {<4 x float>, <4 x float>, <4 x float>} %r1, <4 x float> %data_slc, 252  ret {<4 x float>, <4 x float>, <4 x float>} %r253}54 55define amdgpu_ps <4 x float> @buffer_load_immoffs(ptr addrspace(8) inreg) {56; GFX6-LABEL: buffer_load_immoffs:57; GFX6:       ; %bb.0: ; %main_body58; GFX6-NEXT:    v_mov_b32_e32 v0, 059; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4260; GFX6-NEXT:    s_waitcnt vmcnt(0)61; GFX6-NEXT:    ; return to shader part epilog62;63; GFX8PLUS-LABEL: buffer_load_immoffs:64; GFX8PLUS:       ; %bb.0: ; %main_body65; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, 066; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4267; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)68; GFX8PLUS-NEXT:    ; return to shader part epilog69;70; GFX11-LABEL: buffer_load_immoffs:71; GFX11:       ; %bb.0: ; %main_body72; GFX11-NEXT:    v_mov_b32_e32 v0, 073; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4274; GFX11-NEXT:    s_waitcnt vmcnt(0)75; GFX11-NEXT:    ; return to shader part epilog76;77; NOPRT-LABEL: buffer_load_immoffs:78; NOPRT:       ; %bb.0: ; %main_body79; NOPRT-NEXT:    v_mov_b32_e32 v0, 080; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4281; NOPRT-NEXT:    s_waitcnt vmcnt(0)82; NOPRT-NEXT:    ; return to shader part epilog83main_body:84  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 42, i32 0, i32 0)85  ret <4 x float> %data86}87 88define amdgpu_ps <4 x float> @buffer_load_immoffs_large(ptr addrspace(8) inreg) {89; GFX6-LABEL: buffer_load_immoffs_large:90; GFX6:       ; %bb.0: ; %main_body91; GFX6-NEXT:    v_mov_b32_e32 v8, 092; GFX6-NEXT:    s_movk_i32 s4, 0x7ffc93; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 60 idxen offset:409294; GFX6-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], s4 idxen offset:409295; GFX6-NEXT:    s_mov_b32 s4, 0x8ffc96; GFX6-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], s4 idxen offset:497; GFX6-NEXT:    s_waitcnt vmcnt(1)98; GFX6-NEXT:    v_add_f32_e32 v3, v3, v799; GFX6-NEXT:    v_add_f32_e32 v2, v2, v6100; GFX6-NEXT:    v_add_f32_e32 v1, v1, v5101; GFX6-NEXT:    v_add_f32_e32 v0, v0, v4102; GFX6-NEXT:    s_waitcnt vmcnt(0)103; GFX6-NEXT:    v_add_f32_e32 v0, v8, v0104; GFX6-NEXT:    v_add_f32_e32 v1, v9, v1105; GFX6-NEXT:    v_add_f32_e32 v2, v10, v2106; GFX6-NEXT:    v_add_f32_e32 v3, v11, v3107; GFX6-NEXT:    ; return to shader part epilog108;109; GFX8PLUS-LABEL: buffer_load_immoffs_large:110; GFX8PLUS:       ; %bb.0: ; %main_body111; GFX8PLUS-NEXT:    v_mov_b32_e32 v8, 0112; GFX8PLUS-NEXT:    s_movk_i32 s4, 0x7ffc113; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 60 idxen offset:4092114; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], s4 idxen offset:4092115; GFX8PLUS-NEXT:    s_mov_b32 s4, 0x8ffc116; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], s4 idxen offset:4117; GFX8PLUS-NEXT:    s_waitcnt vmcnt(1)118; GFX8PLUS-NEXT:    v_add_f32_e32 v3, v3, v7119; GFX8PLUS-NEXT:    v_add_f32_e32 v2, v2, v6120; GFX8PLUS-NEXT:    v_add_f32_e32 v1, v1, v5121; GFX8PLUS-NEXT:    v_add_f32_e32 v0, v0, v4122; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)123; GFX8PLUS-NEXT:    v_add_f32_e32 v0, v8, v0124; GFX8PLUS-NEXT:    v_add_f32_e32 v1, v9, v1125; GFX8PLUS-NEXT:    v_add_f32_e32 v2, v10, v2126; GFX8PLUS-NEXT:    v_add_f32_e32 v3, v11, v3127; GFX8PLUS-NEXT:    ; return to shader part epilog128;129; GFX11-LABEL: buffer_load_immoffs_large:130; GFX11:       ; %bb.0: ; %main_body131; GFX11-NEXT:    v_mov_b32_e32 v8, 0132; GFX11-NEXT:    s_movk_i32 s4, 0x7ffc133; GFX11-NEXT:    s_clause 0x1134; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 60 idxen offset:4092135; GFX11-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], s4 idxen offset:4092136; GFX11-NEXT:    s_mov_b32 s4, 0x8ffc137; GFX11-NEXT:    s_waitcnt vmcnt(0)138; GFX11-NEXT:    v_add_f32_e32 v1, v1, v5139; GFX11-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], s4 idxen offset:4140; GFX11-NEXT:    v_dual_add_f32 v0, v0, v4 :: v_dual_add_f32 v3, v3, v7141; GFX11-NEXT:    s_waitcnt vmcnt(0)142; GFX11-NEXT:    v_dual_add_f32 v2, v2, v6 :: v_dual_add_f32 v1, v9, v1143; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)144; GFX11-NEXT:    v_dual_add_f32 v0, v8, v0 :: v_dual_add_f32 v3, v11, v3145; GFX11-NEXT:    v_add_f32_e32 v2, v10, v2146; GFX11-NEXT:    ; return to shader part epilog147;148; NOPRT-LABEL: buffer_load_immoffs_large:149; NOPRT:       ; %bb.0: ; %main_body150; NOPRT-NEXT:    v_mov_b32_e32 v8, 0151; NOPRT-NEXT:    s_movk_i32 s4, 0x7ffc152; NOPRT-NEXT:    s_clause 0x1153; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v8, s[0:3], 60 idxen offset:4092154; NOPRT-NEXT:    buffer_load_format_xyzw v[4:7], v8, s[0:3], s4 idxen offset:4092155; NOPRT-NEXT:    s_mov_b32 s4, 0x8ffc156; NOPRT-NEXT:    s_waitcnt vmcnt(0)157; NOPRT-NEXT:    v_add_f32_e32 v1, v1, v5158; NOPRT-NEXT:    buffer_load_format_xyzw v[8:11], v8, s[0:3], s4 idxen offset:4159; NOPRT-NEXT:    v_dual_add_f32 v0, v0, v4 :: v_dual_add_f32 v3, v3, v7160; NOPRT-NEXT:    s_waitcnt vmcnt(0)161; NOPRT-NEXT:    v_dual_add_f32 v2, v2, v6 :: v_dual_add_f32 v1, v9, v1162; NOPRT-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_2)163; NOPRT-NEXT:    v_dual_add_f32 v0, v8, v0 :: v_dual_add_f32 v3, v11, v3164; NOPRT-NEXT:    v_add_f32_e32 v2, v10, v2165; NOPRT-NEXT:    ; return to shader part epilog166main_body:167  %d.0 = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 4092, i32 60, i32 0)168  %d.1 = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 4092, i32 32764, i32 0)169  %d.2 = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 4, i32 36860, i32 0)170  %d.3 = fadd <4 x float> %d.0, %d.1171  %data = fadd <4 x float> %d.2, %d.3172  ret <4 x float> %data173}174 175define amdgpu_ps <4 x float> @buffer_load_voffset_large_12bit(ptr addrspace(8) inreg) {176; GFX6-LABEL: buffer_load_voffset_large_12bit:177; GFX6:       ; %bb.0: ; %main_body178; GFX6-NEXT:    v_mov_b32_e32 v0, 0179; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4092180; GFX6-NEXT:    s_waitcnt vmcnt(0)181; GFX6-NEXT:    ; return to shader part epilog182;183; GFX8PLUS-LABEL: buffer_load_voffset_large_12bit:184; GFX8PLUS:       ; %bb.0: ; %main_body185; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, 0186; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4092187; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)188; GFX8PLUS-NEXT:    ; return to shader part epilog189;190; GFX11-LABEL: buffer_load_voffset_large_12bit:191; GFX11:       ; %bb.0: ; %main_body192; GFX11-NEXT:    v_mov_b32_e32 v0, 0193; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4092194; GFX11-NEXT:    s_waitcnt vmcnt(0)195; GFX11-NEXT:    ; return to shader part epilog196;197; NOPRT-LABEL: buffer_load_voffset_large_12bit:198; NOPRT:       ; %bb.0: ; %main_body199; NOPRT-NEXT:    v_mov_b32_e32 v0, 0200; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen offset:4092201; NOPRT-NEXT:    s_waitcnt vmcnt(0)202; NOPRT-NEXT:    ; return to shader part epilog203main_body:204  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 4092, i32 0, i32 0)205  ret <4 x float> %data206}207 208define amdgpu_ps <4 x float> @buffer_load_voffset_large_13bit(ptr addrspace(8) inreg) {209; GFX6-LABEL: buffer_load_voffset_large_13bit:210; GFX6:       ; %bb.0: ; %main_body211; GFX6-NEXT:    s_mov_b32 s4, 0212; GFX6-NEXT:    v_mov_b32_e32 v1, 0x1000213; GFX6-NEXT:    v_mov_b32_e32 v0, s4214; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092215; GFX6-NEXT:    s_waitcnt vmcnt(0)216; GFX6-NEXT:    ; return to shader part epilog217;218; GFX8PLUS-LABEL: buffer_load_voffset_large_13bit:219; GFX8PLUS:       ; %bb.0: ; %main_body220; GFX8PLUS-NEXT:    s_mov_b32 s4, 0221; GFX8PLUS-NEXT:    v_mov_b32_e32 v1, 0x1000222; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, s4223; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092224; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)225; GFX8PLUS-NEXT:    ; return to shader part epilog226;227; GFX11-LABEL: buffer_load_voffset_large_13bit:228; GFX11:       ; %bb.0: ; %main_body229; GFX11-NEXT:    s_mov_b32 s4, 0230; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)231; GFX11-NEXT:    v_dual_mov_b32 v1, 0x1000 :: v_dual_mov_b32 v0, s4232; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092233; GFX11-NEXT:    s_waitcnt vmcnt(0)234; GFX11-NEXT:    ; return to shader part epilog235;236; NOPRT-LABEL: buffer_load_voffset_large_13bit:237; NOPRT:       ; %bb.0: ; %main_body238; NOPRT-NEXT:    s_mov_b32 s4, 0239; NOPRT-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)240; NOPRT-NEXT:    v_dual_mov_b32 v1, 0x1000 :: v_dual_mov_b32 v0, s4241; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092242; NOPRT-NEXT:    s_waitcnt vmcnt(0)243; NOPRT-NEXT:    ; return to shader part epilog244main_body:245  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 8188, i32 0, i32 0)246  ret <4 x float> %data247}248 249define amdgpu_ps <4 x float> @buffer_load_voffset_large_16bit(ptr addrspace(8) inreg) {250; GFX6-LABEL: buffer_load_voffset_large_16bit:251; GFX6:       ; %bb.0: ; %main_body252; GFX6-NEXT:    s_mov_b32 s4, 0253; GFX6-NEXT:    v_mov_b32_e32 v1, 0xf000254; GFX6-NEXT:    v_mov_b32_e32 v0, s4255; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092256; GFX6-NEXT:    s_waitcnt vmcnt(0)257; GFX6-NEXT:    ; return to shader part epilog258;259; GFX8PLUS-LABEL: buffer_load_voffset_large_16bit:260; GFX8PLUS:       ; %bb.0: ; %main_body261; GFX8PLUS-NEXT:    s_mov_b32 s4, 0262; GFX8PLUS-NEXT:    v_mov_b32_e32 v1, 0xf000263; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, s4264; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092265; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)266; GFX8PLUS-NEXT:    ; return to shader part epilog267;268; GFX11-LABEL: buffer_load_voffset_large_16bit:269; GFX11:       ; %bb.0: ; %main_body270; GFX11-NEXT:    s_mov_b32 s4, 0271; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)272; GFX11-NEXT:    v_dual_mov_b32 v1, 0xf000 :: v_dual_mov_b32 v0, s4273; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092274; GFX11-NEXT:    s_waitcnt vmcnt(0)275; GFX11-NEXT:    ; return to shader part epilog276;277; NOPRT-LABEL: buffer_load_voffset_large_16bit:278; NOPRT:       ; %bb.0: ; %main_body279; NOPRT-NEXT:    s_mov_b32 s4, 0280; NOPRT-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)281; NOPRT-NEXT:    v_dual_mov_b32 v1, 0xf000 :: v_dual_mov_b32 v0, s4282; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092283; NOPRT-NEXT:    s_waitcnt vmcnt(0)284; NOPRT-NEXT:    ; return to shader part epilog285main_body:286  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 65532, i32 0, i32 0)287  ret <4 x float> %data288}289 290define amdgpu_ps <4 x float> @buffer_load_voffset_large_23bit(ptr addrspace(8) inreg) {291; GFX6-LABEL: buffer_load_voffset_large_23bit:292; GFX6:       ; %bb.0: ; %main_body293; GFX6-NEXT:    s_mov_b32 s4, 0294; GFX6-NEXT:    v_mov_b32_e32 v1, 0x7ff000295; GFX6-NEXT:    v_mov_b32_e32 v0, s4296; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092297; GFX6-NEXT:    s_waitcnt vmcnt(0)298; GFX6-NEXT:    ; return to shader part epilog299;300; GFX8PLUS-LABEL: buffer_load_voffset_large_23bit:301; GFX8PLUS:       ; %bb.0: ; %main_body302; GFX8PLUS-NEXT:    s_mov_b32 s4, 0303; GFX8PLUS-NEXT:    v_mov_b32_e32 v1, 0x7ff000304; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, s4305; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092306; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)307; GFX8PLUS-NEXT:    ; return to shader part epilog308;309; GFX11-LABEL: buffer_load_voffset_large_23bit:310; GFX11:       ; %bb.0: ; %main_body311; GFX11-NEXT:    s_mov_b32 s4, 0312; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)313; GFX11-NEXT:    v_dual_mov_b32 v1, 0x7ff000 :: v_dual_mov_b32 v0, s4314; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092315; GFX11-NEXT:    s_waitcnt vmcnt(0)316; GFX11-NEXT:    ; return to shader part epilog317;318; NOPRT-LABEL: buffer_load_voffset_large_23bit:319; NOPRT:       ; %bb.0: ; %main_body320; NOPRT-NEXT:    s_mov_b32 s4, 0321; NOPRT-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)322; NOPRT-NEXT:    v_dual_mov_b32 v1, 0x7ff000 :: v_dual_mov_b32 v0, s4323; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092324; NOPRT-NEXT:    s_waitcnt vmcnt(0)325; NOPRT-NEXT:    ; return to shader part epilog326main_body:327  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 8388604, i32 0, i32 0)328  ret <4 x float> %data329}330 331define amdgpu_ps <4 x float> @buffer_load_voffset_large_24bit(ptr addrspace(8) inreg) {332; GFX6-LABEL: buffer_load_voffset_large_24bit:333; GFX6:       ; %bb.0: ; %main_body334; GFX6-NEXT:    s_mov_b32 s4, 0335; GFX6-NEXT:    v_mov_b32_e32 v1, 0xfff000336; GFX6-NEXT:    v_mov_b32_e32 v0, s4337; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092338; GFX6-NEXT:    s_waitcnt vmcnt(0)339; GFX6-NEXT:    ; return to shader part epilog340;341; GFX8PLUS-LABEL: buffer_load_voffset_large_24bit:342; GFX8PLUS:       ; %bb.0: ; %main_body343; GFX8PLUS-NEXT:    s_mov_b32 s4, 0344; GFX8PLUS-NEXT:    v_mov_b32_e32 v1, 0xfff000345; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, s4346; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092347; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)348; GFX8PLUS-NEXT:    ; return to shader part epilog349;350; GFX11-LABEL: buffer_load_voffset_large_24bit:351; GFX11:       ; %bb.0: ; %main_body352; GFX11-NEXT:    s_mov_b32 s4, 0353; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)354; GFX11-NEXT:    v_dual_mov_b32 v1, 0xfff000 :: v_dual_mov_b32 v0, s4355; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092356; GFX11-NEXT:    s_waitcnt vmcnt(0)357; GFX11-NEXT:    ; return to shader part epilog358;359; NOPRT-LABEL: buffer_load_voffset_large_24bit:360; NOPRT:       ; %bb.0: ; %main_body361; NOPRT-NEXT:    s_mov_b32 s4, 0362; NOPRT-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)363; NOPRT-NEXT:    v_dual_mov_b32 v1, 0xfff000 :: v_dual_mov_b32 v0, s4364; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:4092365; NOPRT-NEXT:    s_waitcnt vmcnt(0)366; NOPRT-NEXT:    ; return to shader part epilog367main_body:368  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 16777212, i32 0, i32 0)369  ret <4 x float> %data370}371 372define amdgpu_ps <4 x float> @buffer_load_idx(ptr addrspace(8) inreg, i32) {373; GFX6-LABEL: buffer_load_idx:374; GFX6:       ; %bb.0: ; %main_body375; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen376; GFX6-NEXT:    s_waitcnt vmcnt(0)377; GFX6-NEXT:    ; return to shader part epilog378;379; GFX8PLUS-LABEL: buffer_load_idx:380; GFX8PLUS:       ; %bb.0: ; %main_body381; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen382; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)383; GFX8PLUS-NEXT:    ; return to shader part epilog384;385; GFX11-LABEL: buffer_load_idx:386; GFX11:       ; %bb.0: ; %main_body387; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen388; GFX11-NEXT:    s_waitcnt vmcnt(0)389; GFX11-NEXT:    ; return to shader part epilog390;391; NOPRT-LABEL: buffer_load_idx:392; NOPRT:       ; %bb.0: ; %main_body393; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 idxen394; NOPRT-NEXT:    s_waitcnt vmcnt(0)395; NOPRT-NEXT:    ; return to shader part epilog396main_body:397  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 %1, i32 0, i32 0, i32 0)398  ret <4 x float> %data399}400 401define amdgpu_ps <4 x float> @buffer_load_ofs(ptr addrspace(8) inreg, i32) {402; GFX6-LABEL: buffer_load_ofs:403; GFX6:       ; %bb.0: ; %main_body404; GFX6-NEXT:    s_mov_b32 s4, 0405; GFX6-NEXT:    v_mov_b32_e32 v1, v0406; GFX6-NEXT:    v_mov_b32_e32 v0, s4407; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen408; GFX6-NEXT:    s_waitcnt vmcnt(0)409; GFX6-NEXT:    ; return to shader part epilog410;411; GFX8PLUS-LABEL: buffer_load_ofs:412; GFX8PLUS:       ; %bb.0: ; %main_body413; GFX8PLUS-NEXT:    s_mov_b32 s4, 0414; GFX8PLUS-NEXT:    v_mov_b32_e32 v1, v0415; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, s4416; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen417; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)418; GFX8PLUS-NEXT:    ; return to shader part epilog419;420; GFX11-LABEL: buffer_load_ofs:421; GFX11:       ; %bb.0: ; %main_body422; GFX11-NEXT:    s_mov_b32 s4, 0423; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)424; GFX11-NEXT:    v_dual_mov_b32 v1, v0 :: v_dual_mov_b32 v0, s4425; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen426; GFX11-NEXT:    s_waitcnt vmcnt(0)427; GFX11-NEXT:    ; return to shader part epilog428;429; NOPRT-LABEL: buffer_load_ofs:430; NOPRT:       ; %bb.0: ; %main_body431; NOPRT-NEXT:    s_mov_b32 s4, 0432; NOPRT-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)433; NOPRT-NEXT:    v_dual_mov_b32 v1, v0 :: v_dual_mov_b32 v0, s4434; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen435; NOPRT-NEXT:    s_waitcnt vmcnt(0)436; NOPRT-NEXT:    ; return to shader part epilog437main_body:438  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 %1, i32 0, i32 0)439  ret <4 x float> %data440}441 442define amdgpu_ps <4 x float> @buffer_load_ofs_imm(ptr addrspace(8) inreg, i32) {443; GFX6-LABEL: buffer_load_ofs_imm:444; GFX6:       ; %bb.0: ; %main_body445; GFX6-NEXT:    s_mov_b32 s4, 0446; GFX6-NEXT:    v_mov_b32_e32 v1, v0447; GFX6-NEXT:    v_mov_b32_e32 v0, s4448; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:60449; GFX6-NEXT:    s_waitcnt vmcnt(0)450; GFX6-NEXT:    ; return to shader part epilog451;452; GFX8PLUS-LABEL: buffer_load_ofs_imm:453; GFX8PLUS:       ; %bb.0: ; %main_body454; GFX8PLUS-NEXT:    s_mov_b32 s4, 0455; GFX8PLUS-NEXT:    v_mov_b32_e32 v1, v0456; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, s4457; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:60458; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)459; GFX8PLUS-NEXT:    ; return to shader part epilog460;461; GFX11-LABEL: buffer_load_ofs_imm:462; GFX11:       ; %bb.0: ; %main_body463; GFX11-NEXT:    s_mov_b32 s4, 0464; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)465; GFX11-NEXT:    v_dual_mov_b32 v1, v0 :: v_dual_mov_b32 v0, s4466; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:60467; GFX11-NEXT:    s_waitcnt vmcnt(0)468; GFX11-NEXT:    ; return to shader part epilog469;470; NOPRT-LABEL: buffer_load_ofs_imm:471; NOPRT:       ; %bb.0: ; %main_body472; NOPRT-NEXT:    s_mov_b32 s4, 0473; NOPRT-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)474; NOPRT-NEXT:    v_dual_mov_b32 v1, v0 :: v_dual_mov_b32 v0, s4475; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen offset:60476; NOPRT-NEXT:    s_waitcnt vmcnt(0)477; NOPRT-NEXT:    ; return to shader part epilog478main_body:479  %ofs = add i32 %1, 60480  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 0, i32 %ofs, i32 0, i32 0)481  ret <4 x float> %data482}483 484define amdgpu_ps <4 x float> @buffer_load_both(ptr addrspace(8) inreg, i32, i32) {485; GFX6-LABEL: buffer_load_both:486; GFX6:       ; %bb.0: ; %main_body487; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen488; GFX6-NEXT:    s_waitcnt vmcnt(0)489; GFX6-NEXT:    ; return to shader part epilog490;491; GFX8PLUS-LABEL: buffer_load_both:492; GFX8PLUS:       ; %bb.0: ; %main_body493; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen494; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)495; GFX8PLUS-NEXT:    ; return to shader part epilog496;497; GFX11-LABEL: buffer_load_both:498; GFX11:       ; %bb.0: ; %main_body499; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen500; GFX11-NEXT:    s_waitcnt vmcnt(0)501; GFX11-NEXT:    ; return to shader part epilog502;503; NOPRT-LABEL: buffer_load_both:504; NOPRT:       ; %bb.0: ; %main_body505; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[0:1], s[0:3], 0 idxen offen506; NOPRT-NEXT:    s_waitcnt vmcnt(0)507; NOPRT-NEXT:    ; return to shader part epilog508main_body:509  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 %1, i32 %2, i32 0, i32 0)510  ret <4 x float> %data511}512 513define amdgpu_ps <4 x float> @buffer_load_both_reversed(ptr addrspace(8) inreg, i32, i32) {514; GFX6-LABEL: buffer_load_both_reversed:515; GFX6:       ; %bb.0: ; %main_body516; GFX6-NEXT:    v_mov_b32_e32 v2, v0517; GFX6-NEXT:    buffer_load_format_xyzw v[0:3], v[1:2], s[0:3], 0 idxen offen518; GFX6-NEXT:    s_waitcnt vmcnt(0)519; GFX6-NEXT:    ; return to shader part epilog520;521; GFX8PLUS-LABEL: buffer_load_both_reversed:522; GFX8PLUS:       ; %bb.0: ; %main_body523; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, v0524; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[0:3], v[1:2], s[0:3], 0 idxen offen525; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)526; GFX8PLUS-NEXT:    ; return to shader part epilog527;528; GFX11-LABEL: buffer_load_both_reversed:529; GFX11:       ; %bb.0: ; %main_body530; GFX11-NEXT:    v_mov_b32_e32 v2, v0531; GFX11-NEXT:    buffer_load_format_xyzw v[0:3], v[1:2], s[0:3], 0 idxen offen532; GFX11-NEXT:    s_waitcnt vmcnt(0)533; GFX11-NEXT:    ; return to shader part epilog534;535; NOPRT-LABEL: buffer_load_both_reversed:536; NOPRT:       ; %bb.0: ; %main_body537; NOPRT-NEXT:    v_mov_b32_e32 v2, v0538; NOPRT-NEXT:    buffer_load_format_xyzw v[0:3], v[1:2], s[0:3], 0 idxen offen539; NOPRT-NEXT:    s_waitcnt vmcnt(0)540; NOPRT-NEXT:    ; return to shader part epilog541main_body:542  %data = call <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8) %0, i32 %2, i32 %1, i32 0, i32 0)543  ret <4 x float> %data544}545 546define amdgpu_ps float @buffer_load_x(ptr addrspace(8) inreg %rsrc) {547; GFX6-LABEL: buffer_load_x:548; GFX6:       ; %bb.0: ; %main_body549; GFX6-NEXT:    v_mov_b32_e32 v0, 0550; GFX6-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen551; GFX6-NEXT:    s_waitcnt vmcnt(0)552; GFX6-NEXT:    ; return to shader part epilog553;554; GFX8PLUS-LABEL: buffer_load_x:555; GFX8PLUS:       ; %bb.0: ; %main_body556; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, 0557; GFX8PLUS-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen558; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)559; GFX8PLUS-NEXT:    ; return to shader part epilog560;561; GFX11-LABEL: buffer_load_x:562; GFX11:       ; %bb.0: ; %main_body563; GFX11-NEXT:    v_mov_b32_e32 v0, 0564; GFX11-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen565; GFX11-NEXT:    s_waitcnt vmcnt(0)566; GFX11-NEXT:    ; return to shader part epilog567;568; NOPRT-LABEL: buffer_load_x:569; NOPRT:       ; %bb.0: ; %main_body570; NOPRT-NEXT:    v_mov_b32_e32 v0, 0571; NOPRT-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen572; NOPRT-NEXT:    s_waitcnt vmcnt(0)573; NOPRT-NEXT:    ; return to shader part epilog574main_body:575  %data = call float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)576  ret float %data577}578 579define amdgpu_ps float @buffer_load_x_i32(ptr addrspace(8) inreg %rsrc) {580; GFX6-LABEL: buffer_load_x_i32:581; GFX6:       ; %bb.0: ; %main_body582; GFX6-NEXT:    v_mov_b32_e32 v0, 0583; GFX6-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen584; GFX6-NEXT:    s_waitcnt vmcnt(0)585; GFX6-NEXT:    ; return to shader part epilog586;587; GFX8PLUS-LABEL: buffer_load_x_i32:588; GFX8PLUS:       ; %bb.0: ; %main_body589; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, 0590; GFX8PLUS-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen591; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)592; GFX8PLUS-NEXT:    ; return to shader part epilog593;594; GFX11-LABEL: buffer_load_x_i32:595; GFX11:       ; %bb.0: ; %main_body596; GFX11-NEXT:    v_mov_b32_e32 v0, 0597; GFX11-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen598; GFX11-NEXT:    s_waitcnt vmcnt(0)599; GFX11-NEXT:    ; return to shader part epilog600;601; NOPRT-LABEL: buffer_load_x_i32:602; NOPRT:       ; %bb.0: ; %main_body603; NOPRT-NEXT:    v_mov_b32_e32 v0, 0604; NOPRT-NEXT:    buffer_load_format_x v0, v0, s[0:3], 0 idxen605; NOPRT-NEXT:    s_waitcnt vmcnt(0)606; NOPRT-NEXT:    ; return to shader part epilog607main_body:608  %data = call i32 @llvm.amdgcn.struct.ptr.buffer.load.format.i32(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)609  %fdata = bitcast i32 %data to float610  ret float %fdata611}612 613define amdgpu_ps <2 x float> @buffer_load_xy(ptr addrspace(8) inreg %rsrc) {614; GFX6-LABEL: buffer_load_xy:615; GFX6:       ; %bb.0: ; %main_body616; GFX6-NEXT:    v_mov_b32_e32 v0, 0617; GFX6-NEXT:    buffer_load_format_xy v[0:1], v0, s[0:3], 0 idxen618; GFX6-NEXT:    s_waitcnt vmcnt(0)619; GFX6-NEXT:    ; return to shader part epilog620;621; GFX8PLUS-LABEL: buffer_load_xy:622; GFX8PLUS:       ; %bb.0: ; %main_body623; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, 0624; GFX8PLUS-NEXT:    buffer_load_format_xy v[0:1], v0, s[0:3], 0 idxen625; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)626; GFX8PLUS-NEXT:    ; return to shader part epilog627;628; GFX11-LABEL: buffer_load_xy:629; GFX11:       ; %bb.0: ; %main_body630; GFX11-NEXT:    v_mov_b32_e32 v0, 0631; GFX11-NEXT:    buffer_load_format_xy v[0:1], v0, s[0:3], 0 idxen632; GFX11-NEXT:    s_waitcnt vmcnt(0)633; GFX11-NEXT:    ; return to shader part epilog634;635; NOPRT-LABEL: buffer_load_xy:636; NOPRT:       ; %bb.0: ; %main_body637; NOPRT-NEXT:    v_mov_b32_e32 v0, 0638; NOPRT-NEXT:    buffer_load_format_xy v[0:1], v0, s[0:3], 0 idxen639; NOPRT-NEXT:    s_waitcnt vmcnt(0)640; NOPRT-NEXT:    ; return to shader part epilog641main_body:642  %data = call <2 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v2f32(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)643  ret <2 x float> %data644}645 646define amdgpu_cs float @buffer_load_v4i32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {647; GFX6-LABEL: buffer_load_v4i32_tfe:648; GFX6:       ; %bb.0:649; GFX6-NEXT:    v_mov_b32_e32 v2, 0650; GFX6-NEXT:    v_mov_b32_e32 v3, v2651; GFX6-NEXT:    v_mov_b32_e32 v4, v2652; GFX6-NEXT:    v_mov_b32_e32 v5, v2653; GFX6-NEXT:    v_mov_b32_e32 v6, v2654; GFX6-NEXT:    buffer_load_format_xyzw v[2:6], v2, s[0:3], 0 idxen tfe655; GFX6-NEXT:    s_mov_b32 s2, 0656; GFX6-NEXT:    s_mov_b32 s3, 0xf000657; GFX6-NEXT:    s_mov_b32 s0, s2658; GFX6-NEXT:    s_mov_b32 s1, s2659; GFX6-NEXT:    s_waitcnt vmcnt(0)660; GFX6-NEXT:    buffer_store_dwordx4 v[2:5], v[0:1], s[0:3], 0 addr64661; GFX6-NEXT:    v_mov_b32_e32 v0, v6662; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)663; GFX6-NEXT:    ; return to shader part epilog664;665; GFX8PLUS-LABEL: buffer_load_v4i32_tfe:666; GFX8PLUS:       ; %bb.0:667; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 0668; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v2669; GFX8PLUS-NEXT:    v_mov_b32_e32 v4, v2670; GFX8PLUS-NEXT:    v_mov_b32_e32 v5, v2671; GFX8PLUS-NEXT:    v_mov_b32_e32 v6, v2672; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[2:6], v2, s[0:3], 0 idxen tfe673; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)674; GFX8PLUS-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]675; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v6676; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)677; GFX8PLUS-NEXT:    ; return to shader part epilog678;679; GFX11-LABEL: buffer_load_v4i32_tfe:680; GFX11:       ; %bb.0:681; GFX11-NEXT:    v_mov_b32_e32 v2, 0682; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)683; GFX11-NEXT:    v_mov_b32_e32 v3, v2684; GFX11-NEXT:    v_mov_b32_e32 v4, v2685; GFX11-NEXT:    v_mov_b32_e32 v5, v2686; GFX11-NEXT:    v_mov_b32_e32 v6, v2687; GFX11-NEXT:    buffer_load_format_xyzw v[2:6], v2, s[0:3], 0 idxen tfe688; GFX11-NEXT:    s_waitcnt vmcnt(0)689; GFX11-NEXT:    global_store_b128 v[0:1], v[2:5], off690; GFX11-NEXT:    v_mov_b32_e32 v0, v6691; GFX11-NEXT:    ; return to shader part epilog692;693; NOPRT-LABEL: buffer_load_v4i32_tfe:694; NOPRT:       ; %bb.0:695; NOPRT-NEXT:    v_mov_b32_e32 v6, 0696; NOPRT-NEXT:    buffer_load_format_xyzw v[2:6], v6, s[0:3], 0 idxen tfe697; NOPRT-NEXT:    s_waitcnt vmcnt(0)698; NOPRT-NEXT:    global_store_b128 v[0:1], v[2:5], off699; NOPRT-NEXT:    v_mov_b32_e32 v0, v6700; NOPRT-NEXT:    ; return to shader part epilog701  %load = call { <4 x i32>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v4i32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)702  %data = extractvalue { <4 x i32>, i32 } %load, 0703  store <4 x i32> %data, ptr addrspace(1) %out704  %status = extractvalue { <4 x i32>, i32 } %load, 1705  %fstatus = bitcast i32 %status to float706  ret float %fstatus707}708 709define amdgpu_cs float @buffer_load_v4f32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {710; GFX6-LABEL: buffer_load_v4f32_tfe:711; GFX6:       ; %bb.0:712; GFX6-NEXT:    v_mov_b32_e32 v2, 0713; GFX6-NEXT:    v_mov_b32_e32 v3, v2714; GFX6-NEXT:    v_mov_b32_e32 v4, v2715; GFX6-NEXT:    v_mov_b32_e32 v5, v2716; GFX6-NEXT:    v_mov_b32_e32 v6, v2717; GFX6-NEXT:    buffer_load_format_xyzw v[2:6], v2, s[0:3], 0 idxen tfe718; GFX6-NEXT:    s_mov_b32 s2, 0719; GFX6-NEXT:    s_mov_b32 s3, 0xf000720; GFX6-NEXT:    s_mov_b32 s0, s2721; GFX6-NEXT:    s_mov_b32 s1, s2722; GFX6-NEXT:    s_waitcnt vmcnt(0)723; GFX6-NEXT:    buffer_store_dwordx4 v[2:5], v[0:1], s[0:3], 0 addr64724; GFX6-NEXT:    v_mov_b32_e32 v0, v6725; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)726; GFX6-NEXT:    ; return to shader part epilog727;728; GFX8PLUS-LABEL: buffer_load_v4f32_tfe:729; GFX8PLUS:       ; %bb.0:730; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 0731; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v2732; GFX8PLUS-NEXT:    v_mov_b32_e32 v4, v2733; GFX8PLUS-NEXT:    v_mov_b32_e32 v5, v2734; GFX8PLUS-NEXT:    v_mov_b32_e32 v6, v2735; GFX8PLUS-NEXT:    buffer_load_format_xyzw v[2:6], v2, s[0:3], 0 idxen tfe736; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)737; GFX8PLUS-NEXT:    flat_store_dwordx4 v[0:1], v[2:5]738; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v6739; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)740; GFX8PLUS-NEXT:    ; return to shader part epilog741;742; GFX11-LABEL: buffer_load_v4f32_tfe:743; GFX11:       ; %bb.0:744; GFX11-NEXT:    v_mov_b32_e32 v2, 0745; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)746; GFX11-NEXT:    v_mov_b32_e32 v3, v2747; GFX11-NEXT:    v_mov_b32_e32 v4, v2748; GFX11-NEXT:    v_mov_b32_e32 v5, v2749; GFX11-NEXT:    v_mov_b32_e32 v6, v2750; GFX11-NEXT:    buffer_load_format_xyzw v[2:6], v2, s[0:3], 0 idxen tfe751; GFX11-NEXT:    s_waitcnt vmcnt(0)752; GFX11-NEXT:    global_store_b128 v[0:1], v[2:5], off753; GFX11-NEXT:    v_mov_b32_e32 v0, v6754; GFX11-NEXT:    ; return to shader part epilog755;756; NOPRT-LABEL: buffer_load_v4f32_tfe:757; NOPRT:       ; %bb.0:758; NOPRT-NEXT:    v_mov_b32_e32 v6, 0759; NOPRT-NEXT:    buffer_load_format_xyzw v[2:6], v6, s[0:3], 0 idxen tfe760; NOPRT-NEXT:    s_waitcnt vmcnt(0)761; NOPRT-NEXT:    global_store_b128 v[0:1], v[2:5], off762; NOPRT-NEXT:    v_mov_b32_e32 v0, v6763; NOPRT-NEXT:    ; return to shader part epilog764  %load = call { <4 x float>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v4f32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)765  %data = extractvalue { <4 x float>, i32 } %load, 0766  store <4 x float> %data, ptr addrspace(1) %out767  %status = extractvalue { <4 x float>, i32 } %load, 1768  %fstatus = bitcast i32 %status to float769  ret float %fstatus770}771 772define amdgpu_cs float @buffer_load_v3i32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {773; GFX6-LABEL: buffer_load_v3i32_tfe:774; GFX6:       ; %bb.0:775; GFX6-NEXT:    v_mov_b32_e32 v2, 0776; GFX6-NEXT:    v_mov_b32_e32 v3, v2777; GFX6-NEXT:    v_mov_b32_e32 v4, v2778; GFX6-NEXT:    v_mov_b32_e32 v5, v2779; GFX6-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe780; GFX6-NEXT:    s_mov_b32 s2, 0781; GFX6-NEXT:    s_mov_b32 s3, 0xf000782; GFX6-NEXT:    s_mov_b32 s0, s2783; GFX6-NEXT:    s_mov_b32 s1, s2784; GFX6-NEXT:    s_waitcnt vmcnt(0)785; GFX6-NEXT:    buffer_store_dword v4, v[0:1], s[0:3], 0 addr64 offset:8786; GFX6-NEXT:    buffer_store_dwordx2 v[2:3], v[0:1], s[0:3], 0 addr64787; GFX6-NEXT:    v_mov_b32_e32 v0, v5788; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)789; GFX6-NEXT:    ; return to shader part epilog790;791; GFX8PLUS-LABEL: buffer_load_v3i32_tfe:792; GFX8PLUS:       ; %bb.0:793; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 0794; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v2795; GFX8PLUS-NEXT:    v_mov_b32_e32 v4, v2796; GFX8PLUS-NEXT:    v_mov_b32_e32 v5, v2797; GFX8PLUS-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe798; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)799; GFX8PLUS-NEXT:    flat_store_dwordx3 v[0:1], v[2:4]800; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v5801; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)802; GFX8PLUS-NEXT:    ; return to shader part epilog803;804; GFX11-LABEL: buffer_load_v3i32_tfe:805; GFX11:       ; %bb.0:806; GFX11-NEXT:    v_mov_b32_e32 v2, 0807; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)808; GFX11-NEXT:    v_mov_b32_e32 v3, v2809; GFX11-NEXT:    v_mov_b32_e32 v4, v2810; GFX11-NEXT:    v_mov_b32_e32 v5, v2811; GFX11-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe812; GFX11-NEXT:    s_waitcnt vmcnt(0)813; GFX11-NEXT:    global_store_b96 v[0:1], v[2:4], off814; GFX11-NEXT:    v_mov_b32_e32 v0, v5815; GFX11-NEXT:    ; return to shader part epilog816;817; NOPRT-LABEL: buffer_load_v3i32_tfe:818; NOPRT:       ; %bb.0:819; NOPRT-NEXT:    v_mov_b32_e32 v5, 0820; NOPRT-NEXT:    buffer_load_format_xyz v[2:5], v5, s[0:3], 0 idxen tfe821; NOPRT-NEXT:    s_waitcnt vmcnt(0)822; NOPRT-NEXT:    global_store_b96 v[0:1], v[2:4], off823; NOPRT-NEXT:    v_mov_b32_e32 v0, v5824; NOPRT-NEXT:    ; return to shader part epilog825  %load = call { <3 x i32>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v3i32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)826  %data = extractvalue { <3 x i32>, i32 } %load, 0827  store <3 x i32> %data, ptr addrspace(1) %out828  %status = extractvalue { <3 x i32>, i32 } %load, 1829  %fstatus = bitcast i32 %status to float830  ret float %fstatus831}832 833define amdgpu_cs float @buffer_load_v3f32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {834; GFX6-LABEL: buffer_load_v3f32_tfe:835; GFX6:       ; %bb.0:836; GFX6-NEXT:    v_mov_b32_e32 v2, 0837; GFX6-NEXT:    v_mov_b32_e32 v3, v2838; GFX6-NEXT:    v_mov_b32_e32 v4, v2839; GFX6-NEXT:    v_mov_b32_e32 v5, v2840; GFX6-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe841; GFX6-NEXT:    s_mov_b32 s2, 0842; GFX6-NEXT:    s_mov_b32 s3, 0xf000843; GFX6-NEXT:    s_mov_b32 s0, s2844; GFX6-NEXT:    s_mov_b32 s1, s2845; GFX6-NEXT:    s_waitcnt vmcnt(0)846; GFX6-NEXT:    buffer_store_dword v4, v[0:1], s[0:3], 0 addr64 offset:8847; GFX6-NEXT:    buffer_store_dwordx2 v[2:3], v[0:1], s[0:3], 0 addr64848; GFX6-NEXT:    v_mov_b32_e32 v0, v5849; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)850; GFX6-NEXT:    ; return to shader part epilog851;852; GFX8PLUS-LABEL: buffer_load_v3f32_tfe:853; GFX8PLUS:       ; %bb.0:854; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 0855; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v2856; GFX8PLUS-NEXT:    v_mov_b32_e32 v4, v2857; GFX8PLUS-NEXT:    v_mov_b32_e32 v5, v2858; GFX8PLUS-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe859; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)860; GFX8PLUS-NEXT:    flat_store_dwordx3 v[0:1], v[2:4]861; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v5862; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)863; GFX8PLUS-NEXT:    ; return to shader part epilog864;865; GFX11-LABEL: buffer_load_v3f32_tfe:866; GFX11:       ; %bb.0:867; GFX11-NEXT:    v_mov_b32_e32 v2, 0868; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)869; GFX11-NEXT:    v_mov_b32_e32 v3, v2870; GFX11-NEXT:    v_mov_b32_e32 v4, v2871; GFX11-NEXT:    v_mov_b32_e32 v5, v2872; GFX11-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe873; GFX11-NEXT:    s_waitcnt vmcnt(0)874; GFX11-NEXT:    global_store_b96 v[0:1], v[2:4], off875; GFX11-NEXT:    v_mov_b32_e32 v0, v5876; GFX11-NEXT:    ; return to shader part epilog877;878; NOPRT-LABEL: buffer_load_v3f32_tfe:879; NOPRT:       ; %bb.0:880; NOPRT-NEXT:    v_mov_b32_e32 v5, 0881; NOPRT-NEXT:    buffer_load_format_xyz v[2:5], v5, s[0:3], 0 idxen tfe882; NOPRT-NEXT:    s_waitcnt vmcnt(0)883; NOPRT-NEXT:    global_store_b96 v[0:1], v[2:4], off884; NOPRT-NEXT:    v_mov_b32_e32 v0, v5885; NOPRT-NEXT:    ; return to shader part epilog886  %load = call { <3 x float>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v3f32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)887  %data = extractvalue { <3 x float>, i32 } %load, 0888  store <3 x float> %data, ptr addrspace(1) %out889  %status = extractvalue { <3 x float>, i32 } %load, 1890  %fstatus = bitcast i32 %status to float891  ret float %fstatus892}893 894define amdgpu_cs float @buffer_load_v2i32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {895; GFX6-LABEL: buffer_load_v2i32_tfe:896; GFX6:       ; %bb.0:897; GFX6-NEXT:    v_mov_b32_e32 v2, 0898; GFX6-NEXT:    v_mov_b32_e32 v3, v2899; GFX6-NEXT:    v_mov_b32_e32 v4, v2900; GFX6-NEXT:    v_mov_b32_e32 v5, v2901; GFX6-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe902; GFX6-NEXT:    s_mov_b32 s2, 0903; GFX6-NEXT:    s_mov_b32 s3, 0xf000904; GFX6-NEXT:    s_mov_b32 s0, s2905; GFX6-NEXT:    s_mov_b32 s1, s2906; GFX6-NEXT:    s_waitcnt vmcnt(0)907; GFX6-NEXT:    buffer_store_dwordx2 v[2:3], v[0:1], s[0:3], 0 addr64908; GFX6-NEXT:    v_mov_b32_e32 v0, v4909; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)910; GFX6-NEXT:    ; return to shader part epilog911;912; GFX8PLUS-LABEL: buffer_load_v2i32_tfe:913; GFX8PLUS:       ; %bb.0:914; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 0915; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v2916; GFX8PLUS-NEXT:    v_mov_b32_e32 v4, v2917; GFX8PLUS-NEXT:    buffer_load_format_xy v[2:4], v2, s[0:3], 0 idxen tfe918; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)919; GFX8PLUS-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]920; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v4921; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)922; GFX8PLUS-NEXT:    ; return to shader part epilog923;924; GFX11-LABEL: buffer_load_v2i32_tfe:925; GFX11:       ; %bb.0:926; GFX11-NEXT:    v_mov_b32_e32 v2, 0927; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)928; GFX11-NEXT:    v_mov_b32_e32 v3, v2929; GFX11-NEXT:    v_mov_b32_e32 v4, v2930; GFX11-NEXT:    buffer_load_format_xy v[2:4], v2, s[0:3], 0 idxen tfe931; GFX11-NEXT:    s_waitcnt vmcnt(0)932; GFX11-NEXT:    global_store_b64 v[0:1], v[2:3], off933; GFX11-NEXT:    v_mov_b32_e32 v0, v4934; GFX11-NEXT:    ; return to shader part epilog935;936; NOPRT-LABEL: buffer_load_v2i32_tfe:937; NOPRT:       ; %bb.0:938; NOPRT-NEXT:    v_mov_b32_e32 v4, 0939; NOPRT-NEXT:    buffer_load_format_xy v[2:4], v4, s[0:3], 0 idxen tfe940; NOPRT-NEXT:    s_waitcnt vmcnt(0)941; NOPRT-NEXT:    global_store_b64 v[0:1], v[2:3], off942; NOPRT-NEXT:    v_mov_b32_e32 v0, v4943; NOPRT-NEXT:    ; return to shader part epilog944  %load = call { <2 x i32>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v2i32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)945  %data = extractvalue { <2 x i32>, i32 } %load, 0946  store <2 x i32> %data, ptr addrspace(1) %out947  %status = extractvalue { <2 x i32>, i32 } %load, 1948  %fstatus = bitcast i32 %status to float949  ret float %fstatus950}951 952define amdgpu_cs float @buffer_load_v2f32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {953; GFX6-LABEL: buffer_load_v2f32_tfe:954; GFX6:       ; %bb.0:955; GFX6-NEXT:    v_mov_b32_e32 v2, 0956; GFX6-NEXT:    v_mov_b32_e32 v3, v2957; GFX6-NEXT:    v_mov_b32_e32 v4, v2958; GFX6-NEXT:    v_mov_b32_e32 v5, v2959; GFX6-NEXT:    buffer_load_format_xyz v[2:5], v2, s[0:3], 0 idxen tfe960; GFX6-NEXT:    s_mov_b32 s2, 0961; GFX6-NEXT:    s_mov_b32 s3, 0xf000962; GFX6-NEXT:    s_mov_b32 s0, s2963; GFX6-NEXT:    s_mov_b32 s1, s2964; GFX6-NEXT:    s_waitcnt vmcnt(0)965; GFX6-NEXT:    buffer_store_dwordx2 v[2:3], v[0:1], s[0:3], 0 addr64966; GFX6-NEXT:    v_mov_b32_e32 v0, v4967; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)968; GFX6-NEXT:    ; return to shader part epilog969;970; GFX8PLUS-LABEL: buffer_load_v2f32_tfe:971; GFX8PLUS:       ; %bb.0:972; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 0973; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v2974; GFX8PLUS-NEXT:    v_mov_b32_e32 v4, v2975; GFX8PLUS-NEXT:    buffer_load_format_xy v[2:4], v2, s[0:3], 0 idxen tfe976; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)977; GFX8PLUS-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]978; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v4979; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)980; GFX8PLUS-NEXT:    ; return to shader part epilog981;982; GFX11-LABEL: buffer_load_v2f32_tfe:983; GFX11:       ; %bb.0:984; GFX11-NEXT:    v_mov_b32_e32 v2, 0985; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)986; GFX11-NEXT:    v_mov_b32_e32 v3, v2987; GFX11-NEXT:    v_mov_b32_e32 v4, v2988; GFX11-NEXT:    buffer_load_format_xy v[2:4], v2, s[0:3], 0 idxen tfe989; GFX11-NEXT:    s_waitcnt vmcnt(0)990; GFX11-NEXT:    global_store_b64 v[0:1], v[2:3], off991; GFX11-NEXT:    v_mov_b32_e32 v0, v4992; GFX11-NEXT:    ; return to shader part epilog993;994; NOPRT-LABEL: buffer_load_v2f32_tfe:995; NOPRT:       ; %bb.0:996; NOPRT-NEXT:    v_mov_b32_e32 v4, 0997; NOPRT-NEXT:    buffer_load_format_xy v[2:4], v4, s[0:3], 0 idxen tfe998; NOPRT-NEXT:    s_waitcnt vmcnt(0)999; NOPRT-NEXT:    global_store_b64 v[0:1], v[2:3], off1000; NOPRT-NEXT:    v_mov_b32_e32 v0, v41001; NOPRT-NEXT:    ; return to shader part epilog1002  %load = call { <2 x float>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v2f32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)1003  %data = extractvalue { <2 x float>, i32 } %load, 01004  store <2 x float> %data, ptr addrspace(1) %out1005  %status = extractvalue { <2 x float>, i32 } %load, 11006  %fstatus = bitcast i32 %status to float1007  ret float %fstatus1008}1009 1010define amdgpu_cs float @buffer_load_i32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {1011; GFX6-LABEL: buffer_load_i32_tfe:1012; GFX6:       ; %bb.0:1013; GFX6-NEXT:    v_mov_b32_e32 v2, 01014; GFX6-NEXT:    v_mov_b32_e32 v3, v21015; GFX6-NEXT:    buffer_load_format_x v[2:3], v2, s[0:3], 0 idxen tfe1016; GFX6-NEXT:    s_mov_b32 s2, 01017; GFX6-NEXT:    s_mov_b32 s3, 0xf0001018; GFX6-NEXT:    s_mov_b32 s0, s21019; GFX6-NEXT:    s_mov_b32 s1, s21020; GFX6-NEXT:    s_waitcnt vmcnt(0)1021; GFX6-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr641022; GFX6-NEXT:    v_mov_b32_e32 v0, v31023; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)1024; GFX6-NEXT:    ; return to shader part epilog1025;1026; GFX8PLUS-LABEL: buffer_load_i32_tfe:1027; GFX8PLUS:       ; %bb.0:1028; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 01029; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v21030; GFX8PLUS-NEXT:    buffer_load_format_x v[2:3], v2, s[0:3], 0 idxen tfe1031; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)1032; GFX8PLUS-NEXT:    flat_store_dword v[0:1], v21033; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v31034; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)1035; GFX8PLUS-NEXT:    ; return to shader part epilog1036;1037; GFX11-LABEL: buffer_load_i32_tfe:1038; GFX11:       ; %bb.0:1039; GFX11-NEXT:    v_mov_b32_e32 v2, 01040; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1041; GFX11-NEXT:    v_mov_b32_e32 v3, v21042; GFX11-NEXT:    buffer_load_format_x v[2:3], v2, s[0:3], 0 idxen tfe1043; GFX11-NEXT:    s_waitcnt vmcnt(0)1044; GFX11-NEXT:    global_store_b32 v[0:1], v2, off1045; GFX11-NEXT:    v_mov_b32_e32 v0, v31046; GFX11-NEXT:    ; return to shader part epilog1047;1048; NOPRT-LABEL: buffer_load_i32_tfe:1049; NOPRT:       ; %bb.0:1050; NOPRT-NEXT:    v_mov_b32_e32 v3, 01051; NOPRT-NEXT:    buffer_load_format_x v[2:3], v3, s[0:3], 0 idxen tfe1052; NOPRT-NEXT:    s_waitcnt vmcnt(0)1053; NOPRT-NEXT:    global_store_b32 v[0:1], v2, off1054; NOPRT-NEXT:    v_mov_b32_e32 v0, v31055; NOPRT-NEXT:    ; return to shader part epilog1056  %load = call { i32, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_i32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)1057  %data = extractvalue { i32, i32 } %load, 01058  store i32 %data, ptr addrspace(1) %out1059  %status = extractvalue { i32, i32 } %load, 11060  %fstatus = bitcast i32 %status to float1061  ret float %fstatus1062}1063 1064define amdgpu_cs float @buffer_load_f32_tfe(ptr addrspace(8) inreg %rsrc, ptr addrspace(1) %out) {1065; GFX6-LABEL: buffer_load_f32_tfe:1066; GFX6:       ; %bb.0:1067; GFX6-NEXT:    v_mov_b32_e32 v2, 01068; GFX6-NEXT:    v_mov_b32_e32 v3, v21069; GFX6-NEXT:    buffer_load_format_x v[2:3], v2, s[0:3], 0 idxen tfe1070; GFX6-NEXT:    s_mov_b32 s2, 01071; GFX6-NEXT:    s_mov_b32 s3, 0xf0001072; GFX6-NEXT:    s_mov_b32 s0, s21073; GFX6-NEXT:    s_mov_b32 s1, s21074; GFX6-NEXT:    s_waitcnt vmcnt(0)1075; GFX6-NEXT:    buffer_store_dword v2, v[0:1], s[0:3], 0 addr641076; GFX6-NEXT:    v_mov_b32_e32 v0, v31077; GFX6-NEXT:    s_waitcnt vmcnt(0) expcnt(0)1078; GFX6-NEXT:    ; return to shader part epilog1079;1080; GFX8PLUS-LABEL: buffer_load_f32_tfe:1081; GFX8PLUS:       ; %bb.0:1082; GFX8PLUS-NEXT:    v_mov_b32_e32 v2, 01083; GFX8PLUS-NEXT:    v_mov_b32_e32 v3, v21084; GFX8PLUS-NEXT:    buffer_load_format_x v[2:3], v2, s[0:3], 0 idxen tfe1085; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)1086; GFX8PLUS-NEXT:    flat_store_dword v[0:1], v21087; GFX8PLUS-NEXT:    v_mov_b32_e32 v0, v31088; GFX8PLUS-NEXT:    s_waitcnt vmcnt(0)1089; GFX8PLUS-NEXT:    ; return to shader part epilog1090;1091; GFX11-LABEL: buffer_load_f32_tfe:1092; GFX11:       ; %bb.0:1093; GFX11-NEXT:    v_mov_b32_e32 v2, 01094; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)1095; GFX11-NEXT:    v_mov_b32_e32 v3, v21096; GFX11-NEXT:    buffer_load_format_x v[2:3], v2, s[0:3], 0 idxen tfe1097; GFX11-NEXT:    s_waitcnt vmcnt(0)1098; GFX11-NEXT:    global_store_b32 v[0:1], v2, off1099; GFX11-NEXT:    v_mov_b32_e32 v0, v31100; GFX11-NEXT:    ; return to shader part epilog1101;1102; NOPRT-LABEL: buffer_load_f32_tfe:1103; NOPRT:       ; %bb.0:1104; NOPRT-NEXT:    v_mov_b32_e32 v3, 01105; NOPRT-NEXT:    buffer_load_format_x v[2:3], v3, s[0:3], 0 idxen tfe1106; NOPRT-NEXT:    s_waitcnt vmcnt(0)1107; NOPRT-NEXT:    global_store_b32 v[0:1], v2, off1108; NOPRT-NEXT:    v_mov_b32_e32 v0, v31109; NOPRT-NEXT:    ; return to shader part epilog1110  %load = call { float, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_f32i32s(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0, i32 0)1111  %data = extractvalue { float, i32 } %load, 01112  store float %data, ptr addrspace(1) %out1113  %status = extractvalue { float, i32 } %load, 11114  %fstatus = bitcast i32 %status to float1115  ret float %fstatus1116}1117 1118declare float @llvm.amdgcn.struct.ptr.buffer.load.format.f32(ptr addrspace(8), i32, i32, i32, i32) #01119declare <2 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v2f32(ptr addrspace(8), i32, i32, i32, i32) #01120declare <4 x float> @llvm.amdgcn.struct.ptr.buffer.load.format.v4f32(ptr addrspace(8), i32, i32, i32, i32) #01121declare i32 @llvm.amdgcn.struct.ptr.buffer.load.format.i32(ptr addrspace(8), i32, i32, i32, i32) #01122declare { <4 x i32>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v4i32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01123declare { <4 x float>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v4f32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01124declare { <3 x i32>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v3i32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01125declare { <3 x float>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v3f32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01126declare { <2 x i32>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v2i32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01127declare { <2 x float>, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_v2f32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01128declare { i32, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_i32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01129declare { float, i32 } @llvm.amdgcn.struct.ptr.buffer.load.format.sl_f32i32s(ptr addrspace(8), i32, i32, i32, i32 immarg) #01130attributes #0 = { nounwind readonly }1131