brintos

brintos / llvm-project-archived public Read only

0
0
Text · 36.9 KiB · 77fb0ed Raw
906 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mcpu=tahiti -mtriple=amdgcn-- < %s | FileCheck %s -check-prefixes=GFX67,GFX63; RUN: llc -mcpu=hawaii -mtriple=amdgcn-- < %s | FileCheck %s -check-prefixes=GFX67,GFX74; RUN: llc -mcpu=fiji -mtriple=amdgcn-- < %s | FileCheck %s -check-prefix=GFX85; RUN: llc -mcpu=gfx900 -mtriple=amdgcn-- < %s | FileCheck %s -check-prefixes=GFX910,GFX96; RUN: llc -mcpu=gfx1010 -mtriple=amdgcn-- < %s | FileCheck %s -check-prefixes=GFX910,GFX107; RUN: llc -mcpu=gfx1100 -mtriple=amdgcn-- < %s | FileCheck %s -check-prefix=GFX118; RUN: llc -mcpu=gfx1200 -mtriple=amdgcn-- < %s | FileCheck %s -check-prefix=GFX12009; RUN: llc -mcpu=gfx1250 -mtriple=amdgcn-- < %s | FileCheck %s -check-prefix=GFX125010 11define amdgpu_ps void @raw_buffer_load_i8_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {12; GFX67-LABEL: raw_buffer_load_i8_tfe:13; GFX67:       ; %bb.0:14; GFX67-NEXT:    v_mov_b32_e32 v4, 015; GFX67-NEXT:    v_mov_b32_e32 v5, v416; GFX67-NEXT:    buffer_load_ubyte v[4:5], off, s[0:3], 0 tfe17; GFX67-NEXT:    s_mov_b32 s2, 018; GFX67-NEXT:    s_mov_b32 s3, 0xf00019; GFX67-NEXT:    s_mov_b32 s0, s220; GFX67-NEXT:    s_mov_b32 s1, s221; GFX67-NEXT:    s_waitcnt vmcnt(0)22; GFX67-NEXT:    buffer_store_byte v4, v[0:1], s[0:3], 0 addr6423; GFX67-NEXT:    buffer_store_dword v5, v[2:3], s[0:3], 0 addr6424; GFX67-NEXT:    s_endpgm25;26; GFX8-LABEL: raw_buffer_load_i8_tfe:27; GFX8:       ; %bb.0:28; GFX8-NEXT:    v_mov_b32_e32 v4, 029; GFX8-NEXT:    v_mov_b32_e32 v5, v430; GFX8-NEXT:    buffer_load_ubyte v[4:5], off, s[0:3], 0 tfe31; GFX8-NEXT:    s_waitcnt vmcnt(0)32; GFX8-NEXT:    flat_store_byte v[0:1], v433; GFX8-NEXT:    flat_store_dword v[2:3], v534; GFX8-NEXT:    s_endpgm35;36; GFX910-LABEL: raw_buffer_load_i8_tfe:37; GFX910:       ; %bb.0:38; GFX910-NEXT:    v_mov_b32_e32 v4, 039; GFX910-NEXT:    v_mov_b32_e32 v5, v440; GFX910-NEXT:    buffer_load_ubyte v[4:5], off, s[0:3], 0 tfe41; GFX910-NEXT:    s_waitcnt vmcnt(0)42; GFX910-NEXT:    global_store_byte v[0:1], v4, off43; GFX910-NEXT:    global_store_dword v[2:3], v5, off44; GFX910-NEXT:    s_endpgm45;46; GFX11-LABEL: raw_buffer_load_i8_tfe:47; GFX11:       ; %bb.0:48; GFX11-NEXT:    v_mov_b32_e32 v4, 049; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)50; GFX11-NEXT:    v_mov_b32_e32 v5, v451; GFX11-NEXT:    buffer_load_u8 v[4:5], off, s[0:3], 0 tfe52; GFX11-NEXT:    s_waitcnt vmcnt(0)53; GFX11-NEXT:    global_store_b8 v[0:1], v4, off54; GFX11-NEXT:    global_store_b32 v[2:3], v5, off55; GFX11-NEXT:    s_endpgm56;57; GFX1200-LABEL: raw_buffer_load_i8_tfe:58; GFX1200:       ; %bb.0:59; GFX1200-NEXT:    v_mov_b32_e32 v4, 060; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)61; GFX1200-NEXT:    v_mov_b32_e32 v5, v462; GFX1200-NEXT:    buffer_load_u8 v[4:5], off, s[0:3], null tfe63; GFX1200-NEXT:    s_wait_loadcnt 0x064; GFX1200-NEXT:    global_store_b8 v[0:1], v4, off65; GFX1200-NEXT:    global_store_b32 v[2:3], v5, off66; GFX1200-NEXT:    s_endpgm67;68; GFX1250-LABEL: raw_buffer_load_i8_tfe:69; GFX1250:       ; %bb.0:70; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 171; GFX1250-NEXT:    v_mov_b32_e32 v4, 072; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)73; GFX1250-NEXT:    v_mov_b32_e32 v5, v474; GFX1250-NEXT:    buffer_load_u8 v[4:5], off, s[0:3], null tfe75; GFX1250-NEXT:    s_wait_loadcnt 0x076; GFX1250-NEXT:    global_store_b8 v[0:1], v4, off77; GFX1250-NEXT:    global_store_b32 v[2:3], v5, off78; GFX1250-NEXT:    s_endpgm79  %res = call { i8, i32 } @llvm.amdgcn.raw.buffer.load.sl_i8i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)80  %data = extractvalue { i8, i32 } %res, 081  store i8 %data, ptr addrspace(1) %data_addr82  %tfe = extractvalue { i8, i32 } %res, 183  store i32 %tfe, ptr addrspace(1) %tfe_addr84  ret void85}86 87define amdgpu_ps void @raw_buffer_load_i16_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {88; GFX67-LABEL: raw_buffer_load_i16_tfe:89; GFX67:       ; %bb.0:90; GFX67-NEXT:    v_mov_b32_e32 v4, 091; GFX67-NEXT:    v_mov_b32_e32 v5, v492; GFX67-NEXT:    buffer_load_ushort v[4:5], off, s[0:3], 0 tfe93; GFX67-NEXT:    s_mov_b32 s2, 094; GFX67-NEXT:    s_mov_b32 s3, 0xf00095; GFX67-NEXT:    s_mov_b32 s0, s296; GFX67-NEXT:    s_mov_b32 s1, s297; GFX67-NEXT:    s_waitcnt vmcnt(0)98; GFX67-NEXT:    buffer_store_short v4, v[0:1], s[0:3], 0 addr6499; GFX67-NEXT:    buffer_store_dword v5, v[2:3], s[0:3], 0 addr64100; GFX67-NEXT:    s_endpgm101;102; GFX8-LABEL: raw_buffer_load_i16_tfe:103; GFX8:       ; %bb.0:104; GFX8-NEXT:    v_mov_b32_e32 v4, 0105; GFX8-NEXT:    v_mov_b32_e32 v5, v4106; GFX8-NEXT:    buffer_load_ushort v[4:5], off, s[0:3], 0 tfe107; GFX8-NEXT:    s_waitcnt vmcnt(0)108; GFX8-NEXT:    flat_store_short v[0:1], v4109; GFX8-NEXT:    flat_store_dword v[2:3], v5110; GFX8-NEXT:    s_endpgm111;112; GFX910-LABEL: raw_buffer_load_i16_tfe:113; GFX910:       ; %bb.0:114; GFX910-NEXT:    v_mov_b32_e32 v4, 0115; GFX910-NEXT:    v_mov_b32_e32 v5, v4116; GFX910-NEXT:    buffer_load_ushort v[4:5], off, s[0:3], 0 tfe117; GFX910-NEXT:    s_waitcnt vmcnt(0)118; GFX910-NEXT:    global_store_short v[0:1], v4, off119; GFX910-NEXT:    global_store_dword v[2:3], v5, off120; GFX910-NEXT:    s_endpgm121;122; GFX11-LABEL: raw_buffer_load_i16_tfe:123; GFX11:       ; %bb.0:124; GFX11-NEXT:    v_mov_b32_e32 v4, 0125; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)126; GFX11-NEXT:    v_mov_b32_e32 v5, v4127; GFX11-NEXT:    buffer_load_u16 v[4:5], off, s[0:3], 0 tfe128; GFX11-NEXT:    s_waitcnt vmcnt(0)129; GFX11-NEXT:    global_store_b16 v[0:1], v4, off130; GFX11-NEXT:    global_store_b32 v[2:3], v5, off131; GFX11-NEXT:    s_endpgm132;133; GFX1200-LABEL: raw_buffer_load_i16_tfe:134; GFX1200:       ; %bb.0:135; GFX1200-NEXT:    v_mov_b32_e32 v4, 0136; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)137; GFX1200-NEXT:    v_mov_b32_e32 v5, v4138; GFX1200-NEXT:    buffer_load_u16 v[4:5], off, s[0:3], null tfe139; GFX1200-NEXT:    s_wait_loadcnt 0x0140; GFX1200-NEXT:    global_store_b16 v[0:1], v4, off141; GFX1200-NEXT:    global_store_b32 v[2:3], v5, off142; GFX1200-NEXT:    s_endpgm143;144; GFX1250-LABEL: raw_buffer_load_i16_tfe:145; GFX1250:       ; %bb.0:146; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1147; GFX1250-NEXT:    v_mov_b32_e32 v4, 0148; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)149; GFX1250-NEXT:    v_mov_b32_e32 v5, v4150; GFX1250-NEXT:    buffer_load_u16 v[4:5], off, s[0:3], null tfe151; GFX1250-NEXT:    s_wait_loadcnt 0x0152; GFX1250-NEXT:    global_store_b16 v[0:1], v4, off153; GFX1250-NEXT:    global_store_b32 v[2:3], v5, off154; GFX1250-NEXT:    s_endpgm155  %res = call { i16, i32 } @llvm.amdgcn.raw.buffer.load.sl_i16i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)156  %data = extractvalue { i16, i32 } %res, 0157  store i16 %data, ptr addrspace(1) %data_addr158  %tfe = extractvalue { i16, i32 } %res, 1159  store i32 %tfe, ptr addrspace(1) %tfe_addr160  ret void161}162 163define amdgpu_ps void @raw_buffer_load_f16_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {164; GFX67-LABEL: raw_buffer_load_f16_tfe:165; GFX67:       ; %bb.0:166; GFX67-NEXT:    v_mov_b32_e32 v4, 0167; GFX67-NEXT:    v_mov_b32_e32 v5, v4168; GFX67-NEXT:    buffer_load_ushort v[4:5], off, s[0:3], 0 tfe169; GFX67-NEXT:    s_mov_b32 s2, 0170; GFX67-NEXT:    s_mov_b32 s3, 0xf000171; GFX67-NEXT:    s_mov_b32 s0, s2172; GFX67-NEXT:    s_mov_b32 s1, s2173; GFX67-NEXT:    s_waitcnt vmcnt(0)174; GFX67-NEXT:    buffer_store_short v4, v[0:1], s[0:3], 0 addr64175; GFX67-NEXT:    buffer_store_dword v5, v[2:3], s[0:3], 0 addr64176; GFX67-NEXT:    s_endpgm177;178; GFX8-LABEL: raw_buffer_load_f16_tfe:179; GFX8:       ; %bb.0:180; GFX8-NEXT:    v_mov_b32_e32 v4, 0181; GFX8-NEXT:    v_mov_b32_e32 v5, v4182; GFX8-NEXT:    buffer_load_ushort v[4:5], off, s[0:3], 0 tfe183; GFX8-NEXT:    s_waitcnt vmcnt(0)184; GFX8-NEXT:    flat_store_short v[0:1], v4185; GFX8-NEXT:    flat_store_dword v[2:3], v5186; GFX8-NEXT:    s_endpgm187;188; GFX910-LABEL: raw_buffer_load_f16_tfe:189; GFX910:       ; %bb.0:190; GFX910-NEXT:    v_mov_b32_e32 v4, 0191; GFX910-NEXT:    v_mov_b32_e32 v5, v4192; GFX910-NEXT:    buffer_load_ushort v[4:5], off, s[0:3], 0 tfe193; GFX910-NEXT:    s_waitcnt vmcnt(0)194; GFX910-NEXT:    global_store_short v[0:1], v4, off195; GFX910-NEXT:    global_store_dword v[2:3], v5, off196; GFX910-NEXT:    s_endpgm197;198; GFX11-LABEL: raw_buffer_load_f16_tfe:199; GFX11:       ; %bb.0:200; GFX11-NEXT:    v_mov_b32_e32 v4, 0201; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)202; GFX11-NEXT:    v_mov_b32_e32 v5, v4203; GFX11-NEXT:    buffer_load_u16 v[4:5], off, s[0:3], 0 tfe204; GFX11-NEXT:    s_waitcnt vmcnt(0)205; GFX11-NEXT:    global_store_b16 v[0:1], v4, off206; GFX11-NEXT:    global_store_b32 v[2:3], v5, off207; GFX11-NEXT:    s_endpgm208;209; GFX1200-LABEL: raw_buffer_load_f16_tfe:210; GFX1200:       ; %bb.0:211; GFX1200-NEXT:    v_mov_b32_e32 v4, 0212; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)213; GFX1200-NEXT:    v_mov_b32_e32 v5, v4214; GFX1200-NEXT:    buffer_load_u16 v[4:5], off, s[0:3], null tfe215; GFX1200-NEXT:    s_wait_loadcnt 0x0216; GFX1200-NEXT:    global_store_b16 v[0:1], v4, off217; GFX1200-NEXT:    global_store_b32 v[2:3], v5, off218; GFX1200-NEXT:    s_endpgm219;220; GFX1250-LABEL: raw_buffer_load_f16_tfe:221; GFX1250:       ; %bb.0:222; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1223; GFX1250-NEXT:    v_mov_b32_e32 v4, 0224; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)225; GFX1250-NEXT:    v_mov_b32_e32 v5, v4226; GFX1250-NEXT:    buffer_load_u16 v[4:5], off, s[0:3], null tfe227; GFX1250-NEXT:    s_wait_loadcnt 0x0228; GFX1250-NEXT:    global_store_b16 v[0:1], v4, off229; GFX1250-NEXT:    global_store_b32 v[2:3], v5, off230; GFX1250-NEXT:    s_endpgm231  %res = call { half, i32 } @llvm.amdgcn.raw.buffer.load.sl_f16i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)232  %data = extractvalue { half, i32 } %res, 0233  store half %data, ptr addrspace(1) %data_addr234  %tfe = extractvalue { half, i32 } %res, 1235  store i32 %tfe, ptr addrspace(1) %tfe_addr236  ret void237}238 239define amdgpu_ps void @raw_buffer_load_i32_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {240; GFX67-LABEL: raw_buffer_load_i32_tfe:241; GFX67:       ; %bb.0:242; GFX67-NEXT:    v_mov_b32_e32 v4, 0243; GFX67-NEXT:    v_mov_b32_e32 v5, v4244; GFX67-NEXT:    buffer_load_dword v[4:5], off, s[0:3], 0 tfe245; GFX67-NEXT:    s_mov_b32 s2, 0246; GFX67-NEXT:    s_mov_b32 s3, 0xf000247; GFX67-NEXT:    s_mov_b32 s0, s2248; GFX67-NEXT:    s_mov_b32 s1, s2249; GFX67-NEXT:    s_waitcnt vmcnt(0)250; GFX67-NEXT:    buffer_store_dword v4, v[0:1], s[0:3], 0 addr64251; GFX67-NEXT:    buffer_store_dword v5, v[2:3], s[0:3], 0 addr64252; GFX67-NEXT:    s_endpgm253;254; GFX8-LABEL: raw_buffer_load_i32_tfe:255; GFX8:       ; %bb.0:256; GFX8-NEXT:    v_mov_b32_e32 v4, 0257; GFX8-NEXT:    v_mov_b32_e32 v5, v4258; GFX8-NEXT:    buffer_load_dword v[4:5], off, s[0:3], 0 tfe259; GFX8-NEXT:    s_waitcnt vmcnt(0)260; GFX8-NEXT:    flat_store_dword v[0:1], v4261; GFX8-NEXT:    flat_store_dword v[2:3], v5262; GFX8-NEXT:    s_endpgm263;264; GFX910-LABEL: raw_buffer_load_i32_tfe:265; GFX910:       ; %bb.0:266; GFX910-NEXT:    v_mov_b32_e32 v4, 0267; GFX910-NEXT:    v_mov_b32_e32 v5, v4268; GFX910-NEXT:    buffer_load_dword v[4:5], off, s[0:3], 0 tfe269; GFX910-NEXT:    s_waitcnt vmcnt(0)270; GFX910-NEXT:    global_store_dword v[0:1], v4, off271; GFX910-NEXT:    global_store_dword v[2:3], v5, off272; GFX910-NEXT:    s_endpgm273;274; GFX11-LABEL: raw_buffer_load_i32_tfe:275; GFX11:       ; %bb.0:276; GFX11-NEXT:    v_mov_b32_e32 v4, 0277; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)278; GFX11-NEXT:    v_mov_b32_e32 v5, v4279; GFX11-NEXT:    buffer_load_b32 v[4:5], off, s[0:3], 0 tfe280; GFX11-NEXT:    s_waitcnt vmcnt(0)281; GFX11-NEXT:    global_store_b32 v[0:1], v4, off282; GFX11-NEXT:    global_store_b32 v[2:3], v5, off283; GFX11-NEXT:    s_endpgm284;285; GFX1200-LABEL: raw_buffer_load_i32_tfe:286; GFX1200:       ; %bb.0:287; GFX1200-NEXT:    v_mov_b32_e32 v4, 0288; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)289; GFX1200-NEXT:    v_mov_b32_e32 v5, v4290; GFX1200-NEXT:    buffer_load_b32 v[4:5], off, s[0:3], null tfe291; GFX1200-NEXT:    s_wait_loadcnt 0x0292; GFX1200-NEXT:    global_store_b32 v[0:1], v4, off293; GFX1200-NEXT:    global_store_b32 v[2:3], v5, off294; GFX1200-NEXT:    s_endpgm295;296; GFX1250-LABEL: raw_buffer_load_i32_tfe:297; GFX1250:       ; %bb.0:298; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1299; GFX1250-NEXT:    v_mov_b32_e32 v4, 0300; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)301; GFX1250-NEXT:    v_mov_b32_e32 v5, v4302; GFX1250-NEXT:    buffer_load_b32 v[4:5], off, s[0:3], null tfe303; GFX1250-NEXT:    s_wait_loadcnt 0x0304; GFX1250-NEXT:    global_store_b32 v[0:1], v4, off305; GFX1250-NEXT:    global_store_b32 v[2:3], v5, off306; GFX1250-NEXT:    s_endpgm307  %res = call { i32, i32 } @llvm.amdgcn.raw.buffer.load.sl_i32i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)308  %data = extractvalue { i32, i32 } %res, 0309  store i32 %data, ptr addrspace(1) %data_addr310  %tfe = extractvalue { i32, i32 } %res, 1311  store i32 %tfe, ptr addrspace(1) %tfe_addr312  ret void313}314 315define amdgpu_ps void @raw_buffer_load_v2i32_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {316; GFX6-LABEL: raw_buffer_load_v2i32_tfe:317; GFX6:       ; %bb.0:318; GFX6-NEXT:    v_mov_b32_e32 v4, 0319; GFX6-NEXT:    v_mov_b32_e32 v5, v4320; GFX6-NEXT:    v_mov_b32_e32 v6, v4321; GFX6-NEXT:    v_mov_b32_e32 v7, v4322; GFX6-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe323; GFX6-NEXT:    s_mov_b32 s2, 0324; GFX6-NEXT:    s_mov_b32 s3, 0xf000325; GFX6-NEXT:    s_mov_b32 s0, s2326; GFX6-NEXT:    s_mov_b32 s1, s2327; GFX6-NEXT:    s_waitcnt vmcnt(0)328; GFX6-NEXT:    buffer_store_dwordx2 v[4:5], v[0:1], s[0:3], 0 addr64329; GFX6-NEXT:    buffer_store_dword v6, v[2:3], s[0:3], 0 addr64330; GFX6-NEXT:    s_endpgm331;332; GFX7-LABEL: raw_buffer_load_v2i32_tfe:333; GFX7:       ; %bb.0:334; GFX7-NEXT:    v_mov_b32_e32 v4, 0335; GFX7-NEXT:    v_mov_b32_e32 v5, v4336; GFX7-NEXT:    v_mov_b32_e32 v6, v4337; GFX7-NEXT:    buffer_load_dwordx2 v[4:6], off, s[0:3], 0 tfe338; GFX7-NEXT:    s_mov_b32 s2, 0339; GFX7-NEXT:    s_mov_b32 s3, 0xf000340; GFX7-NEXT:    s_mov_b32 s0, s2341; GFX7-NEXT:    s_mov_b32 s1, s2342; GFX7-NEXT:    s_waitcnt vmcnt(0)343; GFX7-NEXT:    buffer_store_dwordx2 v[4:5], v[0:1], s[0:3], 0 addr64344; GFX7-NEXT:    buffer_store_dword v6, v[2:3], s[0:3], 0 addr64345; GFX7-NEXT:    s_endpgm346;347; GFX8-LABEL: raw_buffer_load_v2i32_tfe:348; GFX8:       ; %bb.0:349; GFX8-NEXT:    v_mov_b32_e32 v4, 0350; GFX8-NEXT:    v_mov_b32_e32 v5, v4351; GFX8-NEXT:    v_mov_b32_e32 v6, v4352; GFX8-NEXT:    buffer_load_dwordx2 v[4:6], off, s[0:3], 0 tfe353; GFX8-NEXT:    s_waitcnt vmcnt(0)354; GFX8-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]355; GFX8-NEXT:    flat_store_dword v[2:3], v6356; GFX8-NEXT:    s_endpgm357;358; GFX910-LABEL: raw_buffer_load_v2i32_tfe:359; GFX910:       ; %bb.0:360; GFX910-NEXT:    v_mov_b32_e32 v4, 0361; GFX910-NEXT:    v_mov_b32_e32 v5, v4362; GFX910-NEXT:    v_mov_b32_e32 v6, v4363; GFX910-NEXT:    buffer_load_dwordx2 v[4:6], off, s[0:3], 0 tfe364; GFX910-NEXT:    s_waitcnt vmcnt(0)365; GFX910-NEXT:    global_store_dwordx2 v[0:1], v[4:5], off366; GFX910-NEXT:    global_store_dword v[2:3], v6, off367; GFX910-NEXT:    s_endpgm368;369; GFX11-LABEL: raw_buffer_load_v2i32_tfe:370; GFX11:       ; %bb.0:371; GFX11-NEXT:    v_mov_b32_e32 v4, 0372; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)373; GFX11-NEXT:    v_mov_b32_e32 v5, v4374; GFX11-NEXT:    v_mov_b32_e32 v6, v4375; GFX11-NEXT:    buffer_load_b64 v[4:6], off, s[0:3], 0 tfe376; GFX11-NEXT:    s_waitcnt vmcnt(0)377; GFX11-NEXT:    global_store_b64 v[0:1], v[4:5], off378; GFX11-NEXT:    global_store_b32 v[2:3], v6, off379; GFX11-NEXT:    s_endpgm380;381; GFX1200-LABEL: raw_buffer_load_v2i32_tfe:382; GFX1200:       ; %bb.0:383; GFX1200-NEXT:    v_mov_b32_e32 v4, 0384; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)385; GFX1200-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4386; GFX1200-NEXT:    buffer_load_b64 v[4:6], off, s[0:3], null tfe387; GFX1200-NEXT:    s_wait_loadcnt 0x0388; GFX1200-NEXT:    global_store_b64 v[0:1], v[4:5], off389; GFX1200-NEXT:    global_store_b32 v[2:3], v6, off390; GFX1200-NEXT:    s_endpgm391;392; GFX1250-LABEL: raw_buffer_load_v2i32_tfe:393; GFX1250:       ; %bb.0:394; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1395; GFX1250-NEXT:    v_mov_b32_e32 v4, 0396; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)397; GFX1250-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4398; GFX1250-NEXT:    buffer_load_b64 v[4:6], off, s[0:3], null tfe399; GFX1250-NEXT:    s_wait_loadcnt 0x0400; GFX1250-NEXT:    global_store_b64 v[0:1], v[4:5], off401; GFX1250-NEXT:    global_store_b32 v[2:3], v6, off402; GFX1250-NEXT:    s_endpgm403  %res = call { <2 x i32>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v2i32i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)404  %data = extractvalue { <2 x i32>, i32 } %res, 0405  store <2 x i32> %data, ptr addrspace(1) %data_addr406  %tfe = extractvalue { <2 x i32>, i32 } %res, 1407  store i32 %tfe, ptr addrspace(1) %tfe_addr408  ret void409}410 411define amdgpu_ps void @raw_buffer_load_v2f32_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {412; GFX6-LABEL: raw_buffer_load_v2f32_tfe:413; GFX6:       ; %bb.0:414; GFX6-NEXT:    v_mov_b32_e32 v4, 0415; GFX6-NEXT:    v_mov_b32_e32 v5, v4416; GFX6-NEXT:    v_mov_b32_e32 v6, v4417; GFX6-NEXT:    v_mov_b32_e32 v7, v4418; GFX6-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe419; GFX6-NEXT:    s_mov_b32 s2, 0420; GFX6-NEXT:    s_mov_b32 s3, 0xf000421; GFX6-NEXT:    s_mov_b32 s0, s2422; GFX6-NEXT:    s_mov_b32 s1, s2423; GFX6-NEXT:    s_waitcnt vmcnt(0)424; GFX6-NEXT:    buffer_store_dwordx2 v[4:5], v[0:1], s[0:3], 0 addr64425; GFX6-NEXT:    buffer_store_dword v6, v[2:3], s[0:3], 0 addr64426; GFX6-NEXT:    s_endpgm427;428; GFX7-LABEL: raw_buffer_load_v2f32_tfe:429; GFX7:       ; %bb.0:430; GFX7-NEXT:    v_mov_b32_e32 v4, 0431; GFX7-NEXT:    v_mov_b32_e32 v5, v4432; GFX7-NEXT:    v_mov_b32_e32 v6, v4433; GFX7-NEXT:    buffer_load_dwordx2 v[4:6], off, s[0:3], 0 tfe434; GFX7-NEXT:    s_mov_b32 s2, 0435; GFX7-NEXT:    s_mov_b32 s3, 0xf000436; GFX7-NEXT:    s_mov_b32 s0, s2437; GFX7-NEXT:    s_mov_b32 s1, s2438; GFX7-NEXT:    s_waitcnt vmcnt(0)439; GFX7-NEXT:    buffer_store_dwordx2 v[4:5], v[0:1], s[0:3], 0 addr64440; GFX7-NEXT:    buffer_store_dword v6, v[2:3], s[0:3], 0 addr64441; GFX7-NEXT:    s_endpgm442;443; GFX8-LABEL: raw_buffer_load_v2f32_tfe:444; GFX8:       ; %bb.0:445; GFX8-NEXT:    v_mov_b32_e32 v4, 0446; GFX8-NEXT:    v_mov_b32_e32 v5, v4447; GFX8-NEXT:    v_mov_b32_e32 v6, v4448; GFX8-NEXT:    buffer_load_dwordx2 v[4:6], off, s[0:3], 0 tfe449; GFX8-NEXT:    s_waitcnt vmcnt(0)450; GFX8-NEXT:    flat_store_dwordx2 v[0:1], v[4:5]451; GFX8-NEXT:    flat_store_dword v[2:3], v6452; GFX8-NEXT:    s_endpgm453;454; GFX910-LABEL: raw_buffer_load_v2f32_tfe:455; GFX910:       ; %bb.0:456; GFX910-NEXT:    v_mov_b32_e32 v4, 0457; GFX910-NEXT:    v_mov_b32_e32 v5, v4458; GFX910-NEXT:    v_mov_b32_e32 v6, v4459; GFX910-NEXT:    buffer_load_dwordx2 v[4:6], off, s[0:3], 0 tfe460; GFX910-NEXT:    s_waitcnt vmcnt(0)461; GFX910-NEXT:    global_store_dwordx2 v[0:1], v[4:5], off462; GFX910-NEXT:    global_store_dword v[2:3], v6, off463; GFX910-NEXT:    s_endpgm464;465; GFX11-LABEL: raw_buffer_load_v2f32_tfe:466; GFX11:       ; %bb.0:467; GFX11-NEXT:    v_mov_b32_e32 v4, 0468; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)469; GFX11-NEXT:    v_mov_b32_e32 v5, v4470; GFX11-NEXT:    v_mov_b32_e32 v6, v4471; GFX11-NEXT:    buffer_load_b64 v[4:6], off, s[0:3], 0 tfe472; GFX11-NEXT:    s_waitcnt vmcnt(0)473; GFX11-NEXT:    global_store_b64 v[0:1], v[4:5], off474; GFX11-NEXT:    global_store_b32 v[2:3], v6, off475; GFX11-NEXT:    s_endpgm476;477; GFX1200-LABEL: raw_buffer_load_v2f32_tfe:478; GFX1200:       ; %bb.0:479; GFX1200-NEXT:    v_mov_b32_e32 v4, 0480; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)481; GFX1200-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4482; GFX1200-NEXT:    buffer_load_b64 v[4:6], off, s[0:3], null tfe483; GFX1200-NEXT:    s_wait_loadcnt 0x0484; GFX1200-NEXT:    global_store_b64 v[0:1], v[4:5], off485; GFX1200-NEXT:    global_store_b32 v[2:3], v6, off486; GFX1200-NEXT:    s_endpgm487;488; GFX1250-LABEL: raw_buffer_load_v2f32_tfe:489; GFX1250:       ; %bb.0:490; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1491; GFX1250-NEXT:    v_mov_b32_e32 v4, 0492; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)493; GFX1250-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4494; GFX1250-NEXT:    buffer_load_b64 v[4:6], off, s[0:3], null tfe495; GFX1250-NEXT:    s_wait_loadcnt 0x0496; GFX1250-NEXT:    global_store_b64 v[0:1], v[4:5], off497; GFX1250-NEXT:    global_store_b32 v[2:3], v6, off498; GFX1250-NEXT:    s_endpgm499  %res = call { <2 x float>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v2f32i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)500  %data = extractvalue { <2 x float>, i32 } %res, 0501  store <2 x float> %data, ptr addrspace(1) %data_addr502  %tfe = extractvalue { <2 x float>, i32 } %res, 1503  store i32 %tfe, ptr addrspace(1) %tfe_addr504  ret void505}506 507define amdgpu_ps void @raw_buffer_load_v3i32_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {508; GFX6-LABEL: raw_buffer_load_v3i32_tfe:509; GFX6:       ; %bb.0:510; GFX6-NEXT:    v_mov_b32_e32 v4, 0511; GFX6-NEXT:    v_mov_b32_e32 v5, v4512; GFX6-NEXT:    v_mov_b32_e32 v6, v4513; GFX6-NEXT:    v_mov_b32_e32 v7, v4514; GFX6-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe515; GFX6-NEXT:    s_mov_b32 s2, 0516; GFX6-NEXT:    s_mov_b32 s3, 0xf000517; GFX6-NEXT:    s_mov_b32 s0, s2518; GFX6-NEXT:    s_mov_b32 s1, s2519; GFX6-NEXT:    s_waitcnt vmcnt(0)520; GFX6-NEXT:    buffer_store_dword v6, v[0:1], s[0:3], 0 addr64 offset:8521; GFX6-NEXT:    buffer_store_dwordx2 v[4:5], v[0:1], s[0:3], 0 addr64522; GFX6-NEXT:    buffer_store_dword v7, v[2:3], s[0:3], 0 addr64523; GFX6-NEXT:    s_endpgm524;525; GFX7-LABEL: raw_buffer_load_v3i32_tfe:526; GFX7:       ; %bb.0:527; GFX7-NEXT:    v_mov_b32_e32 v4, 0528; GFX7-NEXT:    v_mov_b32_e32 v5, v4529; GFX7-NEXT:    v_mov_b32_e32 v6, v4530; GFX7-NEXT:    v_mov_b32_e32 v7, v4531; GFX7-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe532; GFX7-NEXT:    s_mov_b32 s2, 0533; GFX7-NEXT:    s_mov_b32 s3, 0xf000534; GFX7-NEXT:    s_mov_b32 s0, s2535; GFX7-NEXT:    s_mov_b32 s1, s2536; GFX7-NEXT:    s_waitcnt vmcnt(0)537; GFX7-NEXT:    buffer_store_dwordx3 v[4:6], v[0:1], s[0:3], 0 addr64538; GFX7-NEXT:    buffer_store_dword v7, v[2:3], s[0:3], 0 addr64539; GFX7-NEXT:    s_endpgm540;541; GFX8-LABEL: raw_buffer_load_v3i32_tfe:542; GFX8:       ; %bb.0:543; GFX8-NEXT:    v_mov_b32_e32 v4, 0544; GFX8-NEXT:    v_mov_b32_e32 v5, v4545; GFX8-NEXT:    v_mov_b32_e32 v6, v4546; GFX8-NEXT:    v_mov_b32_e32 v7, v4547; GFX8-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe548; GFX8-NEXT:    s_waitcnt vmcnt(0)549; GFX8-NEXT:    flat_store_dwordx3 v[0:1], v[4:6]550; GFX8-NEXT:    flat_store_dword v[2:3], v7551; GFX8-NEXT:    s_endpgm552;553; GFX910-LABEL: raw_buffer_load_v3i32_tfe:554; GFX910:       ; %bb.0:555; GFX910-NEXT:    v_mov_b32_e32 v4, 0556; GFX910-NEXT:    v_mov_b32_e32 v5, v4557; GFX910-NEXT:    v_mov_b32_e32 v6, v4558; GFX910-NEXT:    v_mov_b32_e32 v7, v4559; GFX910-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe560; GFX910-NEXT:    s_waitcnt vmcnt(0)561; GFX910-NEXT:    global_store_dwordx3 v[0:1], v[4:6], off562; GFX910-NEXT:    global_store_dword v[2:3], v7, off563; GFX910-NEXT:    s_endpgm564;565; GFX11-LABEL: raw_buffer_load_v3i32_tfe:566; GFX11:       ; %bb.0:567; GFX11-NEXT:    v_mov_b32_e32 v4, 0568; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)569; GFX11-NEXT:    v_mov_b32_e32 v5, v4570; GFX11-NEXT:    v_mov_b32_e32 v6, v4571; GFX11-NEXT:    v_mov_b32_e32 v7, v4572; GFX11-NEXT:    buffer_load_b96 v[4:7], off, s[0:3], 0 tfe573; GFX11-NEXT:    s_waitcnt vmcnt(0)574; GFX11-NEXT:    global_store_b96 v[0:1], v[4:6], off575; GFX11-NEXT:    global_store_b32 v[2:3], v7, off576; GFX11-NEXT:    s_endpgm577;578; GFX1200-LABEL: raw_buffer_load_v3i32_tfe:579; GFX1200:       ; %bb.0:580; GFX1200-NEXT:    v_mov_b32_e32 v4, 0581; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)582; GFX1200-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4583; GFX1200-NEXT:    v_mov_b32_e32 v7, v4584; GFX1200-NEXT:    buffer_load_b96 v[4:7], off, s[0:3], null tfe585; GFX1200-NEXT:    s_wait_loadcnt 0x0586; GFX1200-NEXT:    global_store_b96 v[0:1], v[4:6], off587; GFX1200-NEXT:    global_store_b32 v[2:3], v7, off588; GFX1200-NEXT:    s_endpgm589;590; GFX1250-LABEL: raw_buffer_load_v3i32_tfe:591; GFX1250:       ; %bb.0:592; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1593; GFX1250-NEXT:    v_mov_b32_e32 v4, 0594; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)595; GFX1250-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4596; GFX1250-NEXT:    v_mov_b32_e32 v7, v4597; GFX1250-NEXT:    buffer_load_b96 v[4:7], off, s[0:3], null tfe598; GFX1250-NEXT:    s_wait_loadcnt 0x0599; GFX1250-NEXT:    global_store_b96 v[0:1], v[4:6], off600; GFX1250-NEXT:    global_store_b32 v[2:3], v7, off601; GFX1250-NEXT:    s_endpgm602  %res = call { <3 x i32>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v3i32i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)603  %data = extractvalue { <3 x i32>, i32 } %res, 0604  store <3 x i32> %data, ptr addrspace(1) %data_addr605  %tfe = extractvalue { <3 x i32>, i32 } %res, 1606  store i32 %tfe, ptr addrspace(1) %tfe_addr607  ret void608}609 610define amdgpu_ps void @raw_buffer_load_v3f32_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {611; GFX6-LABEL: raw_buffer_load_v3f32_tfe:612; GFX6:       ; %bb.0:613; GFX6-NEXT:    v_mov_b32_e32 v4, 0614; GFX6-NEXT:    v_mov_b32_e32 v5, v4615; GFX6-NEXT:    v_mov_b32_e32 v6, v4616; GFX6-NEXT:    v_mov_b32_e32 v7, v4617; GFX6-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe618; GFX6-NEXT:    s_mov_b32 s2, 0619; GFX6-NEXT:    s_mov_b32 s3, 0xf000620; GFX6-NEXT:    s_mov_b32 s0, s2621; GFX6-NEXT:    s_mov_b32 s1, s2622; GFX6-NEXT:    s_waitcnt vmcnt(0)623; GFX6-NEXT:    buffer_store_dword v6, v[0:1], s[0:3], 0 addr64 offset:8624; GFX6-NEXT:    buffer_store_dwordx2 v[4:5], v[0:1], s[0:3], 0 addr64625; GFX6-NEXT:    buffer_store_dword v7, v[2:3], s[0:3], 0 addr64626; GFX6-NEXT:    s_endpgm627;628; GFX7-LABEL: raw_buffer_load_v3f32_tfe:629; GFX7:       ; %bb.0:630; GFX7-NEXT:    v_mov_b32_e32 v4, 0631; GFX7-NEXT:    v_mov_b32_e32 v5, v4632; GFX7-NEXT:    v_mov_b32_e32 v6, v4633; GFX7-NEXT:    v_mov_b32_e32 v7, v4634; GFX7-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe635; GFX7-NEXT:    s_mov_b32 s2, 0636; GFX7-NEXT:    s_mov_b32 s3, 0xf000637; GFX7-NEXT:    s_mov_b32 s0, s2638; GFX7-NEXT:    s_mov_b32 s1, s2639; GFX7-NEXT:    s_waitcnt vmcnt(0)640; GFX7-NEXT:    buffer_store_dwordx3 v[4:6], v[0:1], s[0:3], 0 addr64641; GFX7-NEXT:    buffer_store_dword v7, v[2:3], s[0:3], 0 addr64642; GFX7-NEXT:    s_endpgm643;644; GFX8-LABEL: raw_buffer_load_v3f32_tfe:645; GFX8:       ; %bb.0:646; GFX8-NEXT:    v_mov_b32_e32 v4, 0647; GFX8-NEXT:    v_mov_b32_e32 v5, v4648; GFX8-NEXT:    v_mov_b32_e32 v6, v4649; GFX8-NEXT:    v_mov_b32_e32 v7, v4650; GFX8-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe651; GFX8-NEXT:    s_waitcnt vmcnt(0)652; GFX8-NEXT:    flat_store_dwordx3 v[0:1], v[4:6]653; GFX8-NEXT:    flat_store_dword v[2:3], v7654; GFX8-NEXT:    s_endpgm655;656; GFX910-LABEL: raw_buffer_load_v3f32_tfe:657; GFX910:       ; %bb.0:658; GFX910-NEXT:    v_mov_b32_e32 v4, 0659; GFX910-NEXT:    v_mov_b32_e32 v5, v4660; GFX910-NEXT:    v_mov_b32_e32 v6, v4661; GFX910-NEXT:    v_mov_b32_e32 v7, v4662; GFX910-NEXT:    buffer_load_dwordx3 v[4:7], off, s[0:3], 0 tfe663; GFX910-NEXT:    s_waitcnt vmcnt(0)664; GFX910-NEXT:    global_store_dwordx3 v[0:1], v[4:6], off665; GFX910-NEXT:    global_store_dword v[2:3], v7, off666; GFX910-NEXT:    s_endpgm667;668; GFX11-LABEL: raw_buffer_load_v3f32_tfe:669; GFX11:       ; %bb.0:670; GFX11-NEXT:    v_mov_b32_e32 v4, 0671; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)672; GFX11-NEXT:    v_mov_b32_e32 v5, v4673; GFX11-NEXT:    v_mov_b32_e32 v6, v4674; GFX11-NEXT:    v_mov_b32_e32 v7, v4675; GFX11-NEXT:    buffer_load_b96 v[4:7], off, s[0:3], 0 tfe676; GFX11-NEXT:    s_waitcnt vmcnt(0)677; GFX11-NEXT:    global_store_b96 v[0:1], v[4:6], off678; GFX11-NEXT:    global_store_b32 v[2:3], v7, off679; GFX11-NEXT:    s_endpgm680;681; GFX1200-LABEL: raw_buffer_load_v3f32_tfe:682; GFX1200:       ; %bb.0:683; GFX1200-NEXT:    v_mov_b32_e32 v4, 0684; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)685; GFX1200-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4686; GFX1200-NEXT:    v_mov_b32_e32 v7, v4687; GFX1200-NEXT:    buffer_load_b96 v[4:7], off, s[0:3], null tfe688; GFX1200-NEXT:    s_wait_loadcnt 0x0689; GFX1200-NEXT:    global_store_b96 v[0:1], v[4:6], off690; GFX1200-NEXT:    global_store_b32 v[2:3], v7, off691; GFX1200-NEXT:    s_endpgm692;693; GFX1250-LABEL: raw_buffer_load_v3f32_tfe:694; GFX1250:       ; %bb.0:695; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1696; GFX1250-NEXT:    v_mov_b32_e32 v4, 0697; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)698; GFX1250-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4699; GFX1250-NEXT:    v_mov_b32_e32 v7, v4700; GFX1250-NEXT:    buffer_load_b96 v[4:7], off, s[0:3], null tfe701; GFX1250-NEXT:    s_wait_loadcnt 0x0702; GFX1250-NEXT:    global_store_b96 v[0:1], v[4:6], off703; GFX1250-NEXT:    global_store_b32 v[2:3], v7, off704; GFX1250-NEXT:    s_endpgm705  %res = call { <3 x float>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v3f32i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)706  %data = extractvalue { <3 x float>, i32 } %res, 0707  store <3 x float> %data, ptr addrspace(1) %data_addr708  %tfe = extractvalue { <3 x float>, i32 } %res, 1709  store i32 %tfe, ptr addrspace(1) %tfe_addr710  ret void711}712 713define amdgpu_ps void @raw_buffer_load_v4i32_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {714; GFX67-LABEL: raw_buffer_load_v4i32_tfe:715; GFX67:       ; %bb.0:716; GFX67-NEXT:    v_mov_b32_e32 v4, 0717; GFX67-NEXT:    v_mov_b32_e32 v5, v4718; GFX67-NEXT:    v_mov_b32_e32 v6, v4719; GFX67-NEXT:    v_mov_b32_e32 v7, v4720; GFX67-NEXT:    v_mov_b32_e32 v8, v4721; GFX67-NEXT:    buffer_load_dwordx4 v[4:8], off, s[0:3], 0 tfe722; GFX67-NEXT:    s_mov_b32 s2, 0723; GFX67-NEXT:    s_mov_b32 s3, 0xf000724; GFX67-NEXT:    s_mov_b32 s0, s2725; GFX67-NEXT:    s_mov_b32 s1, s2726; GFX67-NEXT:    s_waitcnt vmcnt(0)727; GFX67-NEXT:    buffer_store_dwordx4 v[4:7], v[0:1], s[0:3], 0 addr64728; GFX67-NEXT:    buffer_store_dword v8, v[2:3], s[0:3], 0 addr64729; GFX67-NEXT:    s_endpgm730;731; GFX8-LABEL: raw_buffer_load_v4i32_tfe:732; GFX8:       ; %bb.0:733; GFX8-NEXT:    v_mov_b32_e32 v4, 0734; GFX8-NEXT:    v_mov_b32_e32 v5, v4735; GFX8-NEXT:    v_mov_b32_e32 v6, v4736; GFX8-NEXT:    v_mov_b32_e32 v7, v4737; GFX8-NEXT:    v_mov_b32_e32 v8, v4738; GFX8-NEXT:    buffer_load_dwordx4 v[4:8], off, s[0:3], 0 tfe739; GFX8-NEXT:    s_waitcnt vmcnt(0)740; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]741; GFX8-NEXT:    flat_store_dword v[2:3], v8742; GFX8-NEXT:    s_endpgm743;744; GFX910-LABEL: raw_buffer_load_v4i32_tfe:745; GFX910:       ; %bb.0:746; GFX910-NEXT:    v_mov_b32_e32 v4, 0747; GFX910-NEXT:    v_mov_b32_e32 v5, v4748; GFX910-NEXT:    v_mov_b32_e32 v6, v4749; GFX910-NEXT:    v_mov_b32_e32 v7, v4750; GFX910-NEXT:    v_mov_b32_e32 v8, v4751; GFX910-NEXT:    buffer_load_dwordx4 v[4:8], off, s[0:3], 0 tfe752; GFX910-NEXT:    s_waitcnt vmcnt(0)753; GFX910-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off754; GFX910-NEXT:    global_store_dword v[2:3], v8, off755; GFX910-NEXT:    s_endpgm756;757; GFX11-LABEL: raw_buffer_load_v4i32_tfe:758; GFX11:       ; %bb.0:759; GFX11-NEXT:    v_mov_b32_e32 v4, 0760; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)761; GFX11-NEXT:    v_mov_b32_e32 v5, v4762; GFX11-NEXT:    v_mov_b32_e32 v6, v4763; GFX11-NEXT:    v_mov_b32_e32 v7, v4764; GFX11-NEXT:    v_mov_b32_e32 v8, v4765; GFX11-NEXT:    buffer_load_b128 v[4:8], off, s[0:3], 0 tfe766; GFX11-NEXT:    s_waitcnt vmcnt(0)767; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off768; GFX11-NEXT:    global_store_b32 v[2:3], v8, off769; GFX11-NEXT:    s_endpgm770;771; GFX1200-LABEL: raw_buffer_load_v4i32_tfe:772; GFX1200:       ; %bb.0:773; GFX1200-NEXT:    v_mov_b32_e32 v4, 0774; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)775; GFX1200-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4776; GFX1200-NEXT:    v_dual_mov_b32 v7, v4 :: v_dual_mov_b32 v8, v4777; GFX1200-NEXT:    buffer_load_b128 v[4:8], off, s[0:3], null tfe778; GFX1200-NEXT:    s_wait_loadcnt 0x0779; GFX1200-NEXT:    global_store_b128 v[0:1], v[4:7], off780; GFX1200-NEXT:    global_store_b32 v[2:3], v8, off781; GFX1200-NEXT:    s_endpgm782;783; GFX1250-LABEL: raw_buffer_load_v4i32_tfe:784; GFX1250:       ; %bb.0:785; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1786; GFX1250-NEXT:    v_mov_b32_e32 v4, 0787; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)788; GFX1250-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4789; GFX1250-NEXT:    v_dual_mov_b32 v7, v4 :: v_dual_mov_b32 v8, v4790; GFX1250-NEXT:    buffer_load_b128 v[4:8], off, s[0:3], null tfe791; GFX1250-NEXT:    s_wait_loadcnt 0x0792; GFX1250-NEXT:    global_store_b128 v[0:1], v[4:7], off793; GFX1250-NEXT:    global_store_b32 v[2:3], v8, off794; GFX1250-NEXT:    s_endpgm795  %res = call { <4 x i32>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v4i32i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)796  %data = extractvalue { <4 x i32>, i32 } %res, 0797  store <4 x i32> %data, ptr addrspace(1) %data_addr798  %tfe = extractvalue { <4 x i32>, i32 } %res, 1799  store i32 %tfe, ptr addrspace(1) %tfe_addr800  ret void801}802 803define amdgpu_ps void @raw_buffer_load_v4f32_tfe(<4 x i32> inreg %rsrc, ptr addrspace(1) %data_addr, ptr addrspace(1) %tfe_addr) {804; GFX67-LABEL: raw_buffer_load_v4f32_tfe:805; GFX67:       ; %bb.0:806; GFX67-NEXT:    v_mov_b32_e32 v4, 0807; GFX67-NEXT:    v_mov_b32_e32 v5, v4808; GFX67-NEXT:    v_mov_b32_e32 v6, v4809; GFX67-NEXT:    v_mov_b32_e32 v7, v4810; GFX67-NEXT:    v_mov_b32_e32 v8, v4811; GFX67-NEXT:    buffer_load_dwordx4 v[4:8], off, s[0:3], 0 tfe812; GFX67-NEXT:    s_mov_b32 s2, 0813; GFX67-NEXT:    s_mov_b32 s3, 0xf000814; GFX67-NEXT:    s_mov_b32 s0, s2815; GFX67-NEXT:    s_mov_b32 s1, s2816; GFX67-NEXT:    s_waitcnt vmcnt(0)817; GFX67-NEXT:    buffer_store_dwordx4 v[4:7], v[0:1], s[0:3], 0 addr64818; GFX67-NEXT:    buffer_store_dword v8, v[2:3], s[0:3], 0 addr64819; GFX67-NEXT:    s_endpgm820;821; GFX8-LABEL: raw_buffer_load_v4f32_tfe:822; GFX8:       ; %bb.0:823; GFX8-NEXT:    v_mov_b32_e32 v4, 0824; GFX8-NEXT:    v_mov_b32_e32 v5, v4825; GFX8-NEXT:    v_mov_b32_e32 v6, v4826; GFX8-NEXT:    v_mov_b32_e32 v7, v4827; GFX8-NEXT:    v_mov_b32_e32 v8, v4828; GFX8-NEXT:    buffer_load_dwordx4 v[4:8], off, s[0:3], 0 tfe829; GFX8-NEXT:    s_waitcnt vmcnt(0)830; GFX8-NEXT:    flat_store_dwordx4 v[0:1], v[4:7]831; GFX8-NEXT:    flat_store_dword v[2:3], v8832; GFX8-NEXT:    s_endpgm833;834; GFX910-LABEL: raw_buffer_load_v4f32_tfe:835; GFX910:       ; %bb.0:836; GFX910-NEXT:    v_mov_b32_e32 v4, 0837; GFX910-NEXT:    v_mov_b32_e32 v5, v4838; GFX910-NEXT:    v_mov_b32_e32 v6, v4839; GFX910-NEXT:    v_mov_b32_e32 v7, v4840; GFX910-NEXT:    v_mov_b32_e32 v8, v4841; GFX910-NEXT:    buffer_load_dwordx4 v[4:8], off, s[0:3], 0 tfe842; GFX910-NEXT:    s_waitcnt vmcnt(0)843; GFX910-NEXT:    global_store_dwordx4 v[0:1], v[4:7], off844; GFX910-NEXT:    global_store_dword v[2:3], v8, off845; GFX910-NEXT:    s_endpgm846;847; GFX11-LABEL: raw_buffer_load_v4f32_tfe:848; GFX11:       ; %bb.0:849; GFX11-NEXT:    v_mov_b32_e32 v4, 0850; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)851; GFX11-NEXT:    v_mov_b32_e32 v5, v4852; GFX11-NEXT:    v_mov_b32_e32 v6, v4853; GFX11-NEXT:    v_mov_b32_e32 v7, v4854; GFX11-NEXT:    v_mov_b32_e32 v8, v4855; GFX11-NEXT:    buffer_load_b128 v[4:8], off, s[0:3], 0 tfe856; GFX11-NEXT:    s_waitcnt vmcnt(0)857; GFX11-NEXT:    global_store_b128 v[0:1], v[4:7], off858; GFX11-NEXT:    global_store_b32 v[2:3], v8, off859; GFX11-NEXT:    s_endpgm860;861; GFX1200-LABEL: raw_buffer_load_v4f32_tfe:862; GFX1200:       ; %bb.0:863; GFX1200-NEXT:    v_mov_b32_e32 v4, 0864; GFX1200-NEXT:    s_delay_alu instid0(VALU_DEP_1)865; GFX1200-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4866; GFX1200-NEXT:    v_dual_mov_b32 v7, v4 :: v_dual_mov_b32 v8, v4867; GFX1200-NEXT:    buffer_load_b128 v[4:8], off, s[0:3], null tfe868; GFX1200-NEXT:    s_wait_loadcnt 0x0869; GFX1200-NEXT:    global_store_b128 v[0:1], v[4:7], off870; GFX1200-NEXT:    global_store_b32 v[2:3], v8, off871; GFX1200-NEXT:    s_endpgm872;873; GFX1250-LABEL: raw_buffer_load_v4f32_tfe:874; GFX1250:       ; %bb.0:875; GFX1250-NEXT:    s_setreg_imm32_b32 hwreg(HW_REG_WAVE_MODE, 25, 1), 1876; GFX1250-NEXT:    v_mov_b32_e32 v4, 0877; GFX1250-NEXT:    s_delay_alu instid0(VALU_DEP_1)878; GFX1250-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v4879; GFX1250-NEXT:    v_dual_mov_b32 v7, v4 :: v_dual_mov_b32 v8, v4880; GFX1250-NEXT:    buffer_load_b128 v[4:8], off, s[0:3], null tfe881; GFX1250-NEXT:    s_wait_loadcnt 0x0882; GFX1250-NEXT:    global_store_b128 v[0:1], v[4:7], off883; GFX1250-NEXT:    global_store_b32 v[2:3], v8, off884; GFX1250-NEXT:    s_endpgm885  %res = call { <4 x float>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v4f32i32s(<4 x i32> %rsrc, i32 0, i32 0, i32 0)886  %data = extractvalue { <4 x float>, i32 } %res, 0887  store <4 x float> %data, ptr addrspace(1) %data_addr888  %tfe = extractvalue { <4 x float>, i32 } %res, 1889  store i32 %tfe, ptr addrspace(1) %tfe_addr890  ret void891}892 893declare { i8, i32 } @llvm.amdgcn.raw.buffer.load.sl_i8i32s(<4 x i32>, i32, i32, i32)894declare { i16, i32 } @llvm.amdgcn.raw.buffer.load.sl_i16i32s(<4 x i32>, i32, i32, i32)895declare { half, i32 } @llvm.amdgcn.raw.buffer.load.sl_f16i32s(<4 x i32>, i32, i32, i32)896declare { i32, i32 } @llvm.amdgcn.raw.buffer.load.sl_i32i32s(<4 x i32>, i32, i32, i32)897declare { <2 x i32>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v2i32i32s(<4 x i32>, i32, i32, i32)898declare { <2 x float>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v2f32i32s(<4 x i32>, i32, i32, i32)899declare { <3 x i32>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v3i32i32s(<4 x i32>, i32, i32, i32)900declare { <3 x float>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v3f32i32s(<4 x i32>, i32, i32, i32)901declare { <4 x i32>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v4i32i32s(<4 x i32>, i32, i32, i32)902declare { <4 x float>, i32 } @llvm.amdgcn.raw.buffer.load.sl_v4f32i32s(<4 x i32>, i32, i32, i32)903;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:904; GFX10: {{.*}}905; GFX9: {{.*}}906