brintos

brintos / llvm-project-archived public Read only

0
0
Text · 170.6 KiB · 4d9f094 Raw
4206 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn -mcpu=verde < %s | FileCheck -check-prefixes=VERDE %s3; RUN: llc -mtriple=amdgcn -mcpu=fiji -mattr=-flat-for-global < %s | FileCheck -check-prefixes=FIJI %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX6789 %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=-enable-prt-strict-null < %s | FileCheck -check-prefixes=NOPRT %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10PLUS,GFX10 %s7; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX10PLUS,GFX11 %s8; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -amdgpu-enable-delay-alu=0 < %s | FileCheck -check-prefixes=GFX12 %s9 10define amdgpu_ps <4 x float> @load_1d(<8 x i32> inreg %rsrc, i32 %s) {11; VERDE-LABEL: load_1d:12; VERDE:       ; %bb.0: ; %main_body13; VERDE-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm14; VERDE-NEXT:    s_waitcnt vmcnt(0)15; VERDE-NEXT:    ; return to shader part epilog16;17; FIJI-LABEL: load_1d:18; FIJI:       ; %bb.0: ; %main_body19; FIJI-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm20; FIJI-NEXT:    s_waitcnt vmcnt(0)21; FIJI-NEXT:    ; return to shader part epilog22;23; GFX6789-LABEL: load_1d:24; GFX6789:       ; %bb.0: ; %main_body25; GFX6789-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm26; GFX6789-NEXT:    s_waitcnt vmcnt(0)27; GFX6789-NEXT:    ; return to shader part epilog28;29; NOPRT-LABEL: load_1d:30; NOPRT:       ; %bb.0: ; %main_body31; NOPRT-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm32; NOPRT-NEXT:    s_waitcnt vmcnt(0)33; NOPRT-NEXT:    ; return to shader part epilog34;35; GFX10PLUS-LABEL: load_1d:36; GFX10PLUS:       ; %bb.0: ; %main_body37; GFX10PLUS-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm38; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)39; GFX10PLUS-NEXT:    ; return to shader part epilog40;41; GFX12-LABEL: load_1d:42; GFX12:       ; %bb.0: ; %main_body43; GFX12-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D44; GFX12-NEXT:    s_wait_loadcnt 0x045; GFX12-NEXT:    ; return to shader part epilog46main_body:47  %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)48  ret <4 x float> %v49}50 51define amdgpu_ps <4 x float> @load_1d_tfe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s) {52; VERDE-LABEL: load_1d_tfe:53; VERDE:       ; %bb.0: ; %main_body54; VERDE-NEXT:    v_mov_b32_e32 v5, v055; VERDE-NEXT:    v_mov_b32_e32 v0, 056; VERDE-NEXT:    v_mov_b32_e32 v1, v057; VERDE-NEXT:    v_mov_b32_e32 v2, v058; VERDE-NEXT:    v_mov_b32_e32 v3, v059; VERDE-NEXT:    v_mov_b32_e32 v4, v060; VERDE-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf unorm tfe61; VERDE-NEXT:    s_mov_b32 s11, 0xf00062; VERDE-NEXT:    s_mov_b32 s10, -163; VERDE-NEXT:    s_waitcnt vmcnt(0)64; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 065; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)66; VERDE-NEXT:    ; return to shader part epilog67;68; FIJI-LABEL: load_1d_tfe:69; FIJI:       ; %bb.0: ; %main_body70; FIJI-NEXT:    v_mov_b32_e32 v5, v071; FIJI-NEXT:    v_mov_b32_e32 v0, 072; FIJI-NEXT:    v_mov_b32_e32 v1, v073; FIJI-NEXT:    v_mov_b32_e32 v2, v074; FIJI-NEXT:    v_mov_b32_e32 v3, v075; FIJI-NEXT:    v_mov_b32_e32 v4, v076; FIJI-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf unorm tfe77; FIJI-NEXT:    s_mov_b32 s11, 0xf00078; FIJI-NEXT:    s_mov_b32 s10, -179; FIJI-NEXT:    s_waitcnt vmcnt(0)80; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 081; FIJI-NEXT:    s_waitcnt vmcnt(0)82; FIJI-NEXT:    ; return to shader part epilog83;84; GFX6789-LABEL: load_1d_tfe:85; GFX6789:       ; %bb.0: ; %main_body86; GFX6789-NEXT:    v_mov_b32_e32 v6, 087; GFX6789-NEXT:    v_mov_b32_e32 v5, v088; GFX6789-NEXT:    v_mov_b32_e32 v7, v689; GFX6789-NEXT:    v_mov_b32_e32 v8, v690; GFX6789-NEXT:    v_mov_b32_e32 v9, v691; GFX6789-NEXT:    v_mov_b32_e32 v10, v692; GFX6789-NEXT:    v_mov_b32_e32 v0, v693; GFX6789-NEXT:    v_mov_b32_e32 v1, v794; GFX6789-NEXT:    v_mov_b32_e32 v2, v895; GFX6789-NEXT:    v_mov_b32_e32 v3, v996; GFX6789-NEXT:    v_mov_b32_e32 v4, v1097; GFX6789-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf unorm tfe98; GFX6789-NEXT:    s_waitcnt vmcnt(0)99; GFX6789-NEXT:    global_store_dword v6, v4, s[8:9]100; GFX6789-NEXT:    s_waitcnt vmcnt(0)101; GFX6789-NEXT:    ; return to shader part epilog102;103; NOPRT-LABEL: load_1d_tfe:104; NOPRT:       ; %bb.0: ; %main_body105; NOPRT-NEXT:    v_mov_b32_e32 v4, 0106; NOPRT-NEXT:    image_load v[0:4], v0, s[0:7] dmask:0xf unorm tfe107; NOPRT-NEXT:    v_mov_b32_e32 v5, 0108; NOPRT-NEXT:    s_waitcnt vmcnt(0)109; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]110; NOPRT-NEXT:    s_waitcnt vmcnt(0)111; NOPRT-NEXT:    ; return to shader part epilog112;113; GFX10-LABEL: load_1d_tfe:114; GFX10:       ; %bb.0: ; %main_body115; GFX10-NEXT:    v_mov_b32_e32 v6, 0116; GFX10-NEXT:    v_mov_b32_e32 v5, v0117; GFX10-NEXT:    v_mov_b32_e32 v7, v6118; GFX10-NEXT:    v_mov_b32_e32 v8, v6119; GFX10-NEXT:    v_mov_b32_e32 v9, v6120; GFX10-NEXT:    v_mov_b32_e32 v10, v6121; GFX10-NEXT:    v_mov_b32_e32 v0, v6122; GFX10-NEXT:    v_mov_b32_e32 v1, v7123; GFX10-NEXT:    v_mov_b32_e32 v2, v8124; GFX10-NEXT:    v_mov_b32_e32 v3, v9125; GFX10-NEXT:    v_mov_b32_e32 v4, v10126; GFX10-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm tfe127; GFX10-NEXT:    s_waitcnt vmcnt(0)128; GFX10-NEXT:    global_store_dword v6, v4, s[8:9]129; GFX10-NEXT:    ; return to shader part epilog130;131; GFX11-LABEL: load_1d_tfe:132; GFX11:       ; %bb.0: ; %main_body133; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v6, 0134; GFX11-NEXT:    v_mov_b32_e32 v7, v6135; GFX11-NEXT:    v_mov_b32_e32 v8, v6136; GFX11-NEXT:    v_mov_b32_e32 v9, v6137; GFX11-NEXT:    v_mov_b32_e32 v10, v6138; GFX11-NEXT:    v_dual_mov_b32 v0, v6 :: v_dual_mov_b32 v1, v7139; GFX11-NEXT:    v_dual_mov_b32 v2, v8 :: v_dual_mov_b32 v3, v9140; GFX11-NEXT:    v_mov_b32_e32 v4, v10141; GFX11-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm tfe142; GFX11-NEXT:    s_waitcnt vmcnt(0)143; GFX11-NEXT:    global_store_b32 v6, v4, s[8:9]144; GFX11-NEXT:    ; return to shader part epilog145;146; GFX12-LABEL: load_1d_tfe:147; GFX12:       ; %bb.0: ; %main_body148; GFX12-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v6, 0149; GFX12-NEXT:    v_dual_mov_b32 v7, v6 :: v_dual_mov_b32 v8, v6150; GFX12-NEXT:    v_dual_mov_b32 v9, v6 :: v_dual_mov_b32 v10, v6151; GFX12-NEXT:    v_dual_mov_b32 v0, v6 :: v_dual_mov_b32 v1, v7152; GFX12-NEXT:    v_dual_mov_b32 v2, v8 :: v_dual_mov_b32 v3, v9153; GFX12-NEXT:    v_mov_b32_e32 v4, v10154; GFX12-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D tfe155; GFX12-NEXT:    s_wait_loadcnt 0x0156; GFX12-NEXT:    global_store_b32 v6, v4, s[8:9]157; GFX12-NEXT:    ; return to shader part epilog158main_body:159  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.1d.v4f32i32.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)160  %v.vec = extractvalue {<4 x float>, i32} %v, 0161  %v.err = extractvalue {<4 x float>, i32} %v, 1162  store i32 %v.err, ptr addrspace(1) %out, align 4163  ret <4 x float> %v.vec164}165 166define amdgpu_ps <4 x float> @load_1d_lwe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s) {167; VERDE-LABEL: load_1d_lwe:168; VERDE:       ; %bb.0: ; %main_body169; VERDE-NEXT:    v_mov_b32_e32 v5, v0170; VERDE-NEXT:    v_mov_b32_e32 v0, 0171; VERDE-NEXT:    v_mov_b32_e32 v1, v0172; VERDE-NEXT:    v_mov_b32_e32 v2, v0173; VERDE-NEXT:    v_mov_b32_e32 v3, v0174; VERDE-NEXT:    v_mov_b32_e32 v4, v0175; VERDE-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf unorm lwe176; VERDE-NEXT:    s_mov_b32 s11, 0xf000177; VERDE-NEXT:    s_mov_b32 s10, -1178; VERDE-NEXT:    s_waitcnt vmcnt(0)179; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 0180; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)181; VERDE-NEXT:    ; return to shader part epilog182;183; FIJI-LABEL: load_1d_lwe:184; FIJI:       ; %bb.0: ; %main_body185; FIJI-NEXT:    v_mov_b32_e32 v5, v0186; FIJI-NEXT:    v_mov_b32_e32 v0, 0187; FIJI-NEXT:    v_mov_b32_e32 v1, v0188; FIJI-NEXT:    v_mov_b32_e32 v2, v0189; FIJI-NEXT:    v_mov_b32_e32 v3, v0190; FIJI-NEXT:    v_mov_b32_e32 v4, v0191; FIJI-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf unorm lwe192; FIJI-NEXT:    s_mov_b32 s11, 0xf000193; FIJI-NEXT:    s_mov_b32 s10, -1194; FIJI-NEXT:    s_waitcnt vmcnt(0)195; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 0196; FIJI-NEXT:    s_waitcnt vmcnt(0)197; FIJI-NEXT:    ; return to shader part epilog198;199; GFX6789-LABEL: load_1d_lwe:200; GFX6789:       ; %bb.0: ; %main_body201; GFX6789-NEXT:    v_mov_b32_e32 v6, 0202; GFX6789-NEXT:    v_mov_b32_e32 v5, v0203; GFX6789-NEXT:    v_mov_b32_e32 v7, v6204; GFX6789-NEXT:    v_mov_b32_e32 v8, v6205; GFX6789-NEXT:    v_mov_b32_e32 v9, v6206; GFX6789-NEXT:    v_mov_b32_e32 v10, v6207; GFX6789-NEXT:    v_mov_b32_e32 v0, v6208; GFX6789-NEXT:    v_mov_b32_e32 v1, v7209; GFX6789-NEXT:    v_mov_b32_e32 v2, v8210; GFX6789-NEXT:    v_mov_b32_e32 v3, v9211; GFX6789-NEXT:    v_mov_b32_e32 v4, v10212; GFX6789-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf unorm lwe213; GFX6789-NEXT:    s_waitcnt vmcnt(0)214; GFX6789-NEXT:    global_store_dword v6, v4, s[8:9]215; GFX6789-NEXT:    s_waitcnt vmcnt(0)216; GFX6789-NEXT:    ; return to shader part epilog217;218; NOPRT-LABEL: load_1d_lwe:219; NOPRT:       ; %bb.0: ; %main_body220; NOPRT-NEXT:    v_mov_b32_e32 v4, 0221; NOPRT-NEXT:    image_load v[0:4], v0, s[0:7] dmask:0xf unorm lwe222; NOPRT-NEXT:    v_mov_b32_e32 v5, 0223; NOPRT-NEXT:    s_waitcnt vmcnt(0)224; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]225; NOPRT-NEXT:    s_waitcnt vmcnt(0)226; NOPRT-NEXT:    ; return to shader part epilog227;228; GFX10-LABEL: load_1d_lwe:229; GFX10:       ; %bb.0: ; %main_body230; GFX10-NEXT:    v_mov_b32_e32 v6, 0231; GFX10-NEXT:    v_mov_b32_e32 v5, v0232; GFX10-NEXT:    v_mov_b32_e32 v7, v6233; GFX10-NEXT:    v_mov_b32_e32 v8, v6234; GFX10-NEXT:    v_mov_b32_e32 v9, v6235; GFX10-NEXT:    v_mov_b32_e32 v10, v6236; GFX10-NEXT:    v_mov_b32_e32 v0, v6237; GFX10-NEXT:    v_mov_b32_e32 v1, v7238; GFX10-NEXT:    v_mov_b32_e32 v2, v8239; GFX10-NEXT:    v_mov_b32_e32 v3, v9240; GFX10-NEXT:    v_mov_b32_e32 v4, v10241; GFX10-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm lwe242; GFX10-NEXT:    s_waitcnt vmcnt(0)243; GFX10-NEXT:    global_store_dword v6, v4, s[8:9]244; GFX10-NEXT:    ; return to shader part epilog245;246; GFX11-LABEL: load_1d_lwe:247; GFX11:       ; %bb.0: ; %main_body248; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v6, 0249; GFX11-NEXT:    v_mov_b32_e32 v7, v6250; GFX11-NEXT:    v_mov_b32_e32 v8, v6251; GFX11-NEXT:    v_mov_b32_e32 v9, v6252; GFX11-NEXT:    v_mov_b32_e32 v10, v6253; GFX11-NEXT:    v_dual_mov_b32 v0, v6 :: v_dual_mov_b32 v1, v7254; GFX11-NEXT:    v_dual_mov_b32 v2, v8 :: v_dual_mov_b32 v3, v9255; GFX11-NEXT:    v_mov_b32_e32 v4, v10256; GFX11-NEXT:    image_load v[0:4], v5, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm lwe257; GFX11-NEXT:    s_waitcnt vmcnt(0)258; GFX11-NEXT:    global_store_b32 v6, v4, s[8:9]259; GFX11-NEXT:    ; return to shader part epilog260;261; GFX12-LABEL: load_1d_lwe:262; GFX12:       ; %bb.0: ; %main_body263; GFX12-NEXT:    image_load v[0:4], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D264; GFX12-NEXT:    v_mov_b32_e32 v5, 0265; GFX12-NEXT:    s_wait_loadcnt 0x0266; GFX12-NEXT:    global_store_b32 v5, v4, s[8:9]267; GFX12-NEXT:    ; return to shader part epilog268main_body:269  %v = call {<4 x float>, i32} @llvm.amdgcn.image.load.1d.v4f32i32.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 2, i32 0)270  %v.vec = extractvalue {<4 x float>, i32} %v, 0271  %v.err = extractvalue {<4 x float>, i32} %v, 1272  store i32 %v.err, ptr addrspace(1) %out, align 4273  ret <4 x float> %v.vec274}275 276define amdgpu_ps <4 x float> @load_2d(<8 x i32> inreg %rsrc, i32 %s, i32 %t) {277; VERDE-LABEL: load_2d:278; VERDE:       ; %bb.0: ; %main_body279; VERDE-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm280; VERDE-NEXT:    s_waitcnt vmcnt(0)281; VERDE-NEXT:    ; return to shader part epilog282;283; FIJI-LABEL: load_2d:284; FIJI:       ; %bb.0: ; %main_body285; FIJI-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm286; FIJI-NEXT:    s_waitcnt vmcnt(0)287; FIJI-NEXT:    ; return to shader part epilog288;289; GFX6789-LABEL: load_2d:290; GFX6789:       ; %bb.0: ; %main_body291; GFX6789-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm292; GFX6789-NEXT:    s_waitcnt vmcnt(0)293; GFX6789-NEXT:    ; return to shader part epilog294;295; NOPRT-LABEL: load_2d:296; NOPRT:       ; %bb.0: ; %main_body297; NOPRT-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm298; NOPRT-NEXT:    s_waitcnt vmcnt(0)299; NOPRT-NEXT:    ; return to shader part epilog300;301; GFX10PLUS-LABEL: load_2d:302; GFX10PLUS:       ; %bb.0: ; %main_body303; GFX10PLUS-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm304; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)305; GFX10PLUS-NEXT:    ; return to shader part epilog306;307; GFX12-LABEL: load_2d:308; GFX12:       ; %bb.0: ; %main_body309; GFX12-NEXT:    image_load v[0:3], [v0, v1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D310; GFX12-NEXT:    s_wait_loadcnt 0x0311; GFX12-NEXT:    ; return to shader part epilog312main_body:313  %v = call <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i32(i32 15, i32 %s, i32 %t, <8 x i32> %rsrc, i32 0, i32 0)314  ret <4 x float> %v315}316 317define amdgpu_ps <4 x float> @load_2d_tfe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %t) {318; VERDE-LABEL: load_2d_tfe:319; VERDE:       ; %bb.0: ; %main_body320; VERDE-NEXT:    v_mov_b32_e32 v5, v0321; VERDE-NEXT:    v_mov_b32_e32 v0, 0322; VERDE-NEXT:    v_mov_b32_e32 v6, v1323; VERDE-NEXT:    v_mov_b32_e32 v1, v0324; VERDE-NEXT:    v_mov_b32_e32 v2, v0325; VERDE-NEXT:    v_mov_b32_e32 v3, v0326; VERDE-NEXT:    v_mov_b32_e32 v4, v0327; VERDE-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf unorm tfe328; VERDE-NEXT:    s_mov_b32 s11, 0xf000329; VERDE-NEXT:    s_mov_b32 s10, -1330; VERDE-NEXT:    s_waitcnt vmcnt(0)331; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 0332; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)333; VERDE-NEXT:    ; return to shader part epilog334;335; FIJI-LABEL: load_2d_tfe:336; FIJI:       ; %bb.0: ; %main_body337; FIJI-NEXT:    v_mov_b32_e32 v5, v0338; FIJI-NEXT:    v_mov_b32_e32 v0, 0339; FIJI-NEXT:    v_mov_b32_e32 v6, v1340; FIJI-NEXT:    v_mov_b32_e32 v1, v0341; FIJI-NEXT:    v_mov_b32_e32 v2, v0342; FIJI-NEXT:    v_mov_b32_e32 v3, v0343; FIJI-NEXT:    v_mov_b32_e32 v4, v0344; FIJI-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf unorm tfe345; FIJI-NEXT:    s_mov_b32 s11, 0xf000346; FIJI-NEXT:    s_mov_b32 s10, -1347; FIJI-NEXT:    s_waitcnt vmcnt(0)348; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 0349; FIJI-NEXT:    s_waitcnt vmcnt(0)350; FIJI-NEXT:    ; return to shader part epilog351;352; GFX6789-LABEL: load_2d_tfe:353; GFX6789:       ; %bb.0: ; %main_body354; GFX6789-NEXT:    v_mov_b32_e32 v7, 0355; GFX6789-NEXT:    v_mov_b32_e32 v6, v1356; GFX6789-NEXT:    v_mov_b32_e32 v5, v0357; GFX6789-NEXT:    v_mov_b32_e32 v8, v7358; GFX6789-NEXT:    v_mov_b32_e32 v9, v7359; GFX6789-NEXT:    v_mov_b32_e32 v10, v7360; GFX6789-NEXT:    v_mov_b32_e32 v11, v7361; GFX6789-NEXT:    v_mov_b32_e32 v0, v7362; GFX6789-NEXT:    v_mov_b32_e32 v1, v8363; GFX6789-NEXT:    v_mov_b32_e32 v2, v9364; GFX6789-NEXT:    v_mov_b32_e32 v3, v10365; GFX6789-NEXT:    v_mov_b32_e32 v4, v11366; GFX6789-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf unorm tfe367; GFX6789-NEXT:    s_waitcnt vmcnt(0)368; GFX6789-NEXT:    global_store_dword v7, v4, s[8:9]369; GFX6789-NEXT:    s_waitcnt vmcnt(0)370; GFX6789-NEXT:    ; return to shader part epilog371;372; NOPRT-LABEL: load_2d_tfe:373; NOPRT:       ; %bb.0: ; %main_body374; NOPRT-NEXT:    v_mov_b32_e32 v4, 0375; NOPRT-NEXT:    image_load v[0:4], v[0:1], s[0:7] dmask:0xf unorm tfe376; NOPRT-NEXT:    v_mov_b32_e32 v5, 0377; NOPRT-NEXT:    s_waitcnt vmcnt(0)378; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]379; NOPRT-NEXT:    s_waitcnt vmcnt(0)380; NOPRT-NEXT:    ; return to shader part epilog381;382; GFX10-LABEL: load_2d_tfe:383; GFX10:       ; %bb.0: ; %main_body384; GFX10-NEXT:    v_mov_b32_e32 v7, 0385; GFX10-NEXT:    v_mov_b32_e32 v6, v1386; GFX10-NEXT:    v_mov_b32_e32 v5, v0387; GFX10-NEXT:    v_mov_b32_e32 v8, v7388; GFX10-NEXT:    v_mov_b32_e32 v9, v7389; GFX10-NEXT:    v_mov_b32_e32 v10, v7390; GFX10-NEXT:    v_mov_b32_e32 v11, v7391; GFX10-NEXT:    v_mov_b32_e32 v0, v7392; GFX10-NEXT:    v_mov_b32_e32 v1, v8393; GFX10-NEXT:    v_mov_b32_e32 v2, v9394; GFX10-NEXT:    v_mov_b32_e32 v3, v10395; GFX10-NEXT:    v_mov_b32_e32 v4, v11396; GFX10-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm tfe397; GFX10-NEXT:    s_waitcnt vmcnt(0)398; GFX10-NEXT:    global_store_dword v7, v4, s[8:9]399; GFX10-NEXT:    ; return to shader part epilog400;401; GFX11-LABEL: load_2d_tfe:402; GFX11:       ; %bb.0: ; %main_body403; GFX11-NEXT:    v_dual_mov_b32 v7, 0 :: v_dual_mov_b32 v6, v1404; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, v7405; GFX11-NEXT:    v_mov_b32_e32 v9, v7406; GFX11-NEXT:    v_mov_b32_e32 v10, v7407; GFX11-NEXT:    v_mov_b32_e32 v11, v7408; GFX11-NEXT:    v_dual_mov_b32 v0, v7 :: v_dual_mov_b32 v1, v8409; GFX11-NEXT:    v_dual_mov_b32 v2, v9 :: v_dual_mov_b32 v3, v10410; GFX11-NEXT:    v_mov_b32_e32 v4, v11411; GFX11-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm tfe412; GFX11-NEXT:    s_waitcnt vmcnt(0)413; GFX11-NEXT:    global_store_b32 v7, v4, s[8:9]414; GFX11-NEXT:    ; return to shader part epilog415;416; GFX12-LABEL: load_2d_tfe:417; GFX12:       ; %bb.0: ; %main_body418; GFX12-NEXT:    v_mov_b32_e32 v7, 0419; GFX12-NEXT:    v_dual_mov_b32 v5, v1 :: v_dual_mov_b32 v6, v0420; GFX12-NEXT:    v_dual_mov_b32 v8, v7 :: v_dual_mov_b32 v9, v7421; GFX12-NEXT:    v_dual_mov_b32 v10, v7 :: v_dual_mov_b32 v11, v7422; GFX12-NEXT:    v_dual_mov_b32 v0, v7 :: v_dual_mov_b32 v1, v8423; GFX12-NEXT:    v_dual_mov_b32 v2, v9 :: v_dual_mov_b32 v3, v10424; GFX12-NEXT:    v_mov_b32_e32 v4, v11425; GFX12-NEXT:    image_load v[0:4], [v6, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D tfe426; GFX12-NEXT:    s_wait_loadcnt 0x0427; GFX12-NEXT:    global_store_b32 v7, v4, s[8:9]428; GFX12-NEXT:    ; return to shader part epilog429main_body:430  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.2d.v4f32i32.i32(i32 15, i32 %s, i32 %t, <8 x i32> %rsrc, i32 1, i32 0)431  %v.vec = extractvalue {<4 x float>, i32} %v, 0432  %v.err = extractvalue {<4 x float>, i32} %v, 1433  store i32 %v.err, ptr addrspace(1) %out, align 4434  ret <4 x float> %v.vec435}436 437define amdgpu_ps <4 x float> @load_3d(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %r) {438; VERDE-LABEL: load_3d:439; VERDE:       ; %bb.0: ; %main_body440; VERDE-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm441; VERDE-NEXT:    s_waitcnt vmcnt(0)442; VERDE-NEXT:    ; return to shader part epilog443;444; FIJI-LABEL: load_3d:445; FIJI:       ; %bb.0: ; %main_body446; FIJI-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm447; FIJI-NEXT:    s_waitcnt vmcnt(0)448; FIJI-NEXT:    ; return to shader part epilog449;450; GFX6789-LABEL: load_3d:451; GFX6789:       ; %bb.0: ; %main_body452; GFX6789-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm453; GFX6789-NEXT:    s_waitcnt vmcnt(0)454; GFX6789-NEXT:    ; return to shader part epilog455;456; NOPRT-LABEL: load_3d:457; NOPRT:       ; %bb.0: ; %main_body458; NOPRT-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm459; NOPRT-NEXT:    s_waitcnt vmcnt(0)460; NOPRT-NEXT:    ; return to shader part epilog461;462; GFX10PLUS-LABEL: load_3d:463; GFX10PLUS:       ; %bb.0: ; %main_body464; GFX10PLUS-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm465; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)466; GFX10PLUS-NEXT:    ; return to shader part epilog467;468; GFX12-LABEL: load_3d:469; GFX12:       ; %bb.0: ; %main_body470; GFX12-NEXT:    image_load v[0:3], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D471; GFX12-NEXT:    s_wait_loadcnt 0x0472; GFX12-NEXT:    ; return to shader part epilog473main_body:474  %v = call <4 x float> @llvm.amdgcn.image.load.3d.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %r, <8 x i32> %rsrc, i32 0, i32 0)475  ret <4 x float> %v476}477 478define amdgpu_ps <4 x float> @load_3d_tfe_lwe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %t, i32 %r) {479; VERDE-LABEL: load_3d_tfe_lwe:480; VERDE:       ; %bb.0: ; %main_body481; VERDE-NEXT:    v_mov_b32_e32 v5, v0482; VERDE-NEXT:    v_mov_b32_e32 v0, 0483; VERDE-NEXT:    v_mov_b32_e32 v7, v2484; VERDE-NEXT:    v_mov_b32_e32 v6, v1485; VERDE-NEXT:    v_mov_b32_e32 v1, v0486; VERDE-NEXT:    v_mov_b32_e32 v2, v0487; VERDE-NEXT:    v_mov_b32_e32 v3, v0488; VERDE-NEXT:    v_mov_b32_e32 v4, v0489; VERDE-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe lwe490; VERDE-NEXT:    s_mov_b32 s11, 0xf000491; VERDE-NEXT:    s_mov_b32 s10, -1492; VERDE-NEXT:    s_waitcnt vmcnt(0)493; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 0494; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)495; VERDE-NEXT:    ; return to shader part epilog496;497; FIJI-LABEL: load_3d_tfe_lwe:498; FIJI:       ; %bb.0: ; %main_body499; FIJI-NEXT:    v_mov_b32_e32 v5, v0500; FIJI-NEXT:    v_mov_b32_e32 v0, 0501; FIJI-NEXT:    v_mov_b32_e32 v7, v2502; FIJI-NEXT:    v_mov_b32_e32 v6, v1503; FIJI-NEXT:    v_mov_b32_e32 v1, v0504; FIJI-NEXT:    v_mov_b32_e32 v2, v0505; FIJI-NEXT:    v_mov_b32_e32 v3, v0506; FIJI-NEXT:    v_mov_b32_e32 v4, v0507; FIJI-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe lwe508; FIJI-NEXT:    s_mov_b32 s11, 0xf000509; FIJI-NEXT:    s_mov_b32 s10, -1510; FIJI-NEXT:    s_waitcnt vmcnt(0)511; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 0512; FIJI-NEXT:    s_waitcnt vmcnt(0)513; FIJI-NEXT:    ; return to shader part epilog514;515; GFX6789-LABEL: load_3d_tfe_lwe:516; GFX6789:       ; %bb.0: ; %main_body517; GFX6789-NEXT:    v_mov_b32_e32 v8, 0518; GFX6789-NEXT:    v_mov_b32_e32 v7, v2519; GFX6789-NEXT:    v_mov_b32_e32 v6, v1520; GFX6789-NEXT:    v_mov_b32_e32 v5, v0521; GFX6789-NEXT:    v_mov_b32_e32 v9, v8522; GFX6789-NEXT:    v_mov_b32_e32 v10, v8523; GFX6789-NEXT:    v_mov_b32_e32 v11, v8524; GFX6789-NEXT:    v_mov_b32_e32 v12, v8525; GFX6789-NEXT:    v_mov_b32_e32 v0, v8526; GFX6789-NEXT:    v_mov_b32_e32 v1, v9527; GFX6789-NEXT:    v_mov_b32_e32 v2, v10528; GFX6789-NEXT:    v_mov_b32_e32 v3, v11529; GFX6789-NEXT:    v_mov_b32_e32 v4, v12530; GFX6789-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe lwe531; GFX6789-NEXT:    s_waitcnt vmcnt(0)532; GFX6789-NEXT:    global_store_dword v8, v4, s[8:9]533; GFX6789-NEXT:    s_waitcnt vmcnt(0)534; GFX6789-NEXT:    ; return to shader part epilog535;536; NOPRT-LABEL: load_3d_tfe_lwe:537; NOPRT:       ; %bb.0: ; %main_body538; NOPRT-NEXT:    v_mov_b32_e32 v4, 0539; NOPRT-NEXT:    image_load v[0:4], v[0:2], s[0:7] dmask:0xf unorm tfe lwe540; NOPRT-NEXT:    v_mov_b32_e32 v5, 0541; NOPRT-NEXT:    s_waitcnt vmcnt(0)542; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]543; NOPRT-NEXT:    s_waitcnt vmcnt(0)544; NOPRT-NEXT:    ; return to shader part epilog545;546; GFX10-LABEL: load_3d_tfe_lwe:547; GFX10:       ; %bb.0: ; %main_body548; GFX10-NEXT:    v_mov_b32_e32 v8, 0549; GFX10-NEXT:    v_mov_b32_e32 v7, v2550; GFX10-NEXT:    v_mov_b32_e32 v6, v1551; GFX10-NEXT:    v_mov_b32_e32 v5, v0552; GFX10-NEXT:    v_mov_b32_e32 v9, v8553; GFX10-NEXT:    v_mov_b32_e32 v10, v8554; GFX10-NEXT:    v_mov_b32_e32 v11, v8555; GFX10-NEXT:    v_mov_b32_e32 v12, v8556; GFX10-NEXT:    v_mov_b32_e32 v0, v8557; GFX10-NEXT:    v_mov_b32_e32 v1, v9558; GFX10-NEXT:    v_mov_b32_e32 v2, v10559; GFX10-NEXT:    v_mov_b32_e32 v3, v11560; GFX10-NEXT:    v_mov_b32_e32 v4, v12561; GFX10-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm tfe lwe562; GFX10-NEXT:    s_waitcnt vmcnt(0)563; GFX10-NEXT:    global_store_dword v8, v4, s[8:9]564; GFX10-NEXT:    ; return to shader part epilog565;566; GFX11-LABEL: load_3d_tfe_lwe:567; GFX11:       ; %bb.0: ; %main_body568; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, 0569; GFX11-NEXT:    v_dual_mov_b32 v7, v2 :: v_dual_mov_b32 v6, v1570; GFX11-NEXT:    v_mov_b32_e32 v9, v8571; GFX11-NEXT:    v_mov_b32_e32 v10, v8572; GFX11-NEXT:    v_mov_b32_e32 v11, v8573; GFX11-NEXT:    v_mov_b32_e32 v12, v8574; GFX11-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v9575; GFX11-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v11576; GFX11-NEXT:    v_mov_b32_e32 v4, v12577; GFX11-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm tfe lwe578; GFX11-NEXT:    s_waitcnt vmcnt(0)579; GFX11-NEXT:    global_store_b32 v8, v4, s[8:9]580; GFX11-NEXT:    ; return to shader part epilog581;582; GFX12-LABEL: load_3d_tfe_lwe:583; GFX12:       ; %bb.0: ; %main_body584; GFX12-NEXT:    v_dual_mov_b32 v7, v0 :: v_dual_mov_b32 v8, 0585; GFX12-NEXT:    v_dual_mov_b32 v5, v2 :: v_dual_mov_b32 v6, v1586; GFX12-NEXT:    v_dual_mov_b32 v9, v8 :: v_dual_mov_b32 v10, v8587; GFX12-NEXT:    v_dual_mov_b32 v11, v8 :: v_dual_mov_b32 v12, v8588; GFX12-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v9589; GFX12-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v11590; GFX12-NEXT:    v_mov_b32_e32 v4, v12591; GFX12-NEXT:    image_load v[0:4], [v7, v6, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D tfe592; GFX12-NEXT:    s_wait_loadcnt 0x0593; GFX12-NEXT:    global_store_b32 v8, v4, s[8:9]594; GFX12-NEXT:    ; return to shader part epilog595main_body:596  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.3d.v4f32i32.i32(i32 15, i32 %s, i32 %t, i32 %r, <8 x i32> %rsrc, i32 3, i32 0)597  %v.vec = extractvalue {<4 x float>, i32} %v, 0598  %v.err = extractvalue {<4 x float>, i32} %v, 1599  store i32 %v.err, ptr addrspace(1) %out, align 4600  ret <4 x float> %v.vec601}602 603define amdgpu_ps <4 x float> @load_cube(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %slice) {604; VERDE-LABEL: load_cube:605; VERDE:       ; %bb.0: ; %main_body606; VERDE-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da607; VERDE-NEXT:    s_waitcnt vmcnt(0)608; VERDE-NEXT:    ; return to shader part epilog609;610; FIJI-LABEL: load_cube:611; FIJI:       ; %bb.0: ; %main_body612; FIJI-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da613; FIJI-NEXT:    s_waitcnt vmcnt(0)614; FIJI-NEXT:    ; return to shader part epilog615;616; GFX6789-LABEL: load_cube:617; GFX6789:       ; %bb.0: ; %main_body618; GFX6789-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da619; GFX6789-NEXT:    s_waitcnt vmcnt(0)620; GFX6789-NEXT:    ; return to shader part epilog621;622; NOPRT-LABEL: load_cube:623; NOPRT:       ; %bb.0: ; %main_body624; NOPRT-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da625; NOPRT-NEXT:    s_waitcnt vmcnt(0)626; NOPRT-NEXT:    ; return to shader part epilog627;628; GFX10PLUS-LABEL: load_cube:629; GFX10PLUS:       ; %bb.0: ; %main_body630; GFX10PLUS-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm631; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)632; GFX10PLUS-NEXT:    ; return to shader part epilog633;634; GFX12-LABEL: load_cube:635; GFX12:       ; %bb.0: ; %main_body636; GFX12-NEXT:    image_load v[0:3], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE637; GFX12-NEXT:    s_wait_loadcnt 0x0638; GFX12-NEXT:    ; return to shader part epilog639main_body:640  %v = call <4 x float> @llvm.amdgcn.image.load.cube.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %slice, <8 x i32> %rsrc, i32 0, i32 0)641  ret <4 x float> %v642}643 644define amdgpu_ps <4 x float> @load_cube_lwe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %t, i32 %slice) {645; VERDE-LABEL: load_cube_lwe:646; VERDE:       ; %bb.0: ; %main_body647; VERDE-NEXT:    v_mov_b32_e32 v5, v0648; VERDE-NEXT:    v_mov_b32_e32 v0, 0649; VERDE-NEXT:    v_mov_b32_e32 v7, v2650; VERDE-NEXT:    v_mov_b32_e32 v6, v1651; VERDE-NEXT:    v_mov_b32_e32 v1, v0652; VERDE-NEXT:    v_mov_b32_e32 v2, v0653; VERDE-NEXT:    v_mov_b32_e32 v3, v0654; VERDE-NEXT:    v_mov_b32_e32 v4, v0655; VERDE-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm lwe da656; VERDE-NEXT:    s_mov_b32 s11, 0xf000657; VERDE-NEXT:    s_mov_b32 s10, -1658; VERDE-NEXT:    s_waitcnt vmcnt(0)659; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 0660; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)661; VERDE-NEXT:    ; return to shader part epilog662;663; FIJI-LABEL: load_cube_lwe:664; FIJI:       ; %bb.0: ; %main_body665; FIJI-NEXT:    v_mov_b32_e32 v5, v0666; FIJI-NEXT:    v_mov_b32_e32 v0, 0667; FIJI-NEXT:    v_mov_b32_e32 v7, v2668; FIJI-NEXT:    v_mov_b32_e32 v6, v1669; FIJI-NEXT:    v_mov_b32_e32 v1, v0670; FIJI-NEXT:    v_mov_b32_e32 v2, v0671; FIJI-NEXT:    v_mov_b32_e32 v3, v0672; FIJI-NEXT:    v_mov_b32_e32 v4, v0673; FIJI-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm lwe da674; FIJI-NEXT:    s_mov_b32 s11, 0xf000675; FIJI-NEXT:    s_mov_b32 s10, -1676; FIJI-NEXT:    s_waitcnt vmcnt(0)677; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 0678; FIJI-NEXT:    s_waitcnt vmcnt(0)679; FIJI-NEXT:    ; return to shader part epilog680;681; GFX6789-LABEL: load_cube_lwe:682; GFX6789:       ; %bb.0: ; %main_body683; GFX6789-NEXT:    v_mov_b32_e32 v8, 0684; GFX6789-NEXT:    v_mov_b32_e32 v7, v2685; GFX6789-NEXT:    v_mov_b32_e32 v6, v1686; GFX6789-NEXT:    v_mov_b32_e32 v5, v0687; GFX6789-NEXT:    v_mov_b32_e32 v9, v8688; GFX6789-NEXT:    v_mov_b32_e32 v10, v8689; GFX6789-NEXT:    v_mov_b32_e32 v11, v8690; GFX6789-NEXT:    v_mov_b32_e32 v12, v8691; GFX6789-NEXT:    v_mov_b32_e32 v0, v8692; GFX6789-NEXT:    v_mov_b32_e32 v1, v9693; GFX6789-NEXT:    v_mov_b32_e32 v2, v10694; GFX6789-NEXT:    v_mov_b32_e32 v3, v11695; GFX6789-NEXT:    v_mov_b32_e32 v4, v12696; GFX6789-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm lwe da697; GFX6789-NEXT:    s_waitcnt vmcnt(0)698; GFX6789-NEXT:    global_store_dword v8, v4, s[8:9]699; GFX6789-NEXT:    s_waitcnt vmcnt(0)700; GFX6789-NEXT:    ; return to shader part epilog701;702; NOPRT-LABEL: load_cube_lwe:703; NOPRT:       ; %bb.0: ; %main_body704; NOPRT-NEXT:    v_mov_b32_e32 v4, 0705; NOPRT-NEXT:    image_load v[0:4], v[0:2], s[0:7] dmask:0xf unorm lwe da706; NOPRT-NEXT:    v_mov_b32_e32 v5, 0707; NOPRT-NEXT:    s_waitcnt vmcnt(0)708; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]709; NOPRT-NEXT:    s_waitcnt vmcnt(0)710; NOPRT-NEXT:    ; return to shader part epilog711;712; GFX10-LABEL: load_cube_lwe:713; GFX10:       ; %bb.0: ; %main_body714; GFX10-NEXT:    v_mov_b32_e32 v8, 0715; GFX10-NEXT:    v_mov_b32_e32 v7, v2716; GFX10-NEXT:    v_mov_b32_e32 v6, v1717; GFX10-NEXT:    v_mov_b32_e32 v5, v0718; GFX10-NEXT:    v_mov_b32_e32 v9, v8719; GFX10-NEXT:    v_mov_b32_e32 v10, v8720; GFX10-NEXT:    v_mov_b32_e32 v11, v8721; GFX10-NEXT:    v_mov_b32_e32 v12, v8722; GFX10-NEXT:    v_mov_b32_e32 v0, v8723; GFX10-NEXT:    v_mov_b32_e32 v1, v9724; GFX10-NEXT:    v_mov_b32_e32 v2, v10725; GFX10-NEXT:    v_mov_b32_e32 v3, v11726; GFX10-NEXT:    v_mov_b32_e32 v4, v12727; GFX10-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm lwe728; GFX10-NEXT:    s_waitcnt vmcnt(0)729; GFX10-NEXT:    global_store_dword v8, v4, s[8:9]730; GFX10-NEXT:    ; return to shader part epilog731;732; GFX11-LABEL: load_cube_lwe:733; GFX11:       ; %bb.0: ; %main_body734; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, 0735; GFX11-NEXT:    v_dual_mov_b32 v7, v2 :: v_dual_mov_b32 v6, v1736; GFX11-NEXT:    v_mov_b32_e32 v9, v8737; GFX11-NEXT:    v_mov_b32_e32 v10, v8738; GFX11-NEXT:    v_mov_b32_e32 v11, v8739; GFX11-NEXT:    v_mov_b32_e32 v12, v8740; GFX11-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v9741; GFX11-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v11742; GFX11-NEXT:    v_mov_b32_e32 v4, v12743; GFX11-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm lwe744; GFX11-NEXT:    s_waitcnt vmcnt(0)745; GFX11-NEXT:    global_store_b32 v8, v4, s[8:9]746; GFX11-NEXT:    ; return to shader part epilog747;748; GFX12-LABEL: load_cube_lwe:749; GFX12:       ; %bb.0: ; %main_body750; GFX12-NEXT:    image_load v[0:4], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE751; GFX12-NEXT:    v_mov_b32_e32 v5, 0752; GFX12-NEXT:    s_wait_loadcnt 0x0753; GFX12-NEXT:    global_store_b32 v5, v4, s[8:9]754; GFX12-NEXT:    ; return to shader part epilog755main_body:756  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.cube.v4f32i32.i32(i32 15, i32 %s, i32 %t, i32 %slice, <8 x i32> %rsrc, i32 2, i32 0)757  %v.vec = extractvalue {<4 x float>, i32} %v, 0758  %v.err = extractvalue {<4 x float>, i32} %v, 1759  store i32 %v.err, ptr addrspace(1) %out, align 4760  ret <4 x float> %v.vec761}762 763define amdgpu_ps <4 x float> @load_1darray(<8 x i32> inreg %rsrc, i32 %s, i32 %slice) {764; VERDE-LABEL: load_1darray:765; VERDE:       ; %bb.0: ; %main_body766; VERDE-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm da767; VERDE-NEXT:    s_waitcnt vmcnt(0)768; VERDE-NEXT:    ; return to shader part epilog769;770; FIJI-LABEL: load_1darray:771; FIJI:       ; %bb.0: ; %main_body772; FIJI-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm da773; FIJI-NEXT:    s_waitcnt vmcnt(0)774; FIJI-NEXT:    ; return to shader part epilog775;776; GFX6789-LABEL: load_1darray:777; GFX6789:       ; %bb.0: ; %main_body778; GFX6789-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm da779; GFX6789-NEXT:    s_waitcnt vmcnt(0)780; GFX6789-NEXT:    ; return to shader part epilog781;782; NOPRT-LABEL: load_1darray:783; NOPRT:       ; %bb.0: ; %main_body784; NOPRT-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf unorm da785; NOPRT-NEXT:    s_waitcnt vmcnt(0)786; NOPRT-NEXT:    ; return to shader part epilog787;788; GFX10PLUS-LABEL: load_1darray:789; GFX10PLUS:       ; %bb.0: ; %main_body790; GFX10PLUS-NEXT:    image_load v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm791; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)792; GFX10PLUS-NEXT:    ; return to shader part epilog793;794; GFX12-LABEL: load_1darray:795; GFX12:       ; %bb.0: ; %main_body796; GFX12-NEXT:    image_load v[0:3], [v0, v1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY797; GFX12-NEXT:    s_wait_loadcnt 0x0798; GFX12-NEXT:    ; return to shader part epilog799main_body:800  %v = call <4 x float> @llvm.amdgcn.image.load.1darray.v4f32.i32(i32 15, i32 %s, i32 %slice, <8 x i32> %rsrc, i32 0, i32 0)801  ret <4 x float> %v802}803 804define amdgpu_ps <4 x float> @load_1darray_tfe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %slice) {805; VERDE-LABEL: load_1darray_tfe:806; VERDE:       ; %bb.0: ; %main_body807; VERDE-NEXT:    v_mov_b32_e32 v5, v0808; VERDE-NEXT:    v_mov_b32_e32 v0, 0809; VERDE-NEXT:    v_mov_b32_e32 v6, v1810; VERDE-NEXT:    v_mov_b32_e32 v1, v0811; VERDE-NEXT:    v_mov_b32_e32 v2, v0812; VERDE-NEXT:    v_mov_b32_e32 v3, v0813; VERDE-NEXT:    v_mov_b32_e32 v4, v0814; VERDE-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf unorm tfe da815; VERDE-NEXT:    s_mov_b32 s11, 0xf000816; VERDE-NEXT:    s_mov_b32 s10, -1817; VERDE-NEXT:    s_waitcnt vmcnt(0)818; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 0819; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)820; VERDE-NEXT:    ; return to shader part epilog821;822; FIJI-LABEL: load_1darray_tfe:823; FIJI:       ; %bb.0: ; %main_body824; FIJI-NEXT:    v_mov_b32_e32 v5, v0825; FIJI-NEXT:    v_mov_b32_e32 v0, 0826; FIJI-NEXT:    v_mov_b32_e32 v6, v1827; FIJI-NEXT:    v_mov_b32_e32 v1, v0828; FIJI-NEXT:    v_mov_b32_e32 v2, v0829; FIJI-NEXT:    v_mov_b32_e32 v3, v0830; FIJI-NEXT:    v_mov_b32_e32 v4, v0831; FIJI-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf unorm tfe da832; FIJI-NEXT:    s_mov_b32 s11, 0xf000833; FIJI-NEXT:    s_mov_b32 s10, -1834; FIJI-NEXT:    s_waitcnt vmcnt(0)835; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 0836; FIJI-NEXT:    s_waitcnt vmcnt(0)837; FIJI-NEXT:    ; return to shader part epilog838;839; GFX6789-LABEL: load_1darray_tfe:840; GFX6789:       ; %bb.0: ; %main_body841; GFX6789-NEXT:    v_mov_b32_e32 v7, 0842; GFX6789-NEXT:    v_mov_b32_e32 v6, v1843; GFX6789-NEXT:    v_mov_b32_e32 v5, v0844; GFX6789-NEXT:    v_mov_b32_e32 v8, v7845; GFX6789-NEXT:    v_mov_b32_e32 v9, v7846; GFX6789-NEXT:    v_mov_b32_e32 v10, v7847; GFX6789-NEXT:    v_mov_b32_e32 v11, v7848; GFX6789-NEXT:    v_mov_b32_e32 v0, v7849; GFX6789-NEXT:    v_mov_b32_e32 v1, v8850; GFX6789-NEXT:    v_mov_b32_e32 v2, v9851; GFX6789-NEXT:    v_mov_b32_e32 v3, v10852; GFX6789-NEXT:    v_mov_b32_e32 v4, v11853; GFX6789-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf unorm tfe da854; GFX6789-NEXT:    s_waitcnt vmcnt(0)855; GFX6789-NEXT:    global_store_dword v7, v4, s[8:9]856; GFX6789-NEXT:    s_waitcnt vmcnt(0)857; GFX6789-NEXT:    ; return to shader part epilog858;859; NOPRT-LABEL: load_1darray_tfe:860; NOPRT:       ; %bb.0: ; %main_body861; NOPRT-NEXT:    v_mov_b32_e32 v4, 0862; NOPRT-NEXT:    image_load v[0:4], v[0:1], s[0:7] dmask:0xf unorm tfe da863; NOPRT-NEXT:    v_mov_b32_e32 v5, 0864; NOPRT-NEXT:    s_waitcnt vmcnt(0)865; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]866; NOPRT-NEXT:    s_waitcnt vmcnt(0)867; NOPRT-NEXT:    ; return to shader part epilog868;869; GFX10-LABEL: load_1darray_tfe:870; GFX10:       ; %bb.0: ; %main_body871; GFX10-NEXT:    v_mov_b32_e32 v7, 0872; GFX10-NEXT:    v_mov_b32_e32 v6, v1873; GFX10-NEXT:    v_mov_b32_e32 v5, v0874; GFX10-NEXT:    v_mov_b32_e32 v8, v7875; GFX10-NEXT:    v_mov_b32_e32 v9, v7876; GFX10-NEXT:    v_mov_b32_e32 v10, v7877; GFX10-NEXT:    v_mov_b32_e32 v11, v7878; GFX10-NEXT:    v_mov_b32_e32 v0, v7879; GFX10-NEXT:    v_mov_b32_e32 v1, v8880; GFX10-NEXT:    v_mov_b32_e32 v2, v9881; GFX10-NEXT:    v_mov_b32_e32 v3, v10882; GFX10-NEXT:    v_mov_b32_e32 v4, v11883; GFX10-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm tfe884; GFX10-NEXT:    s_waitcnt vmcnt(0)885; GFX10-NEXT:    global_store_dword v7, v4, s[8:9]886; GFX10-NEXT:    ; return to shader part epilog887;888; GFX11-LABEL: load_1darray_tfe:889; GFX11:       ; %bb.0: ; %main_body890; GFX11-NEXT:    v_dual_mov_b32 v7, 0 :: v_dual_mov_b32 v6, v1891; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, v7892; GFX11-NEXT:    v_mov_b32_e32 v9, v7893; GFX11-NEXT:    v_mov_b32_e32 v10, v7894; GFX11-NEXT:    v_mov_b32_e32 v11, v7895; GFX11-NEXT:    v_dual_mov_b32 v0, v7 :: v_dual_mov_b32 v1, v8896; GFX11-NEXT:    v_dual_mov_b32 v2, v9 :: v_dual_mov_b32 v3, v10897; GFX11-NEXT:    v_mov_b32_e32 v4, v11898; GFX11-NEXT:    image_load v[0:4], v[5:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm tfe899; GFX11-NEXT:    s_waitcnt vmcnt(0)900; GFX11-NEXT:    global_store_b32 v7, v4, s[8:9]901; GFX11-NEXT:    ; return to shader part epilog902;903; GFX12-LABEL: load_1darray_tfe:904; GFX12:       ; %bb.0: ; %main_body905; GFX12-NEXT:    v_mov_b32_e32 v7, 0906; GFX12-NEXT:    v_dual_mov_b32 v5, v1 :: v_dual_mov_b32 v6, v0907; GFX12-NEXT:    v_dual_mov_b32 v8, v7 :: v_dual_mov_b32 v9, v7908; GFX12-NEXT:    v_dual_mov_b32 v10, v7 :: v_dual_mov_b32 v11, v7909; GFX12-NEXT:    v_dual_mov_b32 v0, v7 :: v_dual_mov_b32 v1, v8910; GFX12-NEXT:    v_dual_mov_b32 v2, v9 :: v_dual_mov_b32 v3, v10911; GFX12-NEXT:    v_mov_b32_e32 v4, v11912; GFX12-NEXT:    image_load v[0:4], [v6, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY tfe913; GFX12-NEXT:    s_wait_loadcnt 0x0914; GFX12-NEXT:    global_store_b32 v7, v4, s[8:9]915; GFX12-NEXT:    ; return to shader part epilog916main_body:917  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.1darray.v4f32i32.i32(i32 15, i32 %s, i32 %slice, <8 x i32> %rsrc, i32 1, i32 0)918  %v.vec = extractvalue {<4 x float>, i32} %v, 0919  %v.err = extractvalue {<4 x float>, i32} %v, 1920  store i32 %v.err, ptr addrspace(1) %out, align 4921  ret <4 x float> %v.vec922}923 924define amdgpu_ps <4 x float> @load_2darray(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %slice) {925; VERDE-LABEL: load_2darray:926; VERDE:       ; %bb.0: ; %main_body927; VERDE-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da928; VERDE-NEXT:    s_waitcnt vmcnt(0)929; VERDE-NEXT:    ; return to shader part epilog930;931; FIJI-LABEL: load_2darray:932; FIJI:       ; %bb.0: ; %main_body933; FIJI-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da934; FIJI-NEXT:    s_waitcnt vmcnt(0)935; FIJI-NEXT:    ; return to shader part epilog936;937; GFX6789-LABEL: load_2darray:938; GFX6789:       ; %bb.0: ; %main_body939; GFX6789-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da940; GFX6789-NEXT:    s_waitcnt vmcnt(0)941; GFX6789-NEXT:    ; return to shader part epilog942;943; NOPRT-LABEL: load_2darray:944; NOPRT:       ; %bb.0: ; %main_body945; NOPRT-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm da946; NOPRT-NEXT:    s_waitcnt vmcnt(0)947; NOPRT-NEXT:    ; return to shader part epilog948;949; GFX10PLUS-LABEL: load_2darray:950; GFX10PLUS:       ; %bb.0: ; %main_body951; GFX10PLUS-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm952; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)953; GFX10PLUS-NEXT:    ; return to shader part epilog954;955; GFX12-LABEL: load_2darray:956; GFX12:       ; %bb.0: ; %main_body957; GFX12-NEXT:    image_load v[0:3], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY958; GFX12-NEXT:    s_wait_loadcnt 0x0959; GFX12-NEXT:    ; return to shader part epilog960main_body:961  %v = call <4 x float> @llvm.amdgcn.image.load.2darray.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %slice, <8 x i32> %rsrc, i32 0, i32 0)962  ret <4 x float> %v963}964 965define amdgpu_ps <4 x float> @load_2darray_lwe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %t, i32 %slice) {966; VERDE-LABEL: load_2darray_lwe:967; VERDE:       ; %bb.0: ; %main_body968; VERDE-NEXT:    v_mov_b32_e32 v5, v0969; VERDE-NEXT:    v_mov_b32_e32 v0, 0970; VERDE-NEXT:    v_mov_b32_e32 v7, v2971; VERDE-NEXT:    v_mov_b32_e32 v6, v1972; VERDE-NEXT:    v_mov_b32_e32 v1, v0973; VERDE-NEXT:    v_mov_b32_e32 v2, v0974; VERDE-NEXT:    v_mov_b32_e32 v3, v0975; VERDE-NEXT:    v_mov_b32_e32 v4, v0976; VERDE-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm lwe da977; VERDE-NEXT:    s_mov_b32 s11, 0xf000978; VERDE-NEXT:    s_mov_b32 s10, -1979; VERDE-NEXT:    s_waitcnt vmcnt(0)980; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 0981; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)982; VERDE-NEXT:    ; return to shader part epilog983;984; FIJI-LABEL: load_2darray_lwe:985; FIJI:       ; %bb.0: ; %main_body986; FIJI-NEXT:    v_mov_b32_e32 v5, v0987; FIJI-NEXT:    v_mov_b32_e32 v0, 0988; FIJI-NEXT:    v_mov_b32_e32 v7, v2989; FIJI-NEXT:    v_mov_b32_e32 v6, v1990; FIJI-NEXT:    v_mov_b32_e32 v1, v0991; FIJI-NEXT:    v_mov_b32_e32 v2, v0992; FIJI-NEXT:    v_mov_b32_e32 v3, v0993; FIJI-NEXT:    v_mov_b32_e32 v4, v0994; FIJI-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm lwe da995; FIJI-NEXT:    s_mov_b32 s11, 0xf000996; FIJI-NEXT:    s_mov_b32 s10, -1997; FIJI-NEXT:    s_waitcnt vmcnt(0)998; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 0999; FIJI-NEXT:    s_waitcnt vmcnt(0)1000; FIJI-NEXT:    ; return to shader part epilog1001;1002; GFX6789-LABEL: load_2darray_lwe:1003; GFX6789:       ; %bb.0: ; %main_body1004; GFX6789-NEXT:    v_mov_b32_e32 v8, 01005; GFX6789-NEXT:    v_mov_b32_e32 v7, v21006; GFX6789-NEXT:    v_mov_b32_e32 v6, v11007; GFX6789-NEXT:    v_mov_b32_e32 v5, v01008; GFX6789-NEXT:    v_mov_b32_e32 v9, v81009; GFX6789-NEXT:    v_mov_b32_e32 v10, v81010; GFX6789-NEXT:    v_mov_b32_e32 v11, v81011; GFX6789-NEXT:    v_mov_b32_e32 v12, v81012; GFX6789-NEXT:    v_mov_b32_e32 v0, v81013; GFX6789-NEXT:    v_mov_b32_e32 v1, v91014; GFX6789-NEXT:    v_mov_b32_e32 v2, v101015; GFX6789-NEXT:    v_mov_b32_e32 v3, v111016; GFX6789-NEXT:    v_mov_b32_e32 v4, v121017; GFX6789-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm lwe da1018; GFX6789-NEXT:    s_waitcnt vmcnt(0)1019; GFX6789-NEXT:    global_store_dword v8, v4, s[8:9]1020; GFX6789-NEXT:    s_waitcnt vmcnt(0)1021; GFX6789-NEXT:    ; return to shader part epilog1022;1023; NOPRT-LABEL: load_2darray_lwe:1024; NOPRT:       ; %bb.0: ; %main_body1025; NOPRT-NEXT:    v_mov_b32_e32 v4, 01026; NOPRT-NEXT:    image_load v[0:4], v[0:2], s[0:7] dmask:0xf unorm lwe da1027; NOPRT-NEXT:    v_mov_b32_e32 v5, 01028; NOPRT-NEXT:    s_waitcnt vmcnt(0)1029; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]1030; NOPRT-NEXT:    s_waitcnt vmcnt(0)1031; NOPRT-NEXT:    ; return to shader part epilog1032;1033; GFX10-LABEL: load_2darray_lwe:1034; GFX10:       ; %bb.0: ; %main_body1035; GFX10-NEXT:    v_mov_b32_e32 v8, 01036; GFX10-NEXT:    v_mov_b32_e32 v7, v21037; GFX10-NEXT:    v_mov_b32_e32 v6, v11038; GFX10-NEXT:    v_mov_b32_e32 v5, v01039; GFX10-NEXT:    v_mov_b32_e32 v9, v81040; GFX10-NEXT:    v_mov_b32_e32 v10, v81041; GFX10-NEXT:    v_mov_b32_e32 v11, v81042; GFX10-NEXT:    v_mov_b32_e32 v12, v81043; GFX10-NEXT:    v_mov_b32_e32 v0, v81044; GFX10-NEXT:    v_mov_b32_e32 v1, v91045; GFX10-NEXT:    v_mov_b32_e32 v2, v101046; GFX10-NEXT:    v_mov_b32_e32 v3, v111047; GFX10-NEXT:    v_mov_b32_e32 v4, v121048; GFX10-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm lwe1049; GFX10-NEXT:    s_waitcnt vmcnt(0)1050; GFX10-NEXT:    global_store_dword v8, v4, s[8:9]1051; GFX10-NEXT:    ; return to shader part epilog1052;1053; GFX11-LABEL: load_2darray_lwe:1054; GFX11:       ; %bb.0: ; %main_body1055; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, 01056; GFX11-NEXT:    v_dual_mov_b32 v7, v2 :: v_dual_mov_b32 v6, v11057; GFX11-NEXT:    v_mov_b32_e32 v9, v81058; GFX11-NEXT:    v_mov_b32_e32 v10, v81059; GFX11-NEXT:    v_mov_b32_e32 v11, v81060; GFX11-NEXT:    v_mov_b32_e32 v12, v81061; GFX11-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v91062; GFX11-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v111063; GFX11-NEXT:    v_mov_b32_e32 v4, v121064; GFX11-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm lwe1065; GFX11-NEXT:    s_waitcnt vmcnt(0)1066; GFX11-NEXT:    global_store_b32 v8, v4, s[8:9]1067; GFX11-NEXT:    ; return to shader part epilog1068;1069; GFX12-LABEL: load_2darray_lwe:1070; GFX12:       ; %bb.0: ; %main_body1071; GFX12-NEXT:    image_load v[0:4], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY1072; GFX12-NEXT:    v_mov_b32_e32 v5, 01073; GFX12-NEXT:    s_wait_loadcnt 0x01074; GFX12-NEXT:    global_store_b32 v5, v4, s[8:9]1075; GFX12-NEXT:    ; return to shader part epilog1076main_body:1077  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.2darray.v4f32i32.i32(i32 15, i32 %s, i32 %t, i32 %slice, <8 x i32> %rsrc, i32 2, i32 0)1078  %v.vec = extractvalue {<4 x float>, i32} %v, 01079  %v.err = extractvalue {<4 x float>, i32} %v, 11080  store i32 %v.err, ptr addrspace(1) %out, align 41081  ret <4 x float> %v.vec1082}1083 1084define amdgpu_ps <4 x float> @load_2dmsaa(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %fragid) {1085; VERDE-LABEL: load_2dmsaa:1086; VERDE:       ; %bb.0: ; %main_body1087; VERDE-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm1088; VERDE-NEXT:    s_waitcnt vmcnt(0)1089; VERDE-NEXT:    ; return to shader part epilog1090;1091; FIJI-LABEL: load_2dmsaa:1092; FIJI:       ; %bb.0: ; %main_body1093; FIJI-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm1094; FIJI-NEXT:    s_waitcnt vmcnt(0)1095; FIJI-NEXT:    ; return to shader part epilog1096;1097; GFX6789-LABEL: load_2dmsaa:1098; GFX6789:       ; %bb.0: ; %main_body1099; GFX6789-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm1100; GFX6789-NEXT:    s_waitcnt vmcnt(0)1101; GFX6789-NEXT:    ; return to shader part epilog1102;1103; NOPRT-LABEL: load_2dmsaa:1104; NOPRT:       ; %bb.0: ; %main_body1105; NOPRT-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf unorm1106; NOPRT-NEXT:    s_waitcnt vmcnt(0)1107; NOPRT-NEXT:    ; return to shader part epilog1108;1109; GFX10PLUS-LABEL: load_2dmsaa:1110; GFX10PLUS:       ; %bb.0: ; %main_body1111; GFX10PLUS-NEXT:    image_load v[0:3], v[0:2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm1112; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1113; GFX10PLUS-NEXT:    ; return to shader part epilog1114;1115; GFX12-LABEL: load_2dmsaa:1116; GFX12:       ; %bb.0: ; %main_body1117; GFX12-NEXT:    image_load v[0:3], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA1118; GFX12-NEXT:    s_wait_loadcnt 0x01119; GFX12-NEXT:    ; return to shader part epilog1120main_body:1121  %v = call <4 x float> @llvm.amdgcn.image.load.2dmsaa.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %fragid, <8 x i32> %rsrc, i32 0, i32 0)1122  ret <4 x float> %v1123}1124 1125define amdgpu_ps <4 x float> @load_2dmsaa_both(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %t, i32 %fragid) {1126; VERDE-LABEL: load_2dmsaa_both:1127; VERDE:       ; %bb.0: ; %main_body1128; VERDE-NEXT:    v_mov_b32_e32 v5, v01129; VERDE-NEXT:    v_mov_b32_e32 v0, 01130; VERDE-NEXT:    v_mov_b32_e32 v7, v21131; VERDE-NEXT:    v_mov_b32_e32 v6, v11132; VERDE-NEXT:    v_mov_b32_e32 v1, v01133; VERDE-NEXT:    v_mov_b32_e32 v2, v01134; VERDE-NEXT:    v_mov_b32_e32 v3, v01135; VERDE-NEXT:    v_mov_b32_e32 v4, v01136; VERDE-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe lwe1137; VERDE-NEXT:    s_mov_b32 s11, 0xf0001138; VERDE-NEXT:    s_mov_b32 s10, -11139; VERDE-NEXT:    s_waitcnt vmcnt(0)1140; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 01141; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)1142; VERDE-NEXT:    ; return to shader part epilog1143;1144; FIJI-LABEL: load_2dmsaa_both:1145; FIJI:       ; %bb.0: ; %main_body1146; FIJI-NEXT:    v_mov_b32_e32 v5, v01147; FIJI-NEXT:    v_mov_b32_e32 v0, 01148; FIJI-NEXT:    v_mov_b32_e32 v7, v21149; FIJI-NEXT:    v_mov_b32_e32 v6, v11150; FIJI-NEXT:    v_mov_b32_e32 v1, v01151; FIJI-NEXT:    v_mov_b32_e32 v2, v01152; FIJI-NEXT:    v_mov_b32_e32 v3, v01153; FIJI-NEXT:    v_mov_b32_e32 v4, v01154; FIJI-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe lwe1155; FIJI-NEXT:    s_mov_b32 s11, 0xf0001156; FIJI-NEXT:    s_mov_b32 s10, -11157; FIJI-NEXT:    s_waitcnt vmcnt(0)1158; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 01159; FIJI-NEXT:    s_waitcnt vmcnt(0)1160; FIJI-NEXT:    ; return to shader part epilog1161;1162; GFX6789-LABEL: load_2dmsaa_both:1163; GFX6789:       ; %bb.0: ; %main_body1164; GFX6789-NEXT:    v_mov_b32_e32 v8, 01165; GFX6789-NEXT:    v_mov_b32_e32 v7, v21166; GFX6789-NEXT:    v_mov_b32_e32 v6, v11167; GFX6789-NEXT:    v_mov_b32_e32 v5, v01168; GFX6789-NEXT:    v_mov_b32_e32 v9, v81169; GFX6789-NEXT:    v_mov_b32_e32 v10, v81170; GFX6789-NEXT:    v_mov_b32_e32 v11, v81171; GFX6789-NEXT:    v_mov_b32_e32 v12, v81172; GFX6789-NEXT:    v_mov_b32_e32 v0, v81173; GFX6789-NEXT:    v_mov_b32_e32 v1, v91174; GFX6789-NEXT:    v_mov_b32_e32 v2, v101175; GFX6789-NEXT:    v_mov_b32_e32 v3, v111176; GFX6789-NEXT:    v_mov_b32_e32 v4, v121177; GFX6789-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe lwe1178; GFX6789-NEXT:    s_waitcnt vmcnt(0)1179; GFX6789-NEXT:    global_store_dword v8, v4, s[8:9]1180; GFX6789-NEXT:    s_waitcnt vmcnt(0)1181; GFX6789-NEXT:    ; return to shader part epilog1182;1183; NOPRT-LABEL: load_2dmsaa_both:1184; NOPRT:       ; %bb.0: ; %main_body1185; NOPRT-NEXT:    v_mov_b32_e32 v4, 01186; NOPRT-NEXT:    image_load v[0:4], v[0:2], s[0:7] dmask:0xf unorm tfe lwe1187; NOPRT-NEXT:    v_mov_b32_e32 v5, 01188; NOPRT-NEXT:    s_waitcnt vmcnt(0)1189; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]1190; NOPRT-NEXT:    s_waitcnt vmcnt(0)1191; NOPRT-NEXT:    ; return to shader part epilog1192;1193; GFX10-LABEL: load_2dmsaa_both:1194; GFX10:       ; %bb.0: ; %main_body1195; GFX10-NEXT:    v_mov_b32_e32 v8, 01196; GFX10-NEXT:    v_mov_b32_e32 v7, v21197; GFX10-NEXT:    v_mov_b32_e32 v6, v11198; GFX10-NEXT:    v_mov_b32_e32 v5, v01199; GFX10-NEXT:    v_mov_b32_e32 v9, v81200; GFX10-NEXT:    v_mov_b32_e32 v10, v81201; GFX10-NEXT:    v_mov_b32_e32 v11, v81202; GFX10-NEXT:    v_mov_b32_e32 v12, v81203; GFX10-NEXT:    v_mov_b32_e32 v0, v81204; GFX10-NEXT:    v_mov_b32_e32 v1, v91205; GFX10-NEXT:    v_mov_b32_e32 v2, v101206; GFX10-NEXT:    v_mov_b32_e32 v3, v111207; GFX10-NEXT:    v_mov_b32_e32 v4, v121208; GFX10-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm tfe lwe1209; GFX10-NEXT:    s_waitcnt vmcnt(0)1210; GFX10-NEXT:    global_store_dword v8, v4, s[8:9]1211; GFX10-NEXT:    ; return to shader part epilog1212;1213; GFX11-LABEL: load_2dmsaa_both:1214; GFX11:       ; %bb.0: ; %main_body1215; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, 01216; GFX11-NEXT:    v_dual_mov_b32 v7, v2 :: v_dual_mov_b32 v6, v11217; GFX11-NEXT:    v_mov_b32_e32 v9, v81218; GFX11-NEXT:    v_mov_b32_e32 v10, v81219; GFX11-NEXT:    v_mov_b32_e32 v11, v81220; GFX11-NEXT:    v_mov_b32_e32 v12, v81221; GFX11-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v91222; GFX11-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v111223; GFX11-NEXT:    v_mov_b32_e32 v4, v121224; GFX11-NEXT:    image_load v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm tfe lwe1225; GFX11-NEXT:    s_waitcnt vmcnt(0)1226; GFX11-NEXT:    global_store_b32 v8, v4, s[8:9]1227; GFX11-NEXT:    ; return to shader part epilog1228;1229; GFX12-LABEL: load_2dmsaa_both:1230; GFX12:       ; %bb.0: ; %main_body1231; GFX12-NEXT:    v_dual_mov_b32 v7, v0 :: v_dual_mov_b32 v8, 01232; GFX12-NEXT:    v_dual_mov_b32 v5, v2 :: v_dual_mov_b32 v6, v11233; GFX12-NEXT:    v_dual_mov_b32 v9, v8 :: v_dual_mov_b32 v10, v81234; GFX12-NEXT:    v_dual_mov_b32 v11, v8 :: v_dual_mov_b32 v12, v81235; GFX12-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v91236; GFX12-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v111237; GFX12-NEXT:    v_mov_b32_e32 v4, v121238; GFX12-NEXT:    image_load v[0:4], [v7, v6, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA tfe1239; GFX12-NEXT:    s_wait_loadcnt 0x01240; GFX12-NEXT:    global_store_b32 v8, v4, s[8:9]1241; GFX12-NEXT:    ; return to shader part epilog1242main_body:1243  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.2dmsaa.v4f32i32.i32(i32 15, i32 %s, i32 %t, i32 %fragid, <8 x i32> %rsrc, i32 3, i32 0)1244  %v.vec = extractvalue {<4 x float>, i32} %v, 01245  %v.err = extractvalue {<4 x float>, i32} %v, 11246  store i32 %v.err, ptr addrspace(1) %out, align 41247  ret <4 x float> %v.vec1248}1249 1250define amdgpu_ps <4 x float> @load_2darraymsaa(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %slice, i32 %fragid) {1251; VERDE-LABEL: load_2darraymsaa:1252; VERDE:       ; %bb.0: ; %main_body1253; VERDE-NEXT:    image_load v[0:3], v[0:3], s[0:7] dmask:0xf unorm da1254; VERDE-NEXT:    s_waitcnt vmcnt(0)1255; VERDE-NEXT:    ; return to shader part epilog1256;1257; FIJI-LABEL: load_2darraymsaa:1258; FIJI:       ; %bb.0: ; %main_body1259; FIJI-NEXT:    image_load v[0:3], v[0:3], s[0:7] dmask:0xf unorm da1260; FIJI-NEXT:    s_waitcnt vmcnt(0)1261; FIJI-NEXT:    ; return to shader part epilog1262;1263; GFX6789-LABEL: load_2darraymsaa:1264; GFX6789:       ; %bb.0: ; %main_body1265; GFX6789-NEXT:    image_load v[0:3], v[0:3], s[0:7] dmask:0xf unorm da1266; GFX6789-NEXT:    s_waitcnt vmcnt(0)1267; GFX6789-NEXT:    ; return to shader part epilog1268;1269; NOPRT-LABEL: load_2darraymsaa:1270; NOPRT:       ; %bb.0: ; %main_body1271; NOPRT-NEXT:    image_load v[0:3], v[0:3], s[0:7] dmask:0xf unorm da1272; NOPRT-NEXT:    s_waitcnt vmcnt(0)1273; NOPRT-NEXT:    ; return to shader part epilog1274;1275; GFX10PLUS-LABEL: load_2darraymsaa:1276; GFX10PLUS:       ; %bb.0: ; %main_body1277; GFX10PLUS-NEXT:    image_load v[0:3], v[0:3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm1278; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1279; GFX10PLUS-NEXT:    ; return to shader part epilog1280;1281; GFX12-LABEL: load_2darraymsaa:1282; GFX12:       ; %bb.0: ; %main_body1283; GFX12-NEXT:    image_load v[0:3], [v0, v1, v2, v3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY1284; GFX12-NEXT:    s_wait_loadcnt 0x01285; GFX12-NEXT:    ; return to shader part epilog1286main_body:1287  %v = call <4 x float> @llvm.amdgcn.image.load.2darraymsaa.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %slice, i32 %fragid, <8 x i32> %rsrc, i32 0, i32 0)1288  ret <4 x float> %v1289}1290 1291define amdgpu_ps <4 x float> @load_2darraymsaa_tfe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %t, i32 %slice, i32 %fragid) {1292; VERDE-LABEL: load_2darraymsaa_tfe:1293; VERDE:       ; %bb.0: ; %main_body1294; VERDE-NEXT:    v_mov_b32_e32 v5, v01295; VERDE-NEXT:    v_mov_b32_e32 v0, 01296; VERDE-NEXT:    v_mov_b32_e32 v8, v31297; VERDE-NEXT:    v_mov_b32_e32 v7, v21298; VERDE-NEXT:    v_mov_b32_e32 v6, v11299; VERDE-NEXT:    v_mov_b32_e32 v1, v01300; VERDE-NEXT:    v_mov_b32_e32 v2, v01301; VERDE-NEXT:    v_mov_b32_e32 v3, v01302; VERDE-NEXT:    v_mov_b32_e32 v4, v01303; VERDE-NEXT:    image_load v[0:4], v[5:8], s[0:7] dmask:0xf unorm tfe da1304; VERDE-NEXT:    s_mov_b32 s11, 0xf0001305; VERDE-NEXT:    s_mov_b32 s10, -11306; VERDE-NEXT:    s_waitcnt vmcnt(0)1307; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 01308; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)1309; VERDE-NEXT:    ; return to shader part epilog1310;1311; FIJI-LABEL: load_2darraymsaa_tfe:1312; FIJI:       ; %bb.0: ; %main_body1313; FIJI-NEXT:    v_mov_b32_e32 v5, v01314; FIJI-NEXT:    v_mov_b32_e32 v0, 01315; FIJI-NEXT:    v_mov_b32_e32 v8, v31316; FIJI-NEXT:    v_mov_b32_e32 v7, v21317; FIJI-NEXT:    v_mov_b32_e32 v6, v11318; FIJI-NEXT:    v_mov_b32_e32 v1, v01319; FIJI-NEXT:    v_mov_b32_e32 v2, v01320; FIJI-NEXT:    v_mov_b32_e32 v3, v01321; FIJI-NEXT:    v_mov_b32_e32 v4, v01322; FIJI-NEXT:    image_load v[0:4], v[5:8], s[0:7] dmask:0xf unorm tfe da1323; FIJI-NEXT:    s_mov_b32 s11, 0xf0001324; FIJI-NEXT:    s_mov_b32 s10, -11325; FIJI-NEXT:    s_waitcnt vmcnt(0)1326; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 01327; FIJI-NEXT:    s_waitcnt vmcnt(0)1328; FIJI-NEXT:    ; return to shader part epilog1329;1330; GFX6789-LABEL: load_2darraymsaa_tfe:1331; GFX6789:       ; %bb.0: ; %main_body1332; GFX6789-NEXT:    v_mov_b32_e32 v9, 01333; GFX6789-NEXT:    v_mov_b32_e32 v8, v31334; GFX6789-NEXT:    v_mov_b32_e32 v7, v21335; GFX6789-NEXT:    v_mov_b32_e32 v6, v11336; GFX6789-NEXT:    v_mov_b32_e32 v5, v01337; GFX6789-NEXT:    v_mov_b32_e32 v10, v91338; GFX6789-NEXT:    v_mov_b32_e32 v11, v91339; GFX6789-NEXT:    v_mov_b32_e32 v12, v91340; GFX6789-NEXT:    v_mov_b32_e32 v13, v91341; GFX6789-NEXT:    v_mov_b32_e32 v0, v91342; GFX6789-NEXT:    v_mov_b32_e32 v1, v101343; GFX6789-NEXT:    v_mov_b32_e32 v2, v111344; GFX6789-NEXT:    v_mov_b32_e32 v3, v121345; GFX6789-NEXT:    v_mov_b32_e32 v4, v131346; GFX6789-NEXT:    image_load v[0:4], v[5:8], s[0:7] dmask:0xf unorm tfe da1347; GFX6789-NEXT:    s_waitcnt vmcnt(0)1348; GFX6789-NEXT:    global_store_dword v9, v4, s[8:9]1349; GFX6789-NEXT:    s_waitcnt vmcnt(0)1350; GFX6789-NEXT:    ; return to shader part epilog1351;1352; NOPRT-LABEL: load_2darraymsaa_tfe:1353; NOPRT:       ; %bb.0: ; %main_body1354; NOPRT-NEXT:    v_mov_b32_e32 v4, 01355; NOPRT-NEXT:    image_load v[0:4], v[0:3], s[0:7] dmask:0xf unorm tfe da1356; NOPRT-NEXT:    v_mov_b32_e32 v5, 01357; NOPRT-NEXT:    s_waitcnt vmcnt(0)1358; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]1359; NOPRT-NEXT:    s_waitcnt vmcnt(0)1360; NOPRT-NEXT:    ; return to shader part epilog1361;1362; GFX10-LABEL: load_2darraymsaa_tfe:1363; GFX10:       ; %bb.0: ; %main_body1364; GFX10-NEXT:    v_mov_b32_e32 v9, 01365; GFX10-NEXT:    v_mov_b32_e32 v8, v31366; GFX10-NEXT:    v_mov_b32_e32 v7, v21367; GFX10-NEXT:    v_mov_b32_e32 v6, v11368; GFX10-NEXT:    v_mov_b32_e32 v5, v01369; GFX10-NEXT:    v_mov_b32_e32 v10, v91370; GFX10-NEXT:    v_mov_b32_e32 v11, v91371; GFX10-NEXT:    v_mov_b32_e32 v12, v91372; GFX10-NEXT:    v_mov_b32_e32 v13, v91373; GFX10-NEXT:    v_mov_b32_e32 v0, v91374; GFX10-NEXT:    v_mov_b32_e32 v1, v101375; GFX10-NEXT:    v_mov_b32_e32 v2, v111376; GFX10-NEXT:    v_mov_b32_e32 v3, v121377; GFX10-NEXT:    v_mov_b32_e32 v4, v131378; GFX10-NEXT:    image_load v[0:4], v[5:8], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm tfe1379; GFX10-NEXT:    s_waitcnt vmcnt(0)1380; GFX10-NEXT:    global_store_dword v9, v4, s[8:9]1381; GFX10-NEXT:    ; return to shader part epilog1382;1383; GFX11-LABEL: load_2darraymsaa_tfe:1384; GFX11:       ; %bb.0: ; %main_body1385; GFX11-NEXT:    v_dual_mov_b32 v9, 0 :: v_dual_mov_b32 v8, v31386; GFX11-NEXT:    v_dual_mov_b32 v7, v2 :: v_dual_mov_b32 v6, v11387; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v10, v91388; GFX11-NEXT:    v_mov_b32_e32 v11, v91389; GFX11-NEXT:    v_mov_b32_e32 v12, v91390; GFX11-NEXT:    v_mov_b32_e32 v13, v91391; GFX11-NEXT:    v_dual_mov_b32 v0, v9 :: v_dual_mov_b32 v1, v101392; GFX11-NEXT:    v_dual_mov_b32 v2, v11 :: v_dual_mov_b32 v3, v121393; GFX11-NEXT:    v_mov_b32_e32 v4, v131394; GFX11-NEXT:    image_load v[0:4], v[5:8], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm tfe1395; GFX11-NEXT:    s_waitcnt vmcnt(0)1396; GFX11-NEXT:    global_store_b32 v9, v4, s[8:9]1397; GFX11-NEXT:    ; return to shader part epilog1398;1399; GFX12-LABEL: load_2darraymsaa_tfe:1400; GFX12:       ; %bb.0: ; %main_body1401; GFX12-NEXT:    v_mov_b32_e32 v9, 01402; GFX12-NEXT:    v_dual_mov_b32 v5, v3 :: v_dual_mov_b32 v6, v21403; GFX12-NEXT:    v_dual_mov_b32 v7, v1 :: v_dual_mov_b32 v8, v01404; GFX12-NEXT:    v_dual_mov_b32 v10, v9 :: v_dual_mov_b32 v11, v91405; GFX12-NEXT:    v_dual_mov_b32 v12, v9 :: v_dual_mov_b32 v13, v91406; GFX12-NEXT:    v_dual_mov_b32 v0, v9 :: v_dual_mov_b32 v1, v101407; GFX12-NEXT:    v_dual_mov_b32 v2, v11 :: v_dual_mov_b32 v3, v121408; GFX12-NEXT:    v_mov_b32_e32 v4, v131409; GFX12-NEXT:    image_load v[0:4], [v8, v7, v6, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY tfe1410; GFX12-NEXT:    s_wait_loadcnt 0x01411; GFX12-NEXT:    global_store_b32 v9, v4, s[8:9]1412; GFX12-NEXT:    ; return to shader part epilog1413main_body:1414  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.2darraymsaa.v4f32i32.i32(i32 15, i32 %s, i32 %t, i32 %slice, i32 %fragid, <8 x i32> %rsrc, i32 1, i32 0)1415  %v.vec = extractvalue {<4 x float>, i32} %v, 01416  %v.err = extractvalue {<4 x float>, i32} %v, 11417  store i32 %v.err, ptr addrspace(1) %out, align 41418  ret <4 x float> %v.vec1419}1420 1421define amdgpu_ps <4 x float> @load_mip_1d(<8 x i32> inreg %rsrc, i32 %s, i32 %mip) {1422; VERDE-LABEL: load_mip_1d:1423; VERDE:       ; %bb.0: ; %main_body1424; VERDE-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm1425; VERDE-NEXT:    s_waitcnt vmcnt(0)1426; VERDE-NEXT:    ; return to shader part epilog1427;1428; FIJI-LABEL: load_mip_1d:1429; FIJI:       ; %bb.0: ; %main_body1430; FIJI-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm1431; FIJI-NEXT:    s_waitcnt vmcnt(0)1432; FIJI-NEXT:    ; return to shader part epilog1433;1434; GFX6789-LABEL: load_mip_1d:1435; GFX6789:       ; %bb.0: ; %main_body1436; GFX6789-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm1437; GFX6789-NEXT:    s_waitcnt vmcnt(0)1438; GFX6789-NEXT:    ; return to shader part epilog1439;1440; NOPRT-LABEL: load_mip_1d:1441; NOPRT:       ; %bb.0: ; %main_body1442; NOPRT-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf unorm1443; NOPRT-NEXT:    s_waitcnt vmcnt(0)1444; NOPRT-NEXT:    ; return to shader part epilog1445;1446; GFX10PLUS-LABEL: load_mip_1d:1447; GFX10PLUS:       ; %bb.0: ; %main_body1448; GFX10PLUS-NEXT:    image_load_mip v[0:3], v[0:1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm1449; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1450; GFX10PLUS-NEXT:    ; return to shader part epilog1451;1452; GFX12-LABEL: load_mip_1d:1453; GFX12:       ; %bb.0: ; %main_body1454; GFX12-NEXT:    image_load_mip v[0:3], [v0, v1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D1455; GFX12-NEXT:    s_wait_loadcnt 0x01456; GFX12-NEXT:    ; return to shader part epilog1457main_body:1458  %v = call <4 x float> @llvm.amdgcn.image.load.mip.1d.v4f32.i32(i32 15, i32 %s, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)1459  ret <4 x float> %v1460}1461 1462define amdgpu_ps <4 x float> @load_mip_1d_lwe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %mip) {1463; VERDE-LABEL: load_mip_1d_lwe:1464; VERDE:       ; %bb.0: ; %main_body1465; VERDE-NEXT:    v_mov_b32_e32 v5, v01466; VERDE-NEXT:    v_mov_b32_e32 v0, 01467; VERDE-NEXT:    v_mov_b32_e32 v6, v11468; VERDE-NEXT:    v_mov_b32_e32 v1, v01469; VERDE-NEXT:    v_mov_b32_e32 v2, v01470; VERDE-NEXT:    v_mov_b32_e32 v3, v01471; VERDE-NEXT:    v_mov_b32_e32 v4, v01472; VERDE-NEXT:    image_load_mip v[0:4], v[5:6], s[0:7] dmask:0xf unorm lwe1473; VERDE-NEXT:    s_mov_b32 s11, 0xf0001474; VERDE-NEXT:    s_mov_b32 s10, -11475; VERDE-NEXT:    s_waitcnt vmcnt(0)1476; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 01477; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)1478; VERDE-NEXT:    ; return to shader part epilog1479;1480; FIJI-LABEL: load_mip_1d_lwe:1481; FIJI:       ; %bb.0: ; %main_body1482; FIJI-NEXT:    v_mov_b32_e32 v5, v01483; FIJI-NEXT:    v_mov_b32_e32 v0, 01484; FIJI-NEXT:    v_mov_b32_e32 v6, v11485; FIJI-NEXT:    v_mov_b32_e32 v1, v01486; FIJI-NEXT:    v_mov_b32_e32 v2, v01487; FIJI-NEXT:    v_mov_b32_e32 v3, v01488; FIJI-NEXT:    v_mov_b32_e32 v4, v01489; FIJI-NEXT:    image_load_mip v[0:4], v[5:6], s[0:7] dmask:0xf unorm lwe1490; FIJI-NEXT:    s_mov_b32 s11, 0xf0001491; FIJI-NEXT:    s_mov_b32 s10, -11492; FIJI-NEXT:    s_waitcnt vmcnt(0)1493; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 01494; FIJI-NEXT:    s_waitcnt vmcnt(0)1495; FIJI-NEXT:    ; return to shader part epilog1496;1497; GFX6789-LABEL: load_mip_1d_lwe:1498; GFX6789:       ; %bb.0: ; %main_body1499; GFX6789-NEXT:    v_mov_b32_e32 v7, 01500; GFX6789-NEXT:    v_mov_b32_e32 v6, v11501; GFX6789-NEXT:    v_mov_b32_e32 v5, v01502; GFX6789-NEXT:    v_mov_b32_e32 v8, v71503; GFX6789-NEXT:    v_mov_b32_e32 v9, v71504; GFX6789-NEXT:    v_mov_b32_e32 v10, v71505; GFX6789-NEXT:    v_mov_b32_e32 v11, v71506; GFX6789-NEXT:    v_mov_b32_e32 v0, v71507; GFX6789-NEXT:    v_mov_b32_e32 v1, v81508; GFX6789-NEXT:    v_mov_b32_e32 v2, v91509; GFX6789-NEXT:    v_mov_b32_e32 v3, v101510; GFX6789-NEXT:    v_mov_b32_e32 v4, v111511; GFX6789-NEXT:    image_load_mip v[0:4], v[5:6], s[0:7] dmask:0xf unorm lwe1512; GFX6789-NEXT:    s_waitcnt vmcnt(0)1513; GFX6789-NEXT:    global_store_dword v7, v4, s[8:9]1514; GFX6789-NEXT:    s_waitcnt vmcnt(0)1515; GFX6789-NEXT:    ; return to shader part epilog1516;1517; NOPRT-LABEL: load_mip_1d_lwe:1518; NOPRT:       ; %bb.0: ; %main_body1519; NOPRT-NEXT:    v_mov_b32_e32 v4, 01520; NOPRT-NEXT:    image_load_mip v[0:4], v[0:1], s[0:7] dmask:0xf unorm lwe1521; NOPRT-NEXT:    v_mov_b32_e32 v5, 01522; NOPRT-NEXT:    s_waitcnt vmcnt(0)1523; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]1524; NOPRT-NEXT:    s_waitcnt vmcnt(0)1525; NOPRT-NEXT:    ; return to shader part epilog1526;1527; GFX10-LABEL: load_mip_1d_lwe:1528; GFX10:       ; %bb.0: ; %main_body1529; GFX10-NEXT:    v_mov_b32_e32 v7, 01530; GFX10-NEXT:    v_mov_b32_e32 v6, v11531; GFX10-NEXT:    v_mov_b32_e32 v5, v01532; GFX10-NEXT:    v_mov_b32_e32 v8, v71533; GFX10-NEXT:    v_mov_b32_e32 v9, v71534; GFX10-NEXT:    v_mov_b32_e32 v10, v71535; GFX10-NEXT:    v_mov_b32_e32 v11, v71536; GFX10-NEXT:    v_mov_b32_e32 v0, v71537; GFX10-NEXT:    v_mov_b32_e32 v1, v81538; GFX10-NEXT:    v_mov_b32_e32 v2, v91539; GFX10-NEXT:    v_mov_b32_e32 v3, v101540; GFX10-NEXT:    v_mov_b32_e32 v4, v111541; GFX10-NEXT:    image_load_mip v[0:4], v[5:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm lwe1542; GFX10-NEXT:    s_waitcnt vmcnt(0)1543; GFX10-NEXT:    global_store_dword v7, v4, s[8:9]1544; GFX10-NEXT:    ; return to shader part epilog1545;1546; GFX11-LABEL: load_mip_1d_lwe:1547; GFX11:       ; %bb.0: ; %main_body1548; GFX11-NEXT:    v_dual_mov_b32 v7, 0 :: v_dual_mov_b32 v6, v11549; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, v71550; GFX11-NEXT:    v_mov_b32_e32 v9, v71551; GFX11-NEXT:    v_mov_b32_e32 v10, v71552; GFX11-NEXT:    v_mov_b32_e32 v11, v71553; GFX11-NEXT:    v_dual_mov_b32 v0, v7 :: v_dual_mov_b32 v1, v81554; GFX11-NEXT:    v_dual_mov_b32 v2, v9 :: v_dual_mov_b32 v3, v101555; GFX11-NEXT:    v_mov_b32_e32 v4, v111556; GFX11-NEXT:    image_load_mip v[0:4], v[5:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm lwe1557; GFX11-NEXT:    s_waitcnt vmcnt(0)1558; GFX11-NEXT:    global_store_b32 v7, v4, s[8:9]1559; GFX11-NEXT:    ; return to shader part epilog1560;1561; GFX12-LABEL: load_mip_1d_lwe:1562; GFX12:       ; %bb.0: ; %main_body1563; GFX12-NEXT:    image_load_mip v[0:4], [v0, v1], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D1564; GFX12-NEXT:    v_mov_b32_e32 v5, 01565; GFX12-NEXT:    s_wait_loadcnt 0x01566; GFX12-NEXT:    global_store_b32 v5, v4, s[8:9]1567; GFX12-NEXT:    ; return to shader part epilog1568main_body:1569  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.mip.1d.v4f32i32.i32(i32 15, i32 %s, i32 %mip, <8 x i32> %rsrc, i32 2, i32 0)1570  %v.vec = extractvalue {<4 x float>, i32} %v, 01571  %v.err = extractvalue {<4 x float>, i32} %v, 11572  store i32 %v.err, ptr addrspace(1) %out, align 41573  ret <4 x float> %v.vec1574}1575 1576define amdgpu_ps <4 x float> @load_mip_2d(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %mip) {1577; VERDE-LABEL: load_mip_2d:1578; VERDE:       ; %bb.0: ; %main_body1579; VERDE-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm1580; VERDE-NEXT:    s_waitcnt vmcnt(0)1581; VERDE-NEXT:    ; return to shader part epilog1582;1583; FIJI-LABEL: load_mip_2d:1584; FIJI:       ; %bb.0: ; %main_body1585; FIJI-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm1586; FIJI-NEXT:    s_waitcnt vmcnt(0)1587; FIJI-NEXT:    ; return to shader part epilog1588;1589; GFX6789-LABEL: load_mip_2d:1590; GFX6789:       ; %bb.0: ; %main_body1591; GFX6789-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm1592; GFX6789-NEXT:    s_waitcnt vmcnt(0)1593; GFX6789-NEXT:    ; return to shader part epilog1594;1595; NOPRT-LABEL: load_mip_2d:1596; NOPRT:       ; %bb.0: ; %main_body1597; NOPRT-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm1598; NOPRT-NEXT:    s_waitcnt vmcnt(0)1599; NOPRT-NEXT:    ; return to shader part epilog1600;1601; GFX10PLUS-LABEL: load_mip_2d:1602; GFX10PLUS:       ; %bb.0: ; %main_body1603; GFX10PLUS-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm1604; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1605; GFX10PLUS-NEXT:    ; return to shader part epilog1606;1607; GFX12-LABEL: load_mip_2d:1608; GFX12:       ; %bb.0: ; %main_body1609; GFX12-NEXT:    image_load_mip v[0:3], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D1610; GFX12-NEXT:    s_wait_loadcnt 0x01611; GFX12-NEXT:    ; return to shader part epilog1612main_body:1613  %v = call <4 x float> @llvm.amdgcn.image.load.mip.2d.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)1614  ret <4 x float> %v1615}1616 1617define amdgpu_ps <4 x float> @load_mip_2d_tfe(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s, i32 %t, i32 %mip) {1618; VERDE-LABEL: load_mip_2d_tfe:1619; VERDE:       ; %bb.0: ; %main_body1620; VERDE-NEXT:    v_mov_b32_e32 v5, v01621; VERDE-NEXT:    v_mov_b32_e32 v0, 01622; VERDE-NEXT:    v_mov_b32_e32 v7, v21623; VERDE-NEXT:    v_mov_b32_e32 v6, v11624; VERDE-NEXT:    v_mov_b32_e32 v1, v01625; VERDE-NEXT:    v_mov_b32_e32 v2, v01626; VERDE-NEXT:    v_mov_b32_e32 v3, v01627; VERDE-NEXT:    v_mov_b32_e32 v4, v01628; VERDE-NEXT:    image_load_mip v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe1629; VERDE-NEXT:    s_mov_b32 s11, 0xf0001630; VERDE-NEXT:    s_mov_b32 s10, -11631; VERDE-NEXT:    s_waitcnt vmcnt(0)1632; VERDE-NEXT:    buffer_store_dword v4, off, s[8:11], 01633; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)1634; VERDE-NEXT:    ; return to shader part epilog1635;1636; FIJI-LABEL: load_mip_2d_tfe:1637; FIJI:       ; %bb.0: ; %main_body1638; FIJI-NEXT:    v_mov_b32_e32 v5, v01639; FIJI-NEXT:    v_mov_b32_e32 v0, 01640; FIJI-NEXT:    v_mov_b32_e32 v7, v21641; FIJI-NEXT:    v_mov_b32_e32 v6, v11642; FIJI-NEXT:    v_mov_b32_e32 v1, v01643; FIJI-NEXT:    v_mov_b32_e32 v2, v01644; FIJI-NEXT:    v_mov_b32_e32 v3, v01645; FIJI-NEXT:    v_mov_b32_e32 v4, v01646; FIJI-NEXT:    image_load_mip v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe1647; FIJI-NEXT:    s_mov_b32 s11, 0xf0001648; FIJI-NEXT:    s_mov_b32 s10, -11649; FIJI-NEXT:    s_waitcnt vmcnt(0)1650; FIJI-NEXT:    buffer_store_dword v4, off, s[8:11], 01651; FIJI-NEXT:    s_waitcnt vmcnt(0)1652; FIJI-NEXT:    ; return to shader part epilog1653;1654; GFX6789-LABEL: load_mip_2d_tfe:1655; GFX6789:       ; %bb.0: ; %main_body1656; GFX6789-NEXT:    v_mov_b32_e32 v8, 01657; GFX6789-NEXT:    v_mov_b32_e32 v7, v21658; GFX6789-NEXT:    v_mov_b32_e32 v6, v11659; GFX6789-NEXT:    v_mov_b32_e32 v5, v01660; GFX6789-NEXT:    v_mov_b32_e32 v9, v81661; GFX6789-NEXT:    v_mov_b32_e32 v10, v81662; GFX6789-NEXT:    v_mov_b32_e32 v11, v81663; GFX6789-NEXT:    v_mov_b32_e32 v12, v81664; GFX6789-NEXT:    v_mov_b32_e32 v0, v81665; GFX6789-NEXT:    v_mov_b32_e32 v1, v91666; GFX6789-NEXT:    v_mov_b32_e32 v2, v101667; GFX6789-NEXT:    v_mov_b32_e32 v3, v111668; GFX6789-NEXT:    v_mov_b32_e32 v4, v121669; GFX6789-NEXT:    image_load_mip v[0:4], v[5:7], s[0:7] dmask:0xf unorm tfe1670; GFX6789-NEXT:    s_waitcnt vmcnt(0)1671; GFX6789-NEXT:    global_store_dword v8, v4, s[8:9]1672; GFX6789-NEXT:    s_waitcnt vmcnt(0)1673; GFX6789-NEXT:    ; return to shader part epilog1674;1675; NOPRT-LABEL: load_mip_2d_tfe:1676; NOPRT:       ; %bb.0: ; %main_body1677; NOPRT-NEXT:    v_mov_b32_e32 v4, 01678; NOPRT-NEXT:    image_load_mip v[0:4], v[0:2], s[0:7] dmask:0xf unorm tfe1679; NOPRT-NEXT:    v_mov_b32_e32 v5, 01680; NOPRT-NEXT:    s_waitcnt vmcnt(0)1681; NOPRT-NEXT:    global_store_dword v5, v4, s[8:9]1682; NOPRT-NEXT:    s_waitcnt vmcnt(0)1683; NOPRT-NEXT:    ; return to shader part epilog1684;1685; GFX10-LABEL: load_mip_2d_tfe:1686; GFX10:       ; %bb.0: ; %main_body1687; GFX10-NEXT:    v_mov_b32_e32 v8, 01688; GFX10-NEXT:    v_mov_b32_e32 v7, v21689; GFX10-NEXT:    v_mov_b32_e32 v6, v11690; GFX10-NEXT:    v_mov_b32_e32 v5, v01691; GFX10-NEXT:    v_mov_b32_e32 v9, v81692; GFX10-NEXT:    v_mov_b32_e32 v10, v81693; GFX10-NEXT:    v_mov_b32_e32 v11, v81694; GFX10-NEXT:    v_mov_b32_e32 v12, v81695; GFX10-NEXT:    v_mov_b32_e32 v0, v81696; GFX10-NEXT:    v_mov_b32_e32 v1, v91697; GFX10-NEXT:    v_mov_b32_e32 v2, v101698; GFX10-NEXT:    v_mov_b32_e32 v3, v111699; GFX10-NEXT:    v_mov_b32_e32 v4, v121700; GFX10-NEXT:    image_load_mip v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm tfe1701; GFX10-NEXT:    s_waitcnt vmcnt(0)1702; GFX10-NEXT:    global_store_dword v8, v4, s[8:9]1703; GFX10-NEXT:    ; return to shader part epilog1704;1705; GFX11-LABEL: load_mip_2d_tfe:1706; GFX11:       ; %bb.0: ; %main_body1707; GFX11-NEXT:    v_dual_mov_b32 v5, v0 :: v_dual_mov_b32 v8, 01708; GFX11-NEXT:    v_dual_mov_b32 v7, v2 :: v_dual_mov_b32 v6, v11709; GFX11-NEXT:    v_mov_b32_e32 v9, v81710; GFX11-NEXT:    v_mov_b32_e32 v10, v81711; GFX11-NEXT:    v_mov_b32_e32 v11, v81712; GFX11-NEXT:    v_mov_b32_e32 v12, v81713; GFX11-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v91714; GFX11-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v111715; GFX11-NEXT:    v_mov_b32_e32 v4, v121716; GFX11-NEXT:    image_load_mip v[0:4], v[5:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm tfe1717; GFX11-NEXT:    s_waitcnt vmcnt(0)1718; GFX11-NEXT:    global_store_b32 v8, v4, s[8:9]1719; GFX11-NEXT:    ; return to shader part epilog1720;1721; GFX12-LABEL: load_mip_2d_tfe:1722; GFX12:       ; %bb.0: ; %main_body1723; GFX12-NEXT:    v_dual_mov_b32 v7, v0 :: v_dual_mov_b32 v8, 01724; GFX12-NEXT:    v_dual_mov_b32 v5, v2 :: v_dual_mov_b32 v6, v11725; GFX12-NEXT:    v_dual_mov_b32 v9, v8 :: v_dual_mov_b32 v10, v81726; GFX12-NEXT:    v_dual_mov_b32 v11, v8 :: v_dual_mov_b32 v12, v81727; GFX12-NEXT:    v_dual_mov_b32 v0, v8 :: v_dual_mov_b32 v1, v91728; GFX12-NEXT:    v_dual_mov_b32 v2, v10 :: v_dual_mov_b32 v3, v111729; GFX12-NEXT:    v_mov_b32_e32 v4, v121730; GFX12-NEXT:    image_load_mip v[0:4], [v7, v6, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D tfe1731; GFX12-NEXT:    s_wait_loadcnt 0x01732; GFX12-NEXT:    global_store_b32 v8, v4, s[8:9]1733; GFX12-NEXT:    ; return to shader part epilog1734main_body:1735  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.mip.2d.v4f32i32.i32(i32 15, i32 %s, i32 %t, i32 %mip, <8 x i32> %rsrc, i32 1, i32 0)1736  %v.vec = extractvalue {<4 x float>, i32} %v, 01737  %v.err = extractvalue {<4 x float>, i32} %v, 11738  store i32 %v.err, ptr addrspace(1) %out, align 41739  ret <4 x float> %v.vec1740}1741 1742define amdgpu_ps float @load_1d_V2_tfe_dmask0(<8 x i32> inreg %rsrc, i32 %s) {1743; VERDE-LABEL: load_1d_V2_tfe_dmask0:1744; VERDE:       ; %bb.0: ; %main_body1745; VERDE-NEXT:    v_mov_b32_e32 v1, 01746; VERDE-NEXT:    v_mov_b32_e32 v2, v11747; VERDE-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe1748; VERDE-NEXT:    s_waitcnt vmcnt(0)1749; VERDE-NEXT:    v_mov_b32_e32 v0, v21750; VERDE-NEXT:    ; return to shader part epilog1751;1752; FIJI-LABEL: load_1d_V2_tfe_dmask0:1753; FIJI:       ; %bb.0: ; %main_body1754; FIJI-NEXT:    v_mov_b32_e32 v1, 01755; FIJI-NEXT:    v_mov_b32_e32 v2, v11756; FIJI-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe1757; FIJI-NEXT:    s_waitcnt vmcnt(0)1758; FIJI-NEXT:    v_mov_b32_e32 v0, v21759; FIJI-NEXT:    ; return to shader part epilog1760;1761; GFX6789-LABEL: load_1d_V2_tfe_dmask0:1762; GFX6789:       ; %bb.0: ; %main_body1763; GFX6789-NEXT:    v_mov_b32_e32 v1, 01764; GFX6789-NEXT:    v_mov_b32_e32 v2, v11765; GFX6789-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe1766; GFX6789-NEXT:    s_waitcnt vmcnt(0)1767; GFX6789-NEXT:    v_mov_b32_e32 v0, v21768; GFX6789-NEXT:    ; return to shader part epilog1769;1770; NOPRT-LABEL: load_1d_V2_tfe_dmask0:1771; NOPRT:       ; %bb.0: ; %main_body1772; NOPRT-NEXT:    v_mov_b32_e32 v1, 01773; NOPRT-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x1 unorm tfe1774; NOPRT-NEXT:    s_waitcnt vmcnt(0)1775; NOPRT-NEXT:    v_mov_b32_e32 v0, v11776; NOPRT-NEXT:    ; return to shader part epilog1777;1778; GFX10PLUS-LABEL: load_1d_V2_tfe_dmask0:1779; GFX10PLUS:       ; %bb.0: ; %main_body1780; GFX10PLUS-NEXT:    v_mov_b32_e32 v1, 01781; GFX10PLUS-NEXT:    v_mov_b32_e32 v2, v11782; GFX10PLUS-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe1783; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1784; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v21785; GFX10PLUS-NEXT:    ; return to shader part epilog1786;1787; GFX12-LABEL: load_1d_V2_tfe_dmask0:1788; GFX12:       ; %bb.0: ; %main_body1789; GFX12-NEXT:    v_mov_b32_e32 v1, 01790; GFX12-NEXT:    v_mov_b32_e32 v2, v11791; GFX12-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D tfe1792; GFX12-NEXT:    s_wait_loadcnt 0x01793; GFX12-NEXT:    v_mov_b32_e32 v0, v21794; GFX12-NEXT:    ; return to shader part epilog1795main_body:1796  %v = call {<2 x float>,i32} @llvm.amdgcn.image.load.1d.v2f32i32.i32(i32 0, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)1797  %v.err = extractvalue {<2 x float>, i32} %v, 11798  %vv = bitcast i32 %v.err to float1799  ret float %vv1800}1801 1802define amdgpu_ps float @load_1d_V1_tfe_dmask0(<8 x i32> inreg %rsrc, i32 %s) {1803; VERDE-LABEL: load_1d_V1_tfe_dmask0:1804; VERDE:       ; %bb.0: ; %main_body1805; VERDE-NEXT:    v_mov_b32_e32 v1, 01806; VERDE-NEXT:    v_mov_b32_e32 v2, v11807; VERDE-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe1808; VERDE-NEXT:    s_waitcnt vmcnt(0)1809; VERDE-NEXT:    v_mov_b32_e32 v0, v21810; VERDE-NEXT:    ; return to shader part epilog1811;1812; FIJI-LABEL: load_1d_V1_tfe_dmask0:1813; FIJI:       ; %bb.0: ; %main_body1814; FIJI-NEXT:    v_mov_b32_e32 v1, 01815; FIJI-NEXT:    v_mov_b32_e32 v2, v11816; FIJI-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe1817; FIJI-NEXT:    s_waitcnt vmcnt(0)1818; FIJI-NEXT:    v_mov_b32_e32 v0, v21819; FIJI-NEXT:    ; return to shader part epilog1820;1821; GFX6789-LABEL: load_1d_V1_tfe_dmask0:1822; GFX6789:       ; %bb.0: ; %main_body1823; GFX6789-NEXT:    v_mov_b32_e32 v1, 01824; GFX6789-NEXT:    v_mov_b32_e32 v2, v11825; GFX6789-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe1826; GFX6789-NEXT:    s_waitcnt vmcnt(0)1827; GFX6789-NEXT:    v_mov_b32_e32 v0, v21828; GFX6789-NEXT:    ; return to shader part epilog1829;1830; NOPRT-LABEL: load_1d_V1_tfe_dmask0:1831; NOPRT:       ; %bb.0: ; %main_body1832; NOPRT-NEXT:    v_mov_b32_e32 v1, 01833; NOPRT-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x1 unorm tfe1834; NOPRT-NEXT:    s_waitcnt vmcnt(0)1835; NOPRT-NEXT:    v_mov_b32_e32 v0, v11836; NOPRT-NEXT:    ; return to shader part epilog1837;1838; GFX10PLUS-LABEL: load_1d_V1_tfe_dmask0:1839; GFX10PLUS:       ; %bb.0: ; %main_body1840; GFX10PLUS-NEXT:    v_mov_b32_e32 v1, 01841; GFX10PLUS-NEXT:    v_mov_b32_e32 v2, v11842; GFX10PLUS-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe1843; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1844; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v21845; GFX10PLUS-NEXT:    ; return to shader part epilog1846;1847; GFX12-LABEL: load_1d_V1_tfe_dmask0:1848; GFX12:       ; %bb.0: ; %main_body1849; GFX12-NEXT:    v_mov_b32_e32 v1, 01850; GFX12-NEXT:    v_mov_b32_e32 v2, v11851; GFX12-NEXT:    image_load v[1:2], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D tfe1852; GFX12-NEXT:    s_wait_loadcnt 0x01853; GFX12-NEXT:    v_mov_b32_e32 v0, v21854; GFX12-NEXT:    ; return to shader part epilog1855main_body:1856  %v = call {float,i32} @llvm.amdgcn.image.load.1d.f32i32.i32(i32 0, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)1857  %v.err = extractvalue {float, i32} %v, 11858  %vv = bitcast i32 %v.err to float1859  ret float %vv1860}1861 1862define amdgpu_ps float @load_mip_2d_tfe_dmask0(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %mip) {1863; VERDE-LABEL: load_mip_2d_tfe_dmask0:1864; VERDE:       ; %bb.0: ; %main_body1865; VERDE-NEXT:    v_mov_b32_e32 v3, 01866; VERDE-NEXT:    v_mov_b32_e32 v4, v31867; VERDE-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1868; VERDE-NEXT:    s_waitcnt vmcnt(0)1869; VERDE-NEXT:    v_mov_b32_e32 v0, v41870; VERDE-NEXT:    ; return to shader part epilog1871;1872; FIJI-LABEL: load_mip_2d_tfe_dmask0:1873; FIJI:       ; %bb.0: ; %main_body1874; FIJI-NEXT:    v_mov_b32_e32 v3, 01875; FIJI-NEXT:    v_mov_b32_e32 v4, v31876; FIJI-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1877; FIJI-NEXT:    s_waitcnt vmcnt(0)1878; FIJI-NEXT:    v_mov_b32_e32 v0, v41879; FIJI-NEXT:    ; return to shader part epilog1880;1881; GFX6789-LABEL: load_mip_2d_tfe_dmask0:1882; GFX6789:       ; %bb.0: ; %main_body1883; GFX6789-NEXT:    v_mov_b32_e32 v3, 01884; GFX6789-NEXT:    v_mov_b32_e32 v4, v31885; GFX6789-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1886; GFX6789-NEXT:    s_waitcnt vmcnt(0)1887; GFX6789-NEXT:    v_mov_b32_e32 v0, v41888; GFX6789-NEXT:    ; return to shader part epilog1889;1890; NOPRT-LABEL: load_mip_2d_tfe_dmask0:1891; NOPRT:       ; %bb.0: ; %main_body1892; NOPRT-NEXT:    v_mov_b32_e32 v3, 01893; NOPRT-NEXT:    image_load_mip v[2:3], v[0:2], s[0:7] dmask:0x1 unorm tfe1894; NOPRT-NEXT:    s_waitcnt vmcnt(0)1895; NOPRT-NEXT:    v_mov_b32_e32 v0, v31896; NOPRT-NEXT:    ; return to shader part epilog1897;1898; GFX10PLUS-LABEL: load_mip_2d_tfe_dmask0:1899; GFX10PLUS:       ; %bb.0: ; %main_body1900; GFX10PLUS-NEXT:    v_mov_b32_e32 v3, 01901; GFX10PLUS-NEXT:    v_mov_b32_e32 v4, v31902; GFX10PLUS-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm tfe1903; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1904; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v41905; GFX10PLUS-NEXT:    ; return to shader part epilog1906;1907; GFX12-LABEL: load_mip_2d_tfe_dmask0:1908; GFX12:       ; %bb.0: ; %main_body1909; GFX12-NEXT:    v_mov_b32_e32 v3, 01910; GFX12-NEXT:    v_mov_b32_e32 v4, v31911; GFX12-NEXT:    image_load_mip v[3:4], [v0, v1, v2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D tfe1912; GFX12-NEXT:    s_wait_loadcnt 0x01913; GFX12-NEXT:    v_mov_b32_e32 v0, v41914; GFX12-NEXT:    ; return to shader part epilog1915main_body:1916  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.mip.2d.v4f32i32.i32(i32 0, i32 %s, i32 %t, i32 %mip, <8 x i32> %rsrc, i32 1, i32 0)1917  %v.err = extractvalue {<4 x float>, i32} %v, 11918  %vv = bitcast i32 %v.err to float1919  ret float %vv1920}1921 1922define amdgpu_ps float @load_mip_2d_tfe_nouse(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %mip) {1923; VERDE-LABEL: load_mip_2d_tfe_nouse:1924; VERDE:       ; %bb.0: ; %main_body1925; VERDE-NEXT:    v_mov_b32_e32 v3, 01926; VERDE-NEXT:    v_mov_b32_e32 v4, v31927; VERDE-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1928; VERDE-NEXT:    s_waitcnt vmcnt(0)1929; VERDE-NEXT:    v_mov_b32_e32 v0, v41930; VERDE-NEXT:    ; return to shader part epilog1931;1932; FIJI-LABEL: load_mip_2d_tfe_nouse:1933; FIJI:       ; %bb.0: ; %main_body1934; FIJI-NEXT:    v_mov_b32_e32 v3, 01935; FIJI-NEXT:    v_mov_b32_e32 v4, v31936; FIJI-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1937; FIJI-NEXT:    s_waitcnt vmcnt(0)1938; FIJI-NEXT:    v_mov_b32_e32 v0, v41939; FIJI-NEXT:    ; return to shader part epilog1940;1941; GFX6789-LABEL: load_mip_2d_tfe_nouse:1942; GFX6789:       ; %bb.0: ; %main_body1943; GFX6789-NEXT:    v_mov_b32_e32 v3, 01944; GFX6789-NEXT:    v_mov_b32_e32 v4, v31945; GFX6789-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1946; GFX6789-NEXT:    s_waitcnt vmcnt(0)1947; GFX6789-NEXT:    v_mov_b32_e32 v0, v41948; GFX6789-NEXT:    ; return to shader part epilog1949;1950; NOPRT-LABEL: load_mip_2d_tfe_nouse:1951; NOPRT:       ; %bb.0: ; %main_body1952; NOPRT-NEXT:    v_mov_b32_e32 v3, 01953; NOPRT-NEXT:    image_load_mip v[2:3], v[0:2], s[0:7] dmask:0x1 unorm tfe1954; NOPRT-NEXT:    s_waitcnt vmcnt(0)1955; NOPRT-NEXT:    v_mov_b32_e32 v0, v31956; NOPRT-NEXT:    ; return to shader part epilog1957;1958; GFX10PLUS-LABEL: load_mip_2d_tfe_nouse:1959; GFX10PLUS:       ; %bb.0: ; %main_body1960; GFX10PLUS-NEXT:    v_mov_b32_e32 v3, 01961; GFX10PLUS-NEXT:    v_mov_b32_e32 v4, v31962; GFX10PLUS-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm tfe1963; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)1964; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v41965; GFX10PLUS-NEXT:    ; return to shader part epilog1966;1967; GFX12-LABEL: load_mip_2d_tfe_nouse:1968; GFX12:       ; %bb.0: ; %main_body1969; GFX12-NEXT:    v_mov_b32_e32 v3, 01970; GFX12-NEXT:    v_mov_b32_e32 v4, v31971; GFX12-NEXT:    image_load_mip v[3:4], [v0, v1, v2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D tfe1972; GFX12-NEXT:    s_wait_loadcnt 0x01973; GFX12-NEXT:    v_mov_b32_e32 v0, v41974; GFX12-NEXT:    ; return to shader part epilog1975main_body:1976  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.mip.2d.v4f32i32.i32(i32 15, i32 %s, i32 %t, i32 %mip, <8 x i32> %rsrc, i32 1, i32 0)1977  %v.err = extractvalue {<4 x float>, i32} %v, 11978  %vv = bitcast i32 %v.err to float1979  ret float %vv1980}1981 1982define amdgpu_ps float @load_mip_2d_tfe_nouse_V2(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %mip) {1983; VERDE-LABEL: load_mip_2d_tfe_nouse_V2:1984; VERDE:       ; %bb.0: ; %main_body1985; VERDE-NEXT:    v_mov_b32_e32 v3, 01986; VERDE-NEXT:    v_mov_b32_e32 v4, v31987; VERDE-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1988; VERDE-NEXT:    s_waitcnt vmcnt(0)1989; VERDE-NEXT:    v_mov_b32_e32 v0, v41990; VERDE-NEXT:    ; return to shader part epilog1991;1992; FIJI-LABEL: load_mip_2d_tfe_nouse_V2:1993; FIJI:       ; %bb.0: ; %main_body1994; FIJI-NEXT:    v_mov_b32_e32 v3, 01995; FIJI-NEXT:    v_mov_b32_e32 v4, v31996; FIJI-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe1997; FIJI-NEXT:    s_waitcnt vmcnt(0)1998; FIJI-NEXT:    v_mov_b32_e32 v0, v41999; FIJI-NEXT:    ; return to shader part epilog2000;2001; GFX6789-LABEL: load_mip_2d_tfe_nouse_V2:2002; GFX6789:       ; %bb.0: ; %main_body2003; GFX6789-NEXT:    v_mov_b32_e32 v3, 02004; GFX6789-NEXT:    v_mov_b32_e32 v4, v32005; GFX6789-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 unorm tfe2006; GFX6789-NEXT:    s_waitcnt vmcnt(0)2007; GFX6789-NEXT:    v_mov_b32_e32 v0, v42008; GFX6789-NEXT:    ; return to shader part epilog2009;2010; NOPRT-LABEL: load_mip_2d_tfe_nouse_V2:2011; NOPRT:       ; %bb.0: ; %main_body2012; NOPRT-NEXT:    v_mov_b32_e32 v3, 02013; NOPRT-NEXT:    image_load_mip v[2:3], v[0:2], s[0:7] dmask:0x1 unorm tfe2014; NOPRT-NEXT:    s_waitcnt vmcnt(0)2015; NOPRT-NEXT:    v_mov_b32_e32 v0, v32016; NOPRT-NEXT:    ; return to shader part epilog2017;2018; GFX10PLUS-LABEL: load_mip_2d_tfe_nouse_V2:2019; GFX10PLUS:       ; %bb.0: ; %main_body2020; GFX10PLUS-NEXT:    v_mov_b32_e32 v3, 02021; GFX10PLUS-NEXT:    v_mov_b32_e32 v4, v32022; GFX10PLUS-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm tfe2023; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)2024; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v42025; GFX10PLUS-NEXT:    ; return to shader part epilog2026;2027; GFX12-LABEL: load_mip_2d_tfe_nouse_V2:2028; GFX12:       ; %bb.0: ; %main_body2029; GFX12-NEXT:    v_mov_b32_e32 v3, 02030; GFX12-NEXT:    v_mov_b32_e32 v4, v32031; GFX12-NEXT:    image_load_mip v[3:4], [v0, v1, v2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D tfe2032; GFX12-NEXT:    s_wait_loadcnt 0x02033; GFX12-NEXT:    v_mov_b32_e32 v0, v42034; GFX12-NEXT:    ; return to shader part epilog2035main_body:2036  %v = call {<2 x float>,i32} @llvm.amdgcn.image.load.mip.2d.v2f32i32.i32(i32 6, i32 %s, i32 %t, i32 %mip, <8 x i32> %rsrc, i32 1, i32 0)2037  %v.err = extractvalue {<2 x float>, i32} %v, 12038  %vv = bitcast i32 %v.err to float2039  ret float %vv2040}2041 2042define amdgpu_ps float @load_mip_2d_tfe_nouse_V1(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %mip) {2043; VERDE-LABEL: load_mip_2d_tfe_nouse_V1:2044; VERDE:       ; %bb.0: ; %main_body2045; VERDE-NEXT:    v_mov_b32_e32 v3, 02046; VERDE-NEXT:    v_mov_b32_e32 v4, v32047; VERDE-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x2 unorm tfe2048; VERDE-NEXT:    s_waitcnt vmcnt(0)2049; VERDE-NEXT:    v_mov_b32_e32 v0, v42050; VERDE-NEXT:    ; return to shader part epilog2051;2052; FIJI-LABEL: load_mip_2d_tfe_nouse_V1:2053; FIJI:       ; %bb.0: ; %main_body2054; FIJI-NEXT:    v_mov_b32_e32 v3, 02055; FIJI-NEXT:    v_mov_b32_e32 v4, v32056; FIJI-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x2 unorm tfe2057; FIJI-NEXT:    s_waitcnt vmcnt(0)2058; FIJI-NEXT:    v_mov_b32_e32 v0, v42059; FIJI-NEXT:    ; return to shader part epilog2060;2061; GFX6789-LABEL: load_mip_2d_tfe_nouse_V1:2062; GFX6789:       ; %bb.0: ; %main_body2063; GFX6789-NEXT:    v_mov_b32_e32 v3, 02064; GFX6789-NEXT:    v_mov_b32_e32 v4, v32065; GFX6789-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x2 unorm tfe2066; GFX6789-NEXT:    s_waitcnt vmcnt(0)2067; GFX6789-NEXT:    v_mov_b32_e32 v0, v42068; GFX6789-NEXT:    ; return to shader part epilog2069;2070; NOPRT-LABEL: load_mip_2d_tfe_nouse_V1:2071; NOPRT:       ; %bb.0: ; %main_body2072; NOPRT-NEXT:    v_mov_b32_e32 v3, 02073; NOPRT-NEXT:    image_load_mip v[2:3], v[0:2], s[0:7] dmask:0x2 unorm tfe2074; NOPRT-NEXT:    s_waitcnt vmcnt(0)2075; NOPRT-NEXT:    v_mov_b32_e32 v0, v32076; NOPRT-NEXT:    ; return to shader part epilog2077;2078; GFX10PLUS-LABEL: load_mip_2d_tfe_nouse_V1:2079; GFX10PLUS:       ; %bb.0: ; %main_body2080; GFX10PLUS-NEXT:    v_mov_b32_e32 v3, 02081; GFX10PLUS-NEXT:    v_mov_b32_e32 v4, v32082; GFX10PLUS-NEXT:    image_load_mip v[3:4], v[0:2], s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_2D unorm tfe2083; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)2084; GFX10PLUS-NEXT:    v_mov_b32_e32 v0, v42085; GFX10PLUS-NEXT:    ; return to shader part epilog2086;2087; GFX12-LABEL: load_mip_2d_tfe_nouse_V1:2088; GFX12:       ; %bb.0: ; %main_body2089; GFX12-NEXT:    v_mov_b32_e32 v3, 02090; GFX12-NEXT:    v_mov_b32_e32 v4, v32091; GFX12-NEXT:    image_load_mip v[3:4], [v0, v1, v2], s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_2D tfe2092; GFX12-NEXT:    s_wait_loadcnt 0x02093; GFX12-NEXT:    v_mov_b32_e32 v0, v42094; GFX12-NEXT:    ; return to shader part epilog2095main_body:2096  %v = call {float, i32} @llvm.amdgcn.image.load.mip.2d.f32i32.i32(i32 2, i32 %s, i32 %t, i32 %mip, <8 x i32> %rsrc, i32 1, i32 0)2097  %v.err = extractvalue {float, i32} %v, 12098  %vv = bitcast i32 %v.err to float2099  ret float %vv2100}2101 2102define amdgpu_ps <4 x float> @load_1d_tfe_V4_dmask3(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s) {2103; VERDE-LABEL: load_1d_tfe_V4_dmask3:2104; VERDE:       ; %bb.0: ; %main_body2105; VERDE-NEXT:    v_mov_b32_e32 v4, v02106; VERDE-NEXT:    v_mov_b32_e32 v0, 02107; VERDE-NEXT:    v_mov_b32_e32 v1, v02108; VERDE-NEXT:    v_mov_b32_e32 v2, v02109; VERDE-NEXT:    v_mov_b32_e32 v3, v02110; VERDE-NEXT:    image_load v[0:3], v4, s[0:7] dmask:0x7 unorm tfe2111; VERDE-NEXT:    s_mov_b32 s11, 0xf0002112; VERDE-NEXT:    s_mov_b32 s10, -12113; VERDE-NEXT:    s_waitcnt vmcnt(0)2114; VERDE-NEXT:    buffer_store_dword v3, off, s[8:11], 02115; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)2116; VERDE-NEXT:    ; return to shader part epilog2117;2118; FIJI-LABEL: load_1d_tfe_V4_dmask3:2119; FIJI:       ; %bb.0: ; %main_body2120; FIJI-NEXT:    v_mov_b32_e32 v4, v02121; FIJI-NEXT:    v_mov_b32_e32 v0, 02122; FIJI-NEXT:    v_mov_b32_e32 v1, v02123; FIJI-NEXT:    v_mov_b32_e32 v2, v02124; FIJI-NEXT:    v_mov_b32_e32 v3, v02125; FIJI-NEXT:    image_load v[0:3], v4, s[0:7] dmask:0x7 unorm tfe2126; FIJI-NEXT:    s_mov_b32 s11, 0xf0002127; FIJI-NEXT:    s_mov_b32 s10, -12128; FIJI-NEXT:    s_waitcnt vmcnt(0)2129; FIJI-NEXT:    buffer_store_dword v3, off, s[8:11], 02130; FIJI-NEXT:    s_waitcnt vmcnt(0)2131; FIJI-NEXT:    ; return to shader part epilog2132;2133; GFX6789-LABEL: load_1d_tfe_V4_dmask3:2134; GFX6789:       ; %bb.0: ; %main_body2135; GFX6789-NEXT:    v_mov_b32_e32 v5, 02136; GFX6789-NEXT:    v_mov_b32_e32 v4, v02137; GFX6789-NEXT:    v_mov_b32_e32 v6, v52138; GFX6789-NEXT:    v_mov_b32_e32 v7, v52139; GFX6789-NEXT:    v_mov_b32_e32 v8, v52140; GFX6789-NEXT:    v_mov_b32_e32 v0, v52141; GFX6789-NEXT:    v_mov_b32_e32 v1, v62142; GFX6789-NEXT:    v_mov_b32_e32 v2, v72143; GFX6789-NEXT:    v_mov_b32_e32 v3, v82144; GFX6789-NEXT:    image_load v[0:3], v4, s[0:7] dmask:0x7 unorm tfe2145; GFX6789-NEXT:    s_waitcnt vmcnt(0)2146; GFX6789-NEXT:    global_store_dword v5, v3, s[8:9]2147; GFX6789-NEXT:    s_waitcnt vmcnt(0)2148; GFX6789-NEXT:    ; return to shader part epilog2149;2150; NOPRT-LABEL: load_1d_tfe_V4_dmask3:2151; NOPRT:       ; %bb.0: ; %main_body2152; NOPRT-NEXT:    v_mov_b32_e32 v3, 02153; NOPRT-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0x7 unorm tfe2154; NOPRT-NEXT:    v_mov_b32_e32 v4, 02155; NOPRT-NEXT:    s_waitcnt vmcnt(0)2156; NOPRT-NEXT:    global_store_dword v4, v3, s[8:9]2157; NOPRT-NEXT:    s_waitcnt vmcnt(0)2158; NOPRT-NEXT:    ; return to shader part epilog2159;2160; GFX10-LABEL: load_1d_tfe_V4_dmask3:2161; GFX10:       ; %bb.0: ; %main_body2162; GFX10-NEXT:    v_mov_b32_e32 v5, 02163; GFX10-NEXT:    v_mov_b32_e32 v4, v02164; GFX10-NEXT:    v_mov_b32_e32 v6, v52165; GFX10-NEXT:    v_mov_b32_e32 v7, v52166; GFX10-NEXT:    v_mov_b32_e32 v8, v52167; GFX10-NEXT:    v_mov_b32_e32 v0, v52168; GFX10-NEXT:    v_mov_b32_e32 v1, v62169; GFX10-NEXT:    v_mov_b32_e32 v2, v72170; GFX10-NEXT:    v_mov_b32_e32 v3, v82171; GFX10-NEXT:    image_load v[0:3], v4, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm tfe2172; GFX10-NEXT:    s_waitcnt vmcnt(0)2173; GFX10-NEXT:    global_store_dword v5, v3, s[8:9]2174; GFX10-NEXT:    ; return to shader part epilog2175;2176; GFX11-LABEL: load_1d_tfe_V4_dmask3:2177; GFX11:       ; %bb.0: ; %main_body2178; GFX11-NEXT:    v_dual_mov_b32 v4, v0 :: v_dual_mov_b32 v5, 02179; GFX11-NEXT:    v_mov_b32_e32 v6, v52180; GFX11-NEXT:    v_mov_b32_e32 v7, v52181; GFX11-NEXT:    v_mov_b32_e32 v8, v52182; GFX11-NEXT:    v_dual_mov_b32 v0, v5 :: v_dual_mov_b32 v1, v62183; GFX11-NEXT:    v_dual_mov_b32 v2, v7 :: v_dual_mov_b32 v3, v82184; GFX11-NEXT:    image_load v[0:3], v4, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm tfe2185; GFX11-NEXT:    s_waitcnt vmcnt(0)2186; GFX11-NEXT:    global_store_b32 v5, v3, s[8:9]2187; GFX11-NEXT:    ; return to shader part epilog2188;2189; GFX12-LABEL: load_1d_tfe_V4_dmask3:2190; GFX12:       ; %bb.0: ; %main_body2191; GFX12-NEXT:    v_dual_mov_b32 v4, v0 :: v_dual_mov_b32 v5, 02192; GFX12-NEXT:    v_dual_mov_b32 v6, v5 :: v_dual_mov_b32 v7, v52193; GFX12-NEXT:    v_mov_b32_e32 v8, v52194; GFX12-NEXT:    v_dual_mov_b32 v0, v5 :: v_dual_mov_b32 v1, v62195; GFX12-NEXT:    v_dual_mov_b32 v2, v7 :: v_dual_mov_b32 v3, v82196; GFX12-NEXT:    image_load v[0:3], v4, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D tfe2197; GFX12-NEXT:    s_wait_loadcnt 0x02198; GFX12-NEXT:    global_store_b32 v5, v3, s[8:9]2199; GFX12-NEXT:    ; return to shader part epilog2200main_body:2201  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.1d.v4f32i32.i32(i32 7, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)2202  %v.vec = extractvalue {<4 x float>, i32} %v, 02203  %v.err = extractvalue {<4 x float>, i32} %v, 12204  store i32 %v.err, ptr addrspace(1) %out, align 42205  ret <4 x float> %v.vec2206}2207 2208define amdgpu_ps <4 x float> @load_1d_tfe_V4_dmask2(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s) {2209; VERDE-LABEL: load_1d_tfe_V4_dmask2:2210; VERDE:       ; %bb.0: ; %main_body2211; VERDE-NEXT:    v_mov_b32_e32 v3, v02212; VERDE-NEXT:    v_mov_b32_e32 v0, 02213; VERDE-NEXT:    v_mov_b32_e32 v1, v02214; VERDE-NEXT:    v_mov_b32_e32 v2, v02215; VERDE-NEXT:    image_load v[0:2], v3, s[0:7] dmask:0x6 unorm tfe2216; VERDE-NEXT:    s_mov_b32 s11, 0xf0002217; VERDE-NEXT:    s_mov_b32 s10, -12218; VERDE-NEXT:    s_waitcnt vmcnt(0)2219; VERDE-NEXT:    buffer_store_dword v2, off, s[8:11], 02220; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)2221; VERDE-NEXT:    ; return to shader part epilog2222;2223; FIJI-LABEL: load_1d_tfe_V4_dmask2:2224; FIJI:       ; %bb.0: ; %main_body2225; FIJI-NEXT:    v_mov_b32_e32 v3, v02226; FIJI-NEXT:    v_mov_b32_e32 v0, 02227; FIJI-NEXT:    v_mov_b32_e32 v1, v02228; FIJI-NEXT:    v_mov_b32_e32 v2, v02229; FIJI-NEXT:    image_load v[0:2], v3, s[0:7] dmask:0x6 unorm tfe2230; FIJI-NEXT:    s_mov_b32 s11, 0xf0002231; FIJI-NEXT:    s_mov_b32 s10, -12232; FIJI-NEXT:    s_waitcnt vmcnt(0)2233; FIJI-NEXT:    buffer_store_dword v2, off, s[8:11], 02234; FIJI-NEXT:    s_waitcnt vmcnt(0)2235; FIJI-NEXT:    ; return to shader part epilog2236;2237; GFX6789-LABEL: load_1d_tfe_V4_dmask2:2238; GFX6789:       ; %bb.0: ; %main_body2239; GFX6789-NEXT:    v_mov_b32_e32 v4, 02240; GFX6789-NEXT:    v_mov_b32_e32 v3, v02241; GFX6789-NEXT:    v_mov_b32_e32 v5, v42242; GFX6789-NEXT:    v_mov_b32_e32 v6, v42243; GFX6789-NEXT:    v_mov_b32_e32 v0, v42244; GFX6789-NEXT:    v_mov_b32_e32 v1, v52245; GFX6789-NEXT:    v_mov_b32_e32 v2, v62246; GFX6789-NEXT:    image_load v[0:2], v3, s[0:7] dmask:0x6 unorm tfe2247; GFX6789-NEXT:    s_waitcnt vmcnt(0)2248; GFX6789-NEXT:    global_store_dword v4, v2, s[8:9]2249; GFX6789-NEXT:    s_waitcnt vmcnt(0)2250; GFX6789-NEXT:    ; return to shader part epilog2251;2252; NOPRT-LABEL: load_1d_tfe_V4_dmask2:2253; NOPRT:       ; %bb.0: ; %main_body2254; NOPRT-NEXT:    v_mov_b32_e32 v2, 02255; NOPRT-NEXT:    image_load v[0:2], v0, s[0:7] dmask:0x6 unorm tfe2256; NOPRT-NEXT:    v_mov_b32_e32 v3, 02257; NOPRT-NEXT:    s_waitcnt vmcnt(0)2258; NOPRT-NEXT:    global_store_dword v3, v2, s[8:9]2259; NOPRT-NEXT:    s_waitcnt vmcnt(0)2260; NOPRT-NEXT:    ; return to shader part epilog2261;2262; GFX10-LABEL: load_1d_tfe_V4_dmask2:2263; GFX10:       ; %bb.0: ; %main_body2264; GFX10-NEXT:    v_mov_b32_e32 v4, 02265; GFX10-NEXT:    v_mov_b32_e32 v3, v02266; GFX10-NEXT:    v_mov_b32_e32 v5, v42267; GFX10-NEXT:    v_mov_b32_e32 v6, v42268; GFX10-NEXT:    v_mov_b32_e32 v0, v42269; GFX10-NEXT:    v_mov_b32_e32 v1, v52270; GFX10-NEXT:    v_mov_b32_e32 v2, v62271; GFX10-NEXT:    image_load v[0:2], v3, s[0:7] dmask:0x6 dim:SQ_RSRC_IMG_1D unorm tfe2272; GFX10-NEXT:    s_waitcnt vmcnt(0)2273; GFX10-NEXT:    global_store_dword v4, v2, s[8:9]2274; GFX10-NEXT:    ; return to shader part epilog2275;2276; GFX11-LABEL: load_1d_tfe_V4_dmask2:2277; GFX11:       ; %bb.0: ; %main_body2278; GFX11-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_mov_b32 v4, 02279; GFX11-NEXT:    v_mov_b32_e32 v5, v42280; GFX11-NEXT:    v_mov_b32_e32 v6, v42281; GFX11-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v52282; GFX11-NEXT:    v_mov_b32_e32 v2, v62283; GFX11-NEXT:    image_load v[0:2], v3, s[0:7] dmask:0x6 dim:SQ_RSRC_IMG_1D unorm tfe2284; GFX11-NEXT:    s_waitcnt vmcnt(0)2285; GFX11-NEXT:    global_store_b32 v4, v2, s[8:9]2286; GFX11-NEXT:    ; return to shader part epilog2287;2288; GFX12-LABEL: load_1d_tfe_V4_dmask2:2289; GFX12:       ; %bb.0: ; %main_body2290; GFX12-NEXT:    v_dual_mov_b32 v3, v0 :: v_dual_mov_b32 v4, 02291; GFX12-NEXT:    v_dual_mov_b32 v5, v4 :: v_dual_mov_b32 v6, v42292; GFX12-NEXT:    v_dual_mov_b32 v0, v4 :: v_dual_mov_b32 v1, v52293; GFX12-NEXT:    v_mov_b32_e32 v2, v62294; GFX12-NEXT:    image_load v[0:2], v3, s[0:7] dmask:0x6 dim:SQ_RSRC_IMG_1D tfe2295; GFX12-NEXT:    s_wait_loadcnt 0x02296; GFX12-NEXT:    global_store_b32 v4, v2, s[8:9]2297; GFX12-NEXT:    ; return to shader part epilog2298main_body:2299  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.1d.v4f32i32.i32(i32 6, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)2300  %v.vec = extractvalue {<4 x float>, i32} %v, 02301  %v.err = extractvalue {<4 x float>, i32} %v, 12302  store i32 %v.err, ptr addrspace(1) %out, align 42303  ret <4 x float> %v.vec2304}2305 2306define amdgpu_ps <4 x float> @load_1d_tfe_V4_dmask1(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s) {2307; VERDE-LABEL: load_1d_tfe_V4_dmask1:2308; VERDE:       ; %bb.0: ; %main_body2309; VERDE-NEXT:    v_mov_b32_e32 v2, v02310; VERDE-NEXT:    v_mov_b32_e32 v0, 02311; VERDE-NEXT:    v_mov_b32_e32 v1, v02312; VERDE-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 unorm tfe2313; VERDE-NEXT:    s_mov_b32 s11, 0xf0002314; VERDE-NEXT:    s_mov_b32 s10, -12315; VERDE-NEXT:    s_waitcnt vmcnt(0)2316; VERDE-NEXT:    buffer_store_dword v1, off, s[8:11], 02317; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)2318; VERDE-NEXT:    ; return to shader part epilog2319;2320; FIJI-LABEL: load_1d_tfe_V4_dmask1:2321; FIJI:       ; %bb.0: ; %main_body2322; FIJI-NEXT:    v_mov_b32_e32 v2, v02323; FIJI-NEXT:    v_mov_b32_e32 v0, 02324; FIJI-NEXT:    v_mov_b32_e32 v1, v02325; FIJI-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 unorm tfe2326; FIJI-NEXT:    s_mov_b32 s11, 0xf0002327; FIJI-NEXT:    s_mov_b32 s10, -12328; FIJI-NEXT:    s_waitcnt vmcnt(0)2329; FIJI-NEXT:    buffer_store_dword v1, off, s[8:11], 02330; FIJI-NEXT:    s_waitcnt vmcnt(0)2331; FIJI-NEXT:    ; return to shader part epilog2332;2333; GFX6789-LABEL: load_1d_tfe_V4_dmask1:2334; GFX6789:       ; %bb.0: ; %main_body2335; GFX6789-NEXT:    v_mov_b32_e32 v3, 02336; GFX6789-NEXT:    v_mov_b32_e32 v2, v02337; GFX6789-NEXT:    v_mov_b32_e32 v4, v32338; GFX6789-NEXT:    v_mov_b32_e32 v0, v32339; GFX6789-NEXT:    v_mov_b32_e32 v1, v42340; GFX6789-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 unorm tfe2341; GFX6789-NEXT:    s_waitcnt vmcnt(0)2342; GFX6789-NEXT:    global_store_dword v3, v1, s[8:9]2343; GFX6789-NEXT:    s_waitcnt vmcnt(0)2344; GFX6789-NEXT:    ; return to shader part epilog2345;2346; NOPRT-LABEL: load_1d_tfe_V4_dmask1:2347; NOPRT:       ; %bb.0: ; %main_body2348; NOPRT-NEXT:    v_mov_b32_e32 v1, 02349; NOPRT-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x8 unorm tfe2350; NOPRT-NEXT:    v_mov_b32_e32 v2, 02351; NOPRT-NEXT:    s_waitcnt vmcnt(0)2352; NOPRT-NEXT:    global_store_dword v2, v1, s[8:9]2353; NOPRT-NEXT:    s_waitcnt vmcnt(0)2354; NOPRT-NEXT:    ; return to shader part epilog2355;2356; GFX10-LABEL: load_1d_tfe_V4_dmask1:2357; GFX10:       ; %bb.0: ; %main_body2358; GFX10-NEXT:    v_mov_b32_e32 v3, 02359; GFX10-NEXT:    v_mov_b32_e32 v2, v02360; GFX10-NEXT:    v_mov_b32_e32 v4, v32361; GFX10-NEXT:    v_mov_b32_e32 v0, v32362; GFX10-NEXT:    v_mov_b32_e32 v1, v42363; GFX10-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm tfe2364; GFX10-NEXT:    s_waitcnt vmcnt(0)2365; GFX10-NEXT:    global_store_dword v3, v1, s[8:9]2366; GFX10-NEXT:    ; return to shader part epilog2367;2368; GFX11-LABEL: load_1d_tfe_V4_dmask1:2369; GFX11:       ; %bb.0: ; %main_body2370; GFX11-NEXT:    v_dual_mov_b32 v2, v0 :: v_dual_mov_b32 v3, 02371; GFX11-NEXT:    v_mov_b32_e32 v4, v32372; GFX11-NEXT:    v_dual_mov_b32 v0, v3 :: v_dual_mov_b32 v1, v42373; GFX11-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm tfe2374; GFX11-NEXT:    s_waitcnt vmcnt(0)2375; GFX11-NEXT:    global_store_b32 v3, v1, s[8:9]2376; GFX11-NEXT:    ; return to shader part epilog2377;2378; GFX12-LABEL: load_1d_tfe_V4_dmask1:2379; GFX12:       ; %bb.0: ; %main_body2380; GFX12-NEXT:    v_dual_mov_b32 v2, v0 :: v_dual_mov_b32 v3, 02381; GFX12-NEXT:    v_mov_b32_e32 v4, v32382; GFX12-NEXT:    v_dual_mov_b32 v0, v3 :: v_dual_mov_b32 v1, v42383; GFX12-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D tfe2384; GFX12-NEXT:    s_wait_loadcnt 0x02385; GFX12-NEXT:    global_store_b32 v3, v1, s[8:9]2386; GFX12-NEXT:    ; return to shader part epilog2387main_body:2388  %v = call {<4 x float>,i32} @llvm.amdgcn.image.load.1d.v4f32i32.i32(i32 8, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)2389  %v.vec = extractvalue {<4 x float>, i32} %v, 02390  %v.err = extractvalue {<4 x float>, i32} %v, 12391  store i32 %v.err, ptr addrspace(1) %out, align 42392  ret <4 x float> %v.vec2393}2394 2395define amdgpu_ps <2 x float> @load_1d_tfe_V2_dmask1(<8 x i32> inreg %rsrc, ptr addrspace(1) inreg %out, i32 %s) {2396; VERDE-LABEL: load_1d_tfe_V2_dmask1:2397; VERDE:       ; %bb.0: ; %main_body2398; VERDE-NEXT:    v_mov_b32_e32 v2, v02399; VERDE-NEXT:    v_mov_b32_e32 v0, 02400; VERDE-NEXT:    v_mov_b32_e32 v1, v02401; VERDE-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 unorm tfe2402; VERDE-NEXT:    s_mov_b32 s11, 0xf0002403; VERDE-NEXT:    s_mov_b32 s10, -12404; VERDE-NEXT:    s_waitcnt vmcnt(0)2405; VERDE-NEXT:    buffer_store_dword v1, off, s[8:11], 02406; VERDE-NEXT:    s_waitcnt vmcnt(0) expcnt(0)2407; VERDE-NEXT:    ; return to shader part epilog2408;2409; FIJI-LABEL: load_1d_tfe_V2_dmask1:2410; FIJI:       ; %bb.0: ; %main_body2411; FIJI-NEXT:    v_mov_b32_e32 v2, v02412; FIJI-NEXT:    v_mov_b32_e32 v0, 02413; FIJI-NEXT:    v_mov_b32_e32 v1, v02414; FIJI-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 unorm tfe2415; FIJI-NEXT:    s_mov_b32 s11, 0xf0002416; FIJI-NEXT:    s_mov_b32 s10, -12417; FIJI-NEXT:    s_waitcnt vmcnt(0)2418; FIJI-NEXT:    buffer_store_dword v1, off, s[8:11], 02419; FIJI-NEXT:    s_waitcnt vmcnt(0)2420; FIJI-NEXT:    ; return to shader part epilog2421;2422; GFX6789-LABEL: load_1d_tfe_V2_dmask1:2423; GFX6789:       ; %bb.0: ; %main_body2424; GFX6789-NEXT:    v_mov_b32_e32 v3, 02425; GFX6789-NEXT:    v_mov_b32_e32 v2, v02426; GFX6789-NEXT:    v_mov_b32_e32 v4, v32427; GFX6789-NEXT:    v_mov_b32_e32 v0, v32428; GFX6789-NEXT:    v_mov_b32_e32 v1, v42429; GFX6789-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 unorm tfe2430; GFX6789-NEXT:    s_waitcnt vmcnt(0)2431; GFX6789-NEXT:    global_store_dword v3, v1, s[8:9]2432; GFX6789-NEXT:    s_waitcnt vmcnt(0)2433; GFX6789-NEXT:    ; return to shader part epilog2434;2435; NOPRT-LABEL: load_1d_tfe_V2_dmask1:2436; NOPRT:       ; %bb.0: ; %main_body2437; NOPRT-NEXT:    v_mov_b32_e32 v1, 02438; NOPRT-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x8 unorm tfe2439; NOPRT-NEXT:    v_mov_b32_e32 v2, 02440; NOPRT-NEXT:    s_waitcnt vmcnt(0)2441; NOPRT-NEXT:    global_store_dword v2, v1, s[8:9]2442; NOPRT-NEXT:    s_waitcnt vmcnt(0)2443; NOPRT-NEXT:    ; return to shader part epilog2444;2445; GFX10-LABEL: load_1d_tfe_V2_dmask1:2446; GFX10:       ; %bb.0: ; %main_body2447; GFX10-NEXT:    v_mov_b32_e32 v3, 02448; GFX10-NEXT:    v_mov_b32_e32 v2, v02449; GFX10-NEXT:    v_mov_b32_e32 v4, v32450; GFX10-NEXT:    v_mov_b32_e32 v0, v32451; GFX10-NEXT:    v_mov_b32_e32 v1, v42452; GFX10-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm tfe2453; GFX10-NEXT:    s_waitcnt vmcnt(0)2454; GFX10-NEXT:    global_store_dword v3, v1, s[8:9]2455; GFX10-NEXT:    ; return to shader part epilog2456;2457; GFX11-LABEL: load_1d_tfe_V2_dmask1:2458; GFX11:       ; %bb.0: ; %main_body2459; GFX11-NEXT:    v_dual_mov_b32 v2, v0 :: v_dual_mov_b32 v3, 02460; GFX11-NEXT:    v_mov_b32_e32 v4, v32461; GFX11-NEXT:    v_dual_mov_b32 v0, v3 :: v_dual_mov_b32 v1, v42462; GFX11-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm tfe2463; GFX11-NEXT:    s_waitcnt vmcnt(0)2464; GFX11-NEXT:    global_store_b32 v3, v1, s[8:9]2465; GFX11-NEXT:    ; return to shader part epilog2466;2467; GFX12-LABEL: load_1d_tfe_V2_dmask1:2468; GFX12:       ; %bb.0: ; %main_body2469; GFX12-NEXT:    v_dual_mov_b32 v2, v0 :: v_dual_mov_b32 v3, 02470; GFX12-NEXT:    v_mov_b32_e32 v4, v32471; GFX12-NEXT:    v_dual_mov_b32 v0, v3 :: v_dual_mov_b32 v1, v42472; GFX12-NEXT:    image_load v[0:1], v2, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D tfe2473; GFX12-NEXT:    s_wait_loadcnt 0x02474; GFX12-NEXT:    global_store_b32 v3, v1, s[8:9]2475; GFX12-NEXT:    ; return to shader part epilog2476main_body:2477  %v = call {<2 x float>,i32} @llvm.amdgcn.image.load.1d.v2f32i32.i32(i32 8, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)2478  %v.vec = extractvalue {<2 x float>, i32} %v, 02479  %v.err = extractvalue {<2 x float>, i32} %v, 12480  store i32 %v.err, ptr addrspace(1) %out, align 42481  ret <2 x float> %v.vec2482}2483 2484 2485define amdgpu_ps <4 x float> @load_mip_3d(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %r, i32 %mip) {2486; VERDE-LABEL: load_mip_3d:2487; VERDE:       ; %bb.0: ; %main_body2488; VERDE-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm2489; VERDE-NEXT:    s_waitcnt vmcnt(0)2490; VERDE-NEXT:    ; return to shader part epilog2491;2492; FIJI-LABEL: load_mip_3d:2493; FIJI:       ; %bb.0: ; %main_body2494; FIJI-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm2495; FIJI-NEXT:    s_waitcnt vmcnt(0)2496; FIJI-NEXT:    ; return to shader part epilog2497;2498; GFX6789-LABEL: load_mip_3d:2499; GFX6789:       ; %bb.0: ; %main_body2500; GFX6789-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm2501; GFX6789-NEXT:    s_waitcnt vmcnt(0)2502; GFX6789-NEXT:    ; return to shader part epilog2503;2504; NOPRT-LABEL: load_mip_3d:2505; NOPRT:       ; %bb.0: ; %main_body2506; NOPRT-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm2507; NOPRT-NEXT:    s_waitcnt vmcnt(0)2508; NOPRT-NEXT:    ; return to shader part epilog2509;2510; GFX10PLUS-LABEL: load_mip_3d:2511; GFX10PLUS:       ; %bb.0: ; %main_body2512; GFX10PLUS-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm2513; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)2514; GFX10PLUS-NEXT:    ; return to shader part epilog2515;2516; GFX12-LABEL: load_mip_3d:2517; GFX12:       ; %bb.0: ; %main_body2518; GFX12-NEXT:    image_load_mip v[0:3], [v0, v1, v2, v3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D2519; GFX12-NEXT:    s_wait_loadcnt 0x02520; GFX12-NEXT:    ; return to shader part epilog2521main_body:2522  %v = call <4 x float> @llvm.amdgcn.image.load.mip.3d.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %r, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)2523  ret <4 x float> %v2524}2525 2526define amdgpu_ps <4 x float> @load_mip_cube(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %slice, i32 %mip) {2527; VERDE-LABEL: load_mip_cube:2528; VERDE:       ; %bb.0: ; %main_body2529; VERDE-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2530; VERDE-NEXT:    s_waitcnt vmcnt(0)2531; VERDE-NEXT:    ; return to shader part epilog2532;2533; FIJI-LABEL: load_mip_cube:2534; FIJI:       ; %bb.0: ; %main_body2535; FIJI-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2536; FIJI-NEXT:    s_waitcnt vmcnt(0)2537; FIJI-NEXT:    ; return to shader part epilog2538;2539; GFX6789-LABEL: load_mip_cube:2540; GFX6789:       ; %bb.0: ; %main_body2541; GFX6789-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2542; GFX6789-NEXT:    s_waitcnt vmcnt(0)2543; GFX6789-NEXT:    ; return to shader part epilog2544;2545; NOPRT-LABEL: load_mip_cube:2546; NOPRT:       ; %bb.0: ; %main_body2547; NOPRT-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2548; NOPRT-NEXT:    s_waitcnt vmcnt(0)2549; NOPRT-NEXT:    ; return to shader part epilog2550;2551; GFX10PLUS-LABEL: load_mip_cube:2552; GFX10PLUS:       ; %bb.0: ; %main_body2553; GFX10PLUS-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm2554; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)2555; GFX10PLUS-NEXT:    ; return to shader part epilog2556;2557; GFX12-LABEL: load_mip_cube:2558; GFX12:       ; %bb.0: ; %main_body2559; GFX12-NEXT:    image_load_mip v[0:3], [v0, v1, v2, v3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE2560; GFX12-NEXT:    s_wait_loadcnt 0x02561; GFX12-NEXT:    ; return to shader part epilog2562main_body:2563  %v = call <4 x float> @llvm.amdgcn.image.load.mip.cube.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %slice, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)2564  ret <4 x float> %v2565}2566 2567define amdgpu_ps <4 x float> @load_mip_1darray(<8 x i32> inreg %rsrc, i32 %s, i32 %slice, i32 %mip) {2568; VERDE-LABEL: load_mip_1darray:2569; VERDE:       ; %bb.0: ; %main_body2570; VERDE-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm da2571; VERDE-NEXT:    s_waitcnt vmcnt(0)2572; VERDE-NEXT:    ; return to shader part epilog2573;2574; FIJI-LABEL: load_mip_1darray:2575; FIJI:       ; %bb.0: ; %main_body2576; FIJI-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm da2577; FIJI-NEXT:    s_waitcnt vmcnt(0)2578; FIJI-NEXT:    ; return to shader part epilog2579;2580; GFX6789-LABEL: load_mip_1darray:2581; GFX6789:       ; %bb.0: ; %main_body2582; GFX6789-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm da2583; GFX6789-NEXT:    s_waitcnt vmcnt(0)2584; GFX6789-NEXT:    ; return to shader part epilog2585;2586; NOPRT-LABEL: load_mip_1darray:2587; NOPRT:       ; %bb.0: ; %main_body2588; NOPRT-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf unorm da2589; NOPRT-NEXT:    s_waitcnt vmcnt(0)2590; NOPRT-NEXT:    ; return to shader part epilog2591;2592; GFX10PLUS-LABEL: load_mip_1darray:2593; GFX10PLUS:       ; %bb.0: ; %main_body2594; GFX10PLUS-NEXT:    image_load_mip v[0:3], v[0:2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm2595; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)2596; GFX10PLUS-NEXT:    ; return to shader part epilog2597;2598; GFX12-LABEL: load_mip_1darray:2599; GFX12:       ; %bb.0: ; %main_body2600; GFX12-NEXT:    image_load_mip v[0:3], [v0, v1, v2], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY2601; GFX12-NEXT:    s_wait_loadcnt 0x02602; GFX12-NEXT:    ; return to shader part epilog2603main_body:2604  %v = call <4 x float> @llvm.amdgcn.image.load.mip.1darray.v4f32.i32(i32 15, i32 %s, i32 %slice, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)2605  ret <4 x float> %v2606}2607 2608define amdgpu_ps <4 x float> @load_mip_2darray(<8 x i32> inreg %rsrc, i32 %s, i32 %t, i32 %slice, i32 %mip) {2609; VERDE-LABEL: load_mip_2darray:2610; VERDE:       ; %bb.0: ; %main_body2611; VERDE-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2612; VERDE-NEXT:    s_waitcnt vmcnt(0)2613; VERDE-NEXT:    ; return to shader part epilog2614;2615; FIJI-LABEL: load_mip_2darray:2616; FIJI:       ; %bb.0: ; %main_body2617; FIJI-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2618; FIJI-NEXT:    s_waitcnt vmcnt(0)2619; FIJI-NEXT:    ; return to shader part epilog2620;2621; GFX6789-LABEL: load_mip_2darray:2622; GFX6789:       ; %bb.0: ; %main_body2623; GFX6789-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2624; GFX6789-NEXT:    s_waitcnt vmcnt(0)2625; GFX6789-NEXT:    ; return to shader part epilog2626;2627; NOPRT-LABEL: load_mip_2darray:2628; NOPRT:       ; %bb.0: ; %main_body2629; NOPRT-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf unorm da2630; NOPRT-NEXT:    s_waitcnt vmcnt(0)2631; NOPRT-NEXT:    ; return to shader part epilog2632;2633; GFX10PLUS-LABEL: load_mip_2darray:2634; GFX10PLUS:       ; %bb.0: ; %main_body2635; GFX10PLUS-NEXT:    image_load_mip v[0:3], v[0:3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm2636; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)2637; GFX10PLUS-NEXT:    ; return to shader part epilog2638;2639; GFX12-LABEL: load_mip_2darray:2640; GFX12:       ; %bb.0: ; %main_body2641; GFX12-NEXT:    image_load_mip v[0:3], [v0, v1, v2, v3], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY2642; GFX12-NEXT:    s_wait_loadcnt 0x02643; GFX12-NEXT:    ; return to shader part epilog2644main_body:2645  %v = call <4 x float> @llvm.amdgcn.image.load.mip.2darray.v4f32.i32(i32 15, i32 %s, i32 %t, i32 %slice, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)2646  ret <4 x float> %v2647}2648 2649define amdgpu_ps void @store_1d(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s) {2650; VERDE-LABEL: store_1d:2651; VERDE:       ; %bb.0: ; %main_body2652; VERDE-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm2653; VERDE-NEXT:    s_endpgm2654;2655; FIJI-LABEL: store_1d:2656; FIJI:       ; %bb.0: ; %main_body2657; FIJI-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm2658; FIJI-NEXT:    s_endpgm2659;2660; GFX6789-LABEL: store_1d:2661; GFX6789:       ; %bb.0: ; %main_body2662; GFX6789-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm2663; GFX6789-NEXT:    s_endpgm2664;2665; NOPRT-LABEL: store_1d:2666; NOPRT:       ; %bb.0: ; %main_body2667; NOPRT-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm2668; NOPRT-NEXT:    s_endpgm2669;2670; GFX10PLUS-LABEL: store_1d:2671; GFX10PLUS:       ; %bb.0: ; %main_body2672; GFX10PLUS-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm2673; GFX10PLUS-NEXT:    s_endpgm2674;2675; GFX12-LABEL: store_1d:2676; GFX12:       ; %bb.0: ; %main_body2677; GFX12-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D2678; GFX12-NEXT:    s_endpgm2679main_body:2680  call void @llvm.amdgcn.image.store.1d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)2681  ret void2682}2683 2684define amdgpu_ps void @store_2d(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t) {2685; VERDE-LABEL: store_2d:2686; VERDE:       ; %bb.0: ; %main_body2687; VERDE-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm2688; VERDE-NEXT:    s_endpgm2689;2690; FIJI-LABEL: store_2d:2691; FIJI:       ; %bb.0: ; %main_body2692; FIJI-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm2693; FIJI-NEXT:    s_endpgm2694;2695; GFX6789-LABEL: store_2d:2696; GFX6789:       ; %bb.0: ; %main_body2697; GFX6789-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm2698; GFX6789-NEXT:    s_endpgm2699;2700; NOPRT-LABEL: store_2d:2701; NOPRT:       ; %bb.0: ; %main_body2702; NOPRT-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm2703; NOPRT-NEXT:    s_endpgm2704;2705; GFX10PLUS-LABEL: store_2d:2706; GFX10PLUS:       ; %bb.0: ; %main_body2707; GFX10PLUS-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm2708; GFX10PLUS-NEXT:    s_endpgm2709;2710; GFX12-LABEL: store_2d:2711; GFX12:       ; %bb.0: ; %main_body2712; GFX12-NEXT:    image_store v[0:3], [v4, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D2713; GFX12-NEXT:    s_endpgm2714main_body:2715  call void @llvm.amdgcn.image.store.2d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, <8 x i32> %rsrc, i32 0, i32 0)2716  ret void2717}2718 2719define amdgpu_ps void @store_3d(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %r) {2720; VERDE-LABEL: store_3d:2721; VERDE:       ; %bb.0: ; %main_body2722; VERDE-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2723; VERDE-NEXT:    s_endpgm2724;2725; FIJI-LABEL: store_3d:2726; FIJI:       ; %bb.0: ; %main_body2727; FIJI-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2728; FIJI-NEXT:    s_endpgm2729;2730; GFX6789-LABEL: store_3d:2731; GFX6789:       ; %bb.0: ; %main_body2732; GFX6789-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2733; GFX6789-NEXT:    s_endpgm2734;2735; NOPRT-LABEL: store_3d:2736; NOPRT:       ; %bb.0: ; %main_body2737; NOPRT-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2738; NOPRT-NEXT:    s_endpgm2739;2740; GFX10PLUS-LABEL: store_3d:2741; GFX10PLUS:       ; %bb.0: ; %main_body2742; GFX10PLUS-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm2743; GFX10PLUS-NEXT:    s_endpgm2744;2745; GFX12-LABEL: store_3d:2746; GFX12:       ; %bb.0: ; %main_body2747; GFX12-NEXT:    image_store v[0:3], [v4, v5, v6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D2748; GFX12-NEXT:    s_endpgm2749main_body:2750  call void @llvm.amdgcn.image.store.3d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %r, <8 x i32> %rsrc, i32 0, i32 0)2751  ret void2752}2753 2754define amdgpu_ps void @store_cube(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %slice) {2755; VERDE-LABEL: store_cube:2756; VERDE:       ; %bb.0: ; %main_body2757; VERDE-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2758; VERDE-NEXT:    s_endpgm2759;2760; FIJI-LABEL: store_cube:2761; FIJI:       ; %bb.0: ; %main_body2762; FIJI-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2763; FIJI-NEXT:    s_endpgm2764;2765; GFX6789-LABEL: store_cube:2766; GFX6789:       ; %bb.0: ; %main_body2767; GFX6789-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2768; GFX6789-NEXT:    s_endpgm2769;2770; NOPRT-LABEL: store_cube:2771; NOPRT:       ; %bb.0: ; %main_body2772; NOPRT-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2773; NOPRT-NEXT:    s_endpgm2774;2775; GFX10PLUS-LABEL: store_cube:2776; GFX10PLUS:       ; %bb.0: ; %main_body2777; GFX10PLUS-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm2778; GFX10PLUS-NEXT:    s_endpgm2779;2780; GFX12-LABEL: store_cube:2781; GFX12:       ; %bb.0: ; %main_body2782; GFX12-NEXT:    image_store v[0:3], [v4, v5, v6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE2783; GFX12-NEXT:    s_endpgm2784main_body:2785  call void @llvm.amdgcn.image.store.cube.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %slice, <8 x i32> %rsrc, i32 0, i32 0)2786  ret void2787}2788 2789define amdgpu_ps void @store_1darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %slice) {2790; VERDE-LABEL: store_1darray:2791; VERDE:       ; %bb.0: ; %main_body2792; VERDE-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm da2793; VERDE-NEXT:    s_endpgm2794;2795; FIJI-LABEL: store_1darray:2796; FIJI:       ; %bb.0: ; %main_body2797; FIJI-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm da2798; FIJI-NEXT:    s_endpgm2799;2800; GFX6789-LABEL: store_1darray:2801; GFX6789:       ; %bb.0: ; %main_body2802; GFX6789-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm da2803; GFX6789-NEXT:    s_endpgm2804;2805; NOPRT-LABEL: store_1darray:2806; NOPRT:       ; %bb.0: ; %main_body2807; NOPRT-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf unorm da2808; NOPRT-NEXT:    s_endpgm2809;2810; GFX10PLUS-LABEL: store_1darray:2811; GFX10PLUS:       ; %bb.0: ; %main_body2812; GFX10PLUS-NEXT:    image_store v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm2813; GFX10PLUS-NEXT:    s_endpgm2814;2815; GFX12-LABEL: store_1darray:2816; GFX12:       ; %bb.0: ; %main_body2817; GFX12-NEXT:    image_store v[0:3], [v4, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY2818; GFX12-NEXT:    s_endpgm2819main_body:2820  call void @llvm.amdgcn.image.store.1darray.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %slice, <8 x i32> %rsrc, i32 0, i32 0)2821  ret void2822}2823 2824define amdgpu_ps void @store_2darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %slice) {2825; VERDE-LABEL: store_2darray:2826; VERDE:       ; %bb.0: ; %main_body2827; VERDE-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2828; VERDE-NEXT:    s_endpgm2829;2830; FIJI-LABEL: store_2darray:2831; FIJI:       ; %bb.0: ; %main_body2832; FIJI-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2833; FIJI-NEXT:    s_endpgm2834;2835; GFX6789-LABEL: store_2darray:2836; GFX6789:       ; %bb.0: ; %main_body2837; GFX6789-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2838; GFX6789-NEXT:    s_endpgm2839;2840; NOPRT-LABEL: store_2darray:2841; NOPRT:       ; %bb.0: ; %main_body2842; NOPRT-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm da2843; NOPRT-NEXT:    s_endpgm2844;2845; GFX10PLUS-LABEL: store_2darray:2846; GFX10PLUS:       ; %bb.0: ; %main_body2847; GFX10PLUS-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm2848; GFX10PLUS-NEXT:    s_endpgm2849;2850; GFX12-LABEL: store_2darray:2851; GFX12:       ; %bb.0: ; %main_body2852; GFX12-NEXT:    image_store v[0:3], [v4, v5, v6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY2853; GFX12-NEXT:    s_endpgm2854main_body:2855  call void @llvm.amdgcn.image.store.2darray.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %slice, <8 x i32> %rsrc, i32 0, i32 0)2856  ret void2857}2858 2859define amdgpu_ps void @store_2dmsaa(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %fragid) {2860; VERDE-LABEL: store_2dmsaa:2861; VERDE:       ; %bb.0: ; %main_body2862; VERDE-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2863; VERDE-NEXT:    s_endpgm2864;2865; FIJI-LABEL: store_2dmsaa:2866; FIJI:       ; %bb.0: ; %main_body2867; FIJI-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2868; FIJI-NEXT:    s_endpgm2869;2870; GFX6789-LABEL: store_2dmsaa:2871; GFX6789:       ; %bb.0: ; %main_body2872; GFX6789-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2873; GFX6789-NEXT:    s_endpgm2874;2875; NOPRT-LABEL: store_2dmsaa:2876; NOPRT:       ; %bb.0: ; %main_body2877; NOPRT-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf unorm2878; NOPRT-NEXT:    s_endpgm2879;2880; GFX10PLUS-LABEL: store_2dmsaa:2881; GFX10PLUS:       ; %bb.0: ; %main_body2882; GFX10PLUS-NEXT:    image_store v[0:3], v[4:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm2883; GFX10PLUS-NEXT:    s_endpgm2884;2885; GFX12-LABEL: store_2dmsaa:2886; GFX12:       ; %bb.0: ; %main_body2887; GFX12-NEXT:    image_store v[0:3], [v4, v5, v6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA2888; GFX12-NEXT:    s_endpgm2889main_body:2890  call void @llvm.amdgcn.image.store.2dmsaa.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %fragid, <8 x i32> %rsrc, i32 0, i32 0)2891  ret void2892}2893 2894define amdgpu_ps void @store_2darraymsaa(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %slice, i32 %fragid) {2895; VERDE-LABEL: store_2darraymsaa:2896; VERDE:       ; %bb.0: ; %main_body2897; VERDE-NEXT:    image_store v[0:3], v[4:7], s[0:7] dmask:0xf unorm da2898; VERDE-NEXT:    s_endpgm2899;2900; FIJI-LABEL: store_2darraymsaa:2901; FIJI:       ; %bb.0: ; %main_body2902; FIJI-NEXT:    image_store v[0:3], v[4:7], s[0:7] dmask:0xf unorm da2903; FIJI-NEXT:    s_endpgm2904;2905; GFX6789-LABEL: store_2darraymsaa:2906; GFX6789:       ; %bb.0: ; %main_body2907; GFX6789-NEXT:    image_store v[0:3], v[4:7], s[0:7] dmask:0xf unorm da2908; GFX6789-NEXT:    s_endpgm2909;2910; NOPRT-LABEL: store_2darraymsaa:2911; NOPRT:       ; %bb.0: ; %main_body2912; NOPRT-NEXT:    image_store v[0:3], v[4:7], s[0:7] dmask:0xf unorm da2913; NOPRT-NEXT:    s_endpgm2914;2915; GFX10PLUS-LABEL: store_2darraymsaa:2916; GFX10PLUS:       ; %bb.0: ; %main_body2917; GFX10PLUS-NEXT:    image_store v[0:3], v[4:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm2918; GFX10PLUS-NEXT:    s_endpgm2919;2920; GFX12-LABEL: store_2darraymsaa:2921; GFX12:       ; %bb.0: ; %main_body2922; GFX12-NEXT:    image_store v[0:3], [v4, v5, v6, v7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY2923; GFX12-NEXT:    s_endpgm2924main_body:2925  call void @llvm.amdgcn.image.store.2darraymsaa.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %slice, i32 %fragid, <8 x i32> %rsrc, i32 0, i32 0)2926  ret void2927}2928 2929define amdgpu_ps void @store_mip_1d(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %mip) {2930; VERDE-LABEL: store_mip_1d:2931; VERDE:       ; %bb.0: ; %main_body2932; VERDE-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm2933; VERDE-NEXT:    s_endpgm2934;2935; FIJI-LABEL: store_mip_1d:2936; FIJI:       ; %bb.0: ; %main_body2937; FIJI-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm2938; FIJI-NEXT:    s_endpgm2939;2940; GFX6789-LABEL: store_mip_1d:2941; GFX6789:       ; %bb.0: ; %main_body2942; GFX6789-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm2943; GFX6789-NEXT:    s_endpgm2944;2945; NOPRT-LABEL: store_mip_1d:2946; NOPRT:       ; %bb.0: ; %main_body2947; NOPRT-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf unorm2948; NOPRT-NEXT:    s_endpgm2949;2950; GFX10PLUS-LABEL: store_mip_1d:2951; GFX10PLUS:       ; %bb.0: ; %main_body2952; GFX10PLUS-NEXT:    image_store_mip v[0:3], v[4:5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm2953; GFX10PLUS-NEXT:    s_endpgm2954;2955; GFX12-LABEL: store_mip_1d:2956; GFX12:       ; %bb.0: ; %main_body2957; GFX12-NEXT:    image_store_mip v[0:3], [v4, v5], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D2958; GFX12-NEXT:    s_endpgm2959main_body:2960  call void @llvm.amdgcn.image.store.mip.1d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)2961  ret void2962}2963 2964define amdgpu_ps void @store_mip_2d(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %mip) {2965; VERDE-LABEL: store_mip_2d:2966; VERDE:       ; %bb.0: ; %main_body2967; VERDE-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm2968; VERDE-NEXT:    s_endpgm2969;2970; FIJI-LABEL: store_mip_2d:2971; FIJI:       ; %bb.0: ; %main_body2972; FIJI-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm2973; FIJI-NEXT:    s_endpgm2974;2975; GFX6789-LABEL: store_mip_2d:2976; GFX6789:       ; %bb.0: ; %main_body2977; GFX6789-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm2978; GFX6789-NEXT:    s_endpgm2979;2980; NOPRT-LABEL: store_mip_2d:2981; NOPRT:       ; %bb.0: ; %main_body2982; NOPRT-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm2983; NOPRT-NEXT:    s_endpgm2984;2985; GFX10PLUS-LABEL: store_mip_2d:2986; GFX10PLUS:       ; %bb.0: ; %main_body2987; GFX10PLUS-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm2988; GFX10PLUS-NEXT:    s_endpgm2989;2990; GFX12-LABEL: store_mip_2d:2991; GFX12:       ; %bb.0: ; %main_body2992; GFX12-NEXT:    image_store_mip v[0:3], [v4, v5, v6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D2993; GFX12-NEXT:    s_endpgm2994main_body:2995  call void @llvm.amdgcn.image.store.mip.2d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)2996  ret void2997}2998 2999define amdgpu_ps void @store_mip_3d(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %r, i32 %mip) {3000; VERDE-LABEL: store_mip_3d:3001; VERDE:       ; %bb.0: ; %main_body3002; VERDE-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm3003; VERDE-NEXT:    s_endpgm3004;3005; FIJI-LABEL: store_mip_3d:3006; FIJI:       ; %bb.0: ; %main_body3007; FIJI-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm3008; FIJI-NEXT:    s_endpgm3009;3010; GFX6789-LABEL: store_mip_3d:3011; GFX6789:       ; %bb.0: ; %main_body3012; GFX6789-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm3013; GFX6789-NEXT:    s_endpgm3014;3015; NOPRT-LABEL: store_mip_3d:3016; NOPRT:       ; %bb.0: ; %main_body3017; NOPRT-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm3018; NOPRT-NEXT:    s_endpgm3019;3020; GFX10PLUS-LABEL: store_mip_3d:3021; GFX10PLUS:       ; %bb.0: ; %main_body3022; GFX10PLUS-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm3023; GFX10PLUS-NEXT:    s_endpgm3024;3025; GFX12-LABEL: store_mip_3d:3026; GFX12:       ; %bb.0: ; %main_body3027; GFX12-NEXT:    image_store_mip v[0:3], [v4, v5, v6, v7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D3028; GFX12-NEXT:    s_endpgm3029main_body:3030  call void @llvm.amdgcn.image.store.mip.3d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %r, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3031  ret void3032}3033 3034define amdgpu_ps void @store_mip_cube(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %slice, i32 %mip) {3035; VERDE-LABEL: store_mip_cube:3036; VERDE:       ; %bb.0: ; %main_body3037; VERDE-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3038; VERDE-NEXT:    s_endpgm3039;3040; FIJI-LABEL: store_mip_cube:3041; FIJI:       ; %bb.0: ; %main_body3042; FIJI-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3043; FIJI-NEXT:    s_endpgm3044;3045; GFX6789-LABEL: store_mip_cube:3046; GFX6789:       ; %bb.0: ; %main_body3047; GFX6789-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3048; GFX6789-NEXT:    s_endpgm3049;3050; NOPRT-LABEL: store_mip_cube:3051; NOPRT:       ; %bb.0: ; %main_body3052; NOPRT-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3053; NOPRT-NEXT:    s_endpgm3054;3055; GFX10PLUS-LABEL: store_mip_cube:3056; GFX10PLUS:       ; %bb.0: ; %main_body3057; GFX10PLUS-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm3058; GFX10PLUS-NEXT:    s_endpgm3059;3060; GFX12-LABEL: store_mip_cube:3061; GFX12:       ; %bb.0: ; %main_body3062; GFX12-NEXT:    image_store_mip v[0:3], [v4, v5, v6, v7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE3063; GFX12-NEXT:    s_endpgm3064main_body:3065  call void @llvm.amdgcn.image.store.mip.cube.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %slice, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3066  ret void3067}3068 3069define amdgpu_ps void @store_mip_1darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %slice, i32 %mip) {3070; VERDE-LABEL: store_mip_1darray:3071; VERDE:       ; %bb.0: ; %main_body3072; VERDE-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm da3073; VERDE-NEXT:    s_endpgm3074;3075; FIJI-LABEL: store_mip_1darray:3076; FIJI:       ; %bb.0: ; %main_body3077; FIJI-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm da3078; FIJI-NEXT:    s_endpgm3079;3080; GFX6789-LABEL: store_mip_1darray:3081; GFX6789:       ; %bb.0: ; %main_body3082; GFX6789-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm da3083; GFX6789-NEXT:    s_endpgm3084;3085; NOPRT-LABEL: store_mip_1darray:3086; NOPRT:       ; %bb.0: ; %main_body3087; NOPRT-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf unorm da3088; NOPRT-NEXT:    s_endpgm3089;3090; GFX10PLUS-LABEL: store_mip_1darray:3091; GFX10PLUS:       ; %bb.0: ; %main_body3092; GFX10PLUS-NEXT:    image_store_mip v[0:3], v[4:6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm3093; GFX10PLUS-NEXT:    s_endpgm3094;3095; GFX12-LABEL: store_mip_1darray:3096; GFX12:       ; %bb.0: ; %main_body3097; GFX12-NEXT:    image_store_mip v[0:3], [v4, v5, v6], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY3098; GFX12-NEXT:    s_endpgm3099main_body:3100  call void @llvm.amdgcn.image.store.mip.1darray.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %slice, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3101  ret void3102}3103 3104define amdgpu_ps void @store_mip_2darray(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s, i32 %t, i32 %slice, i32 %mip) {3105; VERDE-LABEL: store_mip_2darray:3106; VERDE:       ; %bb.0: ; %main_body3107; VERDE-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3108; VERDE-NEXT:    s_endpgm3109;3110; FIJI-LABEL: store_mip_2darray:3111; FIJI:       ; %bb.0: ; %main_body3112; FIJI-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3113; FIJI-NEXT:    s_endpgm3114;3115; GFX6789-LABEL: store_mip_2darray:3116; GFX6789:       ; %bb.0: ; %main_body3117; GFX6789-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3118; GFX6789-NEXT:    s_endpgm3119;3120; NOPRT-LABEL: store_mip_2darray:3121; NOPRT:       ; %bb.0: ; %main_body3122; NOPRT-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf unorm da3123; NOPRT-NEXT:    s_endpgm3124;3125; GFX10PLUS-LABEL: store_mip_2darray:3126; GFX10PLUS:       ; %bb.0: ; %main_body3127; GFX10PLUS-NEXT:    image_store_mip v[0:3], v[4:7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm3128; GFX10PLUS-NEXT:    s_endpgm3129;3130; GFX12-LABEL: store_mip_2darray:3131; GFX12:       ; %bb.0: ; %main_body3132; GFX12-NEXT:    image_store_mip v[0:3], [v4, v5, v6, v7], s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY3133; GFX12-NEXT:    s_endpgm3134main_body:3135  call void @llvm.amdgcn.image.store.mip.2darray.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, i32 %t, i32 %slice, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3136  ret void3137}3138 3139define amdgpu_ps <4 x float> @getresinfo_1d(<8 x i32> inreg %rsrc, i32 %mip) {3140; VERDE-LABEL: getresinfo_1d:3141; VERDE:       ; %bb.0: ; %main_body3142; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3143; VERDE-NEXT:    s_waitcnt vmcnt(0)3144; VERDE-NEXT:    ; return to shader part epilog3145;3146; FIJI-LABEL: getresinfo_1d:3147; FIJI:       ; %bb.0: ; %main_body3148; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3149; FIJI-NEXT:    s_waitcnt vmcnt(0)3150; FIJI-NEXT:    ; return to shader part epilog3151;3152; GFX6789-LABEL: getresinfo_1d:3153; GFX6789:       ; %bb.0: ; %main_body3154; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3155; GFX6789-NEXT:    s_waitcnt vmcnt(0)3156; GFX6789-NEXT:    ; return to shader part epilog3157;3158; NOPRT-LABEL: getresinfo_1d:3159; NOPRT:       ; %bb.0: ; %main_body3160; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3161; NOPRT-NEXT:    s_waitcnt vmcnt(0)3162; NOPRT-NEXT:    ; return to shader part epilog3163;3164; GFX10PLUS-LABEL: getresinfo_1d:3165; GFX10PLUS:       ; %bb.0: ; %main_body3166; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm3167; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3168; GFX10PLUS-NEXT:    ; return to shader part epilog3169;3170; GFX12-LABEL: getresinfo_1d:3171; GFX12:       ; %bb.0: ; %main_body3172; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D3173; GFX12-NEXT:    s_wait_loadcnt 0x03174; GFX12-NEXT:    ; return to shader part epilog3175main_body:3176  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3177  ret <4 x float> %v3178}3179 3180define amdgpu_ps <4 x float> @getresinfo_2d(<8 x i32> inreg %rsrc, i32 %mip) {3181; VERDE-LABEL: getresinfo_2d:3182; VERDE:       ; %bb.0: ; %main_body3183; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3184; VERDE-NEXT:    s_waitcnt vmcnt(0)3185; VERDE-NEXT:    ; return to shader part epilog3186;3187; FIJI-LABEL: getresinfo_2d:3188; FIJI:       ; %bb.0: ; %main_body3189; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3190; FIJI-NEXT:    s_waitcnt vmcnt(0)3191; FIJI-NEXT:    ; return to shader part epilog3192;3193; GFX6789-LABEL: getresinfo_2d:3194; GFX6789:       ; %bb.0: ; %main_body3195; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3196; GFX6789-NEXT:    s_waitcnt vmcnt(0)3197; GFX6789-NEXT:    ; return to shader part epilog3198;3199; NOPRT-LABEL: getresinfo_2d:3200; NOPRT:       ; %bb.0: ; %main_body3201; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3202; NOPRT-NEXT:    s_waitcnt vmcnt(0)3203; NOPRT-NEXT:    ; return to shader part epilog3204;3205; GFX10PLUS-LABEL: getresinfo_2d:3206; GFX10PLUS:       ; %bb.0: ; %main_body3207; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D unorm3208; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3209; GFX10PLUS-NEXT:    ; return to shader part epilog3210;3211; GFX12-LABEL: getresinfo_2d:3212; GFX12:       ; %bb.0: ; %main_body3213; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D3214; GFX12-NEXT:    s_wait_loadcnt 0x03215; GFX12-NEXT:    ; return to shader part epilog3216main_body:3217  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3218  ret <4 x float> %v3219}3220 3221define amdgpu_ps <4 x float> @getresinfo_3d(<8 x i32> inreg %rsrc, i32 %mip) {3222; VERDE-LABEL: getresinfo_3d:3223; VERDE:       ; %bb.0: ; %main_body3224; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3225; VERDE-NEXT:    s_waitcnt vmcnt(0)3226; VERDE-NEXT:    ; return to shader part epilog3227;3228; FIJI-LABEL: getresinfo_3d:3229; FIJI:       ; %bb.0: ; %main_body3230; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3231; FIJI-NEXT:    s_waitcnt vmcnt(0)3232; FIJI-NEXT:    ; return to shader part epilog3233;3234; GFX6789-LABEL: getresinfo_3d:3235; GFX6789:       ; %bb.0: ; %main_body3236; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3237; GFX6789-NEXT:    s_waitcnt vmcnt(0)3238; GFX6789-NEXT:    ; return to shader part epilog3239;3240; NOPRT-LABEL: getresinfo_3d:3241; NOPRT:       ; %bb.0: ; %main_body3242; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3243; NOPRT-NEXT:    s_waitcnt vmcnt(0)3244; NOPRT-NEXT:    ; return to shader part epilog3245;3246; GFX10PLUS-LABEL: getresinfo_3d:3247; GFX10PLUS:       ; %bb.0: ; %main_body3248; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D unorm3249; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3250; GFX10PLUS-NEXT:    ; return to shader part epilog3251;3252; GFX12-LABEL: getresinfo_3d:3253; GFX12:       ; %bb.0: ; %main_body3254; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_3D3255; GFX12-NEXT:    s_wait_loadcnt 0x03256; GFX12-NEXT:    ; return to shader part epilog3257main_body:3258  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3259  ret <4 x float> %v3260}3261 3262define amdgpu_ps <4 x float> @getresinfo_cube(<8 x i32> inreg %rsrc, i32 %mip) {3263; VERDE-LABEL: getresinfo_cube:3264; VERDE:       ; %bb.0: ; %main_body3265; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3266; VERDE-NEXT:    s_waitcnt vmcnt(0)3267; VERDE-NEXT:    ; return to shader part epilog3268;3269; FIJI-LABEL: getresinfo_cube:3270; FIJI:       ; %bb.0: ; %main_body3271; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3272; FIJI-NEXT:    s_waitcnt vmcnt(0)3273; FIJI-NEXT:    ; return to shader part epilog3274;3275; GFX6789-LABEL: getresinfo_cube:3276; GFX6789:       ; %bb.0: ; %main_body3277; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3278; GFX6789-NEXT:    s_waitcnt vmcnt(0)3279; GFX6789-NEXT:    ; return to shader part epilog3280;3281; NOPRT-LABEL: getresinfo_cube:3282; NOPRT:       ; %bb.0: ; %main_body3283; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3284; NOPRT-NEXT:    s_waitcnt vmcnt(0)3285; NOPRT-NEXT:    ; return to shader part epilog3286;3287; GFX10PLUS-LABEL: getresinfo_cube:3288; GFX10PLUS:       ; %bb.0: ; %main_body3289; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE unorm3290; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3291; GFX10PLUS-NEXT:    ; return to shader part epilog3292;3293; GFX12-LABEL: getresinfo_cube:3294; GFX12:       ; %bb.0: ; %main_body3295; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_CUBE3296; GFX12-NEXT:    s_wait_loadcnt 0x03297; GFX12-NEXT:    ; return to shader part epilog3298main_body:3299  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3300  ret <4 x float> %v3301}3302 3303define amdgpu_ps <4 x float> @getresinfo_1darray(<8 x i32> inreg %rsrc, i32 %mip) {3304; VERDE-LABEL: getresinfo_1darray:3305; VERDE:       ; %bb.0: ; %main_body3306; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3307; VERDE-NEXT:    s_waitcnt vmcnt(0)3308; VERDE-NEXT:    ; return to shader part epilog3309;3310; FIJI-LABEL: getresinfo_1darray:3311; FIJI:       ; %bb.0: ; %main_body3312; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3313; FIJI-NEXT:    s_waitcnt vmcnt(0)3314; FIJI-NEXT:    ; return to shader part epilog3315;3316; GFX6789-LABEL: getresinfo_1darray:3317; GFX6789:       ; %bb.0: ; %main_body3318; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3319; GFX6789-NEXT:    s_waitcnt vmcnt(0)3320; GFX6789-NEXT:    ; return to shader part epilog3321;3322; NOPRT-LABEL: getresinfo_1darray:3323; NOPRT:       ; %bb.0: ; %main_body3324; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3325; NOPRT-NEXT:    s_waitcnt vmcnt(0)3326; NOPRT-NEXT:    ; return to shader part epilog3327;3328; GFX10PLUS-LABEL: getresinfo_1darray:3329; GFX10PLUS:       ; %bb.0: ; %main_body3330; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY unorm3331; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3332; GFX10PLUS-NEXT:    ; return to shader part epilog3333;3334; GFX12-LABEL: getresinfo_1darray:3335; GFX12:       ; %bb.0: ; %main_body3336; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D_ARRAY3337; GFX12-NEXT:    s_wait_loadcnt 0x03338; GFX12-NEXT:    ; return to shader part epilog3339main_body:3340  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3341  ret <4 x float> %v3342}3343 3344define amdgpu_ps <4 x float> @getresinfo_2darray(<8 x i32> inreg %rsrc, i32 %mip) {3345; VERDE-LABEL: getresinfo_2darray:3346; VERDE:       ; %bb.0: ; %main_body3347; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3348; VERDE-NEXT:    s_waitcnt vmcnt(0)3349; VERDE-NEXT:    ; return to shader part epilog3350;3351; FIJI-LABEL: getresinfo_2darray:3352; FIJI:       ; %bb.0: ; %main_body3353; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3354; FIJI-NEXT:    s_waitcnt vmcnt(0)3355; FIJI-NEXT:    ; return to shader part epilog3356;3357; GFX6789-LABEL: getresinfo_2darray:3358; GFX6789:       ; %bb.0: ; %main_body3359; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3360; GFX6789-NEXT:    s_waitcnt vmcnt(0)3361; GFX6789-NEXT:    ; return to shader part epilog3362;3363; NOPRT-LABEL: getresinfo_2darray:3364; NOPRT:       ; %bb.0: ; %main_body3365; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3366; NOPRT-NEXT:    s_waitcnt vmcnt(0)3367; NOPRT-NEXT:    ; return to shader part epilog3368;3369; GFX10PLUS-LABEL: getresinfo_2darray:3370; GFX10PLUS:       ; %bb.0: ; %main_body3371; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY unorm3372; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3373; GFX10PLUS-NEXT:    ; return to shader part epilog3374;3375; GFX12-LABEL: getresinfo_2darray:3376; GFX12:       ; %bb.0: ; %main_body3377; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_ARRAY3378; GFX12-NEXT:    s_wait_loadcnt 0x03379; GFX12-NEXT:    ; return to shader part epilog3380main_body:3381  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3382  ret <4 x float> %v3383}3384 3385define amdgpu_ps <4 x float> @getresinfo_2dmsaa(<8 x i32> inreg %rsrc, i32 %mip) {3386; VERDE-LABEL: getresinfo_2dmsaa:3387; VERDE:       ; %bb.0: ; %main_body3388; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3389; VERDE-NEXT:    s_waitcnt vmcnt(0)3390; VERDE-NEXT:    ; return to shader part epilog3391;3392; FIJI-LABEL: getresinfo_2dmsaa:3393; FIJI:       ; %bb.0: ; %main_body3394; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3395; FIJI-NEXT:    s_waitcnt vmcnt(0)3396; FIJI-NEXT:    ; return to shader part epilog3397;3398; GFX6789-LABEL: getresinfo_2dmsaa:3399; GFX6789:       ; %bb.0: ; %main_body3400; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3401; GFX6789-NEXT:    s_waitcnt vmcnt(0)3402; GFX6789-NEXT:    ; return to shader part epilog3403;3404; NOPRT-LABEL: getresinfo_2dmsaa:3405; NOPRT:       ; %bb.0: ; %main_body3406; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm3407; NOPRT-NEXT:    s_waitcnt vmcnt(0)3408; NOPRT-NEXT:    ; return to shader part epilog3409;3410; GFX10PLUS-LABEL: getresinfo_2dmsaa:3411; GFX10PLUS:       ; %bb.0: ; %main_body3412; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA unorm3413; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3414; GFX10PLUS-NEXT:    ; return to shader part epilog3415;3416; GFX12-LABEL: getresinfo_2dmsaa:3417; GFX12:       ; %bb.0: ; %main_body3418; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA3419; GFX12-NEXT:    s_wait_loadcnt 0x03420; GFX12-NEXT:    ; return to shader part epilog3421main_body:3422  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3423  ret <4 x float> %v3424}3425 3426define amdgpu_ps <4 x float> @getresinfo_2darraymsaa(<8 x i32> inreg %rsrc, i32 %mip) {3427; VERDE-LABEL: getresinfo_2darraymsaa:3428; VERDE:       ; %bb.0: ; %main_body3429; VERDE-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3430; VERDE-NEXT:    s_waitcnt vmcnt(0)3431; VERDE-NEXT:    ; return to shader part epilog3432;3433; FIJI-LABEL: getresinfo_2darraymsaa:3434; FIJI:       ; %bb.0: ; %main_body3435; FIJI-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3436; FIJI-NEXT:    s_waitcnt vmcnt(0)3437; FIJI-NEXT:    ; return to shader part epilog3438;3439; GFX6789-LABEL: getresinfo_2darraymsaa:3440; GFX6789:       ; %bb.0: ; %main_body3441; GFX6789-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3442; GFX6789-NEXT:    s_waitcnt vmcnt(0)3443; GFX6789-NEXT:    ; return to shader part epilog3444;3445; NOPRT-LABEL: getresinfo_2darraymsaa:3446; NOPRT:       ; %bb.0: ; %main_body3447; NOPRT-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf unorm da3448; NOPRT-NEXT:    s_waitcnt vmcnt(0)3449; NOPRT-NEXT:    ; return to shader part epilog3450;3451; GFX10PLUS-LABEL: getresinfo_2darraymsaa:3452; GFX10PLUS:       ; %bb.0: ; %main_body3453; GFX10PLUS-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY unorm3454; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3455; GFX10PLUS-NEXT:    ; return to shader part epilog3456;3457; GFX12-LABEL: getresinfo_2darraymsaa:3458; GFX12:       ; %bb.0: ; %main_body3459; GFX12-NEXT:    image_get_resinfo v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_2D_MSAA_ARRAY3460; GFX12-NEXT:    s_wait_loadcnt 0x03461; GFX12-NEXT:    ; return to shader part epilog3462main_body:3463  %v = call <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i32(i32 15, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3464  ret <4 x float> %v3465}3466 3467define amdgpu_ps float @load_1d_V1(<8 x i32> inreg %rsrc, i32 %s) {3468; VERDE-LABEL: load_1d_V1:3469; VERDE:       ; %bb.0: ; %main_body3470; VERDE-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm3471; VERDE-NEXT:    s_waitcnt vmcnt(0)3472; VERDE-NEXT:    ; return to shader part epilog3473;3474; FIJI-LABEL: load_1d_V1:3475; FIJI:       ; %bb.0: ; %main_body3476; FIJI-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm3477; FIJI-NEXT:    s_waitcnt vmcnt(0)3478; FIJI-NEXT:    ; return to shader part epilog3479;3480; GFX6789-LABEL: load_1d_V1:3481; GFX6789:       ; %bb.0: ; %main_body3482; GFX6789-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm3483; GFX6789-NEXT:    s_waitcnt vmcnt(0)3484; GFX6789-NEXT:    ; return to shader part epilog3485;3486; NOPRT-LABEL: load_1d_V1:3487; NOPRT:       ; %bb.0: ; %main_body3488; NOPRT-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 unorm3489; NOPRT-NEXT:    s_waitcnt vmcnt(0)3490; NOPRT-NEXT:    ; return to shader part epilog3491;3492; GFX10PLUS-LABEL: load_1d_V1:3493; GFX10PLUS:       ; %bb.0: ; %main_body3494; GFX10PLUS-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm3495; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3496; GFX10PLUS-NEXT:    ; return to shader part epilog3497;3498; GFX12-LABEL: load_1d_V1:3499; GFX12:       ; %bb.0: ; %main_body3500; GFX12-NEXT:    image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D3501; GFX12-NEXT:    s_wait_loadcnt 0x03502; GFX12-NEXT:    ; return to shader part epilog3503main_body:3504  %v = call float @llvm.amdgcn.image.load.1d.f32.i32(i32 8, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)3505  ret float %v3506}3507 3508define amdgpu_ps <2 x float> @load_1d_V2(<8 x i32> inreg %rsrc, i32 %s) {3509; VERDE-LABEL: load_1d_V2:3510; VERDE:       ; %bb.0: ; %main_body3511; VERDE-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 unorm3512; VERDE-NEXT:    s_waitcnt vmcnt(0)3513; VERDE-NEXT:    ; return to shader part epilog3514;3515; FIJI-LABEL: load_1d_V2:3516; FIJI:       ; %bb.0: ; %main_body3517; FIJI-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 unorm3518; FIJI-NEXT:    s_waitcnt vmcnt(0)3519; FIJI-NEXT:    ; return to shader part epilog3520;3521; GFX6789-LABEL: load_1d_V2:3522; GFX6789:       ; %bb.0: ; %main_body3523; GFX6789-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 unorm3524; GFX6789-NEXT:    s_waitcnt vmcnt(0)3525; GFX6789-NEXT:    ; return to shader part epilog3526;3527; NOPRT-LABEL: load_1d_V2:3528; NOPRT:       ; %bb.0: ; %main_body3529; NOPRT-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 unorm3530; NOPRT-NEXT:    s_waitcnt vmcnt(0)3531; NOPRT-NEXT:    ; return to shader part epilog3532;3533; GFX10PLUS-LABEL: load_1d_V2:3534; GFX10PLUS:       ; %bb.0: ; %main_body3535; GFX10PLUS-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D unorm3536; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3537; GFX10PLUS-NEXT:    ; return to shader part epilog3538;3539; GFX12-LABEL: load_1d_V2:3540; GFX12:       ; %bb.0: ; %main_body3541; GFX12-NEXT:    image_load v[0:1], v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D3542; GFX12-NEXT:    s_wait_loadcnt 0x03543; GFX12-NEXT:    ; return to shader part epilog3544main_body:3545  %v = call <2 x float> @llvm.amdgcn.image.load.1d.v2f32.i32(i32 9, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)3546  ret <2 x float> %v3547}3548 3549define amdgpu_ps void @store_1d_V1(<8 x i32> inreg %rsrc, float %vdata, i32 %s) {3550; VERDE-LABEL: store_1d_V1:3551; VERDE:       ; %bb.0: ; %main_body3552; VERDE-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 unorm3553; VERDE-NEXT:    s_endpgm3554;3555; FIJI-LABEL: store_1d_V1:3556; FIJI:       ; %bb.0: ; %main_body3557; FIJI-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 unorm3558; FIJI-NEXT:    s_endpgm3559;3560; GFX6789-LABEL: store_1d_V1:3561; GFX6789:       ; %bb.0: ; %main_body3562; GFX6789-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 unorm3563; GFX6789-NEXT:    s_endpgm3564;3565; NOPRT-LABEL: store_1d_V1:3566; NOPRT:       ; %bb.0: ; %main_body3567; NOPRT-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 unorm3568; NOPRT-NEXT:    s_endpgm3569;3570; GFX10PLUS-LABEL: store_1d_V1:3571; GFX10PLUS:       ; %bb.0: ; %main_body3572; GFX10PLUS-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D unorm3573; GFX10PLUS-NEXT:    s_endpgm3574;3575; GFX12-LABEL: store_1d_V1:3576; GFX12:       ; %bb.0: ; %main_body3577; GFX12-NEXT:    image_store v0, v1, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D3578; GFX12-NEXT:    s_endpgm3579main_body:3580  call void @llvm.amdgcn.image.store.1d.f32.i32(float %vdata, i32 2, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)3581  ret void3582}3583 3584define amdgpu_ps void @store_1d_V2(<8 x i32> inreg %rsrc, <2 x float> %vdata, i32 %s) {3585; VERDE-LABEL: store_1d_V2:3586; VERDE:       ; %bb.0: ; %main_body3587; VERDE-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc unorm3588; VERDE-NEXT:    s_endpgm3589;3590; FIJI-LABEL: store_1d_V2:3591; FIJI:       ; %bb.0: ; %main_body3592; FIJI-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc unorm3593; FIJI-NEXT:    s_endpgm3594;3595; GFX6789-LABEL: store_1d_V2:3596; GFX6789:       ; %bb.0: ; %main_body3597; GFX6789-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc unorm3598; GFX6789-NEXT:    s_endpgm3599;3600; NOPRT-LABEL: store_1d_V2:3601; NOPRT:       ; %bb.0: ; %main_body3602; NOPRT-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc unorm3603; NOPRT-NEXT:    s_endpgm3604;3605; GFX10PLUS-LABEL: store_1d_V2:3606; GFX10PLUS:       ; %bb.0: ; %main_body3607; GFX10PLUS-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc dim:SQ_RSRC_IMG_1D unorm3608; GFX10PLUS-NEXT:    s_endpgm3609;3610; GFX12-LABEL: store_1d_V2:3611; GFX12:       ; %bb.0: ; %main_body3612; GFX12-NEXT:    image_store v[0:1], v2, s[0:7] dmask:0xc dim:SQ_RSRC_IMG_1D3613; GFX12-NEXT:    s_endpgm3614main_body:3615  call void @llvm.amdgcn.image.store.1d.v2f32.i32(<2 x float> %vdata, i32 12, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)3616  ret void3617}3618 3619define amdgpu_ps <4 x float> @load_1d_glc(<8 x i32> inreg %rsrc, i32 %s) {3620; VERDE-LABEL: load_1d_glc:3621; VERDE:       ; %bb.0: ; %main_body3622; VERDE-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc3623; VERDE-NEXT:    s_waitcnt vmcnt(0)3624; VERDE-NEXT:    ; return to shader part epilog3625;3626; FIJI-LABEL: load_1d_glc:3627; FIJI:       ; %bb.0: ; %main_body3628; FIJI-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc3629; FIJI-NEXT:    s_waitcnt vmcnt(0)3630; FIJI-NEXT:    ; return to shader part epilog3631;3632; GFX6789-LABEL: load_1d_glc:3633; GFX6789:       ; %bb.0: ; %main_body3634; GFX6789-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc3635; GFX6789-NEXT:    s_waitcnt vmcnt(0)3636; GFX6789-NEXT:    ; return to shader part epilog3637;3638; NOPRT-LABEL: load_1d_glc:3639; NOPRT:       ; %bb.0: ; %main_body3640; NOPRT-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc3641; NOPRT-NEXT:    s_waitcnt vmcnt(0)3642; NOPRT-NEXT:    ; return to shader part epilog3643;3644; GFX10PLUS-LABEL: load_1d_glc:3645; GFX10PLUS:       ; %bb.0: ; %main_body3646; GFX10PLUS-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc3647; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3648; GFX10PLUS-NEXT:    ; return to shader part epilog3649;3650; GFX12-LABEL: load_1d_glc:3651; GFX12:       ; %bb.0: ; %main_body3652; GFX12-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D th:TH_LOAD_NT3653; GFX12-NEXT:    s_wait_loadcnt 0x03654; GFX12-NEXT:    ; return to shader part epilog3655main_body:3656  %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 1)3657  ret <4 x float> %v3658}3659 3660define amdgpu_ps <4 x float> @load_1d_slc(<8 x i32> inreg %rsrc, i32 %s) {3661; VERDE-LABEL: load_1d_slc:3662; VERDE:       ; %bb.0: ; %main_body3663; VERDE-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm slc3664; VERDE-NEXT:    s_waitcnt vmcnt(0)3665; VERDE-NEXT:    ; return to shader part epilog3666;3667; FIJI-LABEL: load_1d_slc:3668; FIJI:       ; %bb.0: ; %main_body3669; FIJI-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm slc3670; FIJI-NEXT:    s_waitcnt vmcnt(0)3671; FIJI-NEXT:    ; return to shader part epilog3672;3673; GFX6789-LABEL: load_1d_slc:3674; GFX6789:       ; %bb.0: ; %main_body3675; GFX6789-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm slc3676; GFX6789-NEXT:    s_waitcnt vmcnt(0)3677; GFX6789-NEXT:    ; return to shader part epilog3678;3679; NOPRT-LABEL: load_1d_slc:3680; NOPRT:       ; %bb.0: ; %main_body3681; NOPRT-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm slc3682; NOPRT-NEXT:    s_waitcnt vmcnt(0)3683; NOPRT-NEXT:    ; return to shader part epilog3684;3685; GFX10PLUS-LABEL: load_1d_slc:3686; GFX10PLUS:       ; %bb.0: ; %main_body3687; GFX10PLUS-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc3688; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3689; GFX10PLUS-NEXT:    ; return to shader part epilog3690;3691; GFX12-LABEL: load_1d_slc:3692; GFX12:       ; %bb.0: ; %main_body3693; GFX12-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D th:TH_LOAD_HT3694; GFX12-NEXT:    s_wait_loadcnt 0x03695; GFX12-NEXT:    ; return to shader part epilog3696main_body:3697  %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 2)3698  ret <4 x float> %v3699}3700 3701define amdgpu_ps <4 x float> @load_1d_glc_slc(<8 x i32> inreg %rsrc, i32 %s) {3702; VERDE-LABEL: load_1d_glc_slc:3703; VERDE:       ; %bb.0: ; %main_body3704; VERDE-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc slc3705; VERDE-NEXT:    s_waitcnt vmcnt(0)3706; VERDE-NEXT:    ; return to shader part epilog3707;3708; FIJI-LABEL: load_1d_glc_slc:3709; FIJI:       ; %bb.0: ; %main_body3710; FIJI-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc slc3711; FIJI-NEXT:    s_waitcnt vmcnt(0)3712; FIJI-NEXT:    ; return to shader part epilog3713;3714; GFX6789-LABEL: load_1d_glc_slc:3715; GFX6789:       ; %bb.0: ; %main_body3716; GFX6789-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc slc3717; GFX6789-NEXT:    s_waitcnt vmcnt(0)3718; GFX6789-NEXT:    ; return to shader part epilog3719;3720; NOPRT-LABEL: load_1d_glc_slc:3721; NOPRT:       ; %bb.0: ; %main_body3722; NOPRT-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf unorm glc slc3723; NOPRT-NEXT:    s_waitcnt vmcnt(0)3724; NOPRT-NEXT:    ; return to shader part epilog3725;3726; GFX10PLUS-LABEL: load_1d_glc_slc:3727; GFX10PLUS:       ; %bb.0: ; %main_body3728; GFX10PLUS-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc3729; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3730; GFX10PLUS-NEXT:    ; return to shader part epilog3731;3732; GFX12-LABEL: load_1d_glc_slc:3733; GFX12:       ; %bb.0: ; %main_body3734; GFX12-NEXT:    image_load v[0:3], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D th:TH_LOAD_LU3735; GFX12-NEXT:    s_wait_loadcnt 0x03736; GFX12-NEXT:    ; return to shader part epilog3737main_body:3738  %v = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 3)3739  ret <4 x float> %v3740}3741 3742define amdgpu_ps void @store_1d_glc(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s) {3743; VERDE-LABEL: store_1d_glc:3744; VERDE:       ; %bb.0: ; %main_body3745; VERDE-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc3746; VERDE-NEXT:    s_endpgm3747;3748; FIJI-LABEL: store_1d_glc:3749; FIJI:       ; %bb.0: ; %main_body3750; FIJI-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc3751; FIJI-NEXT:    s_endpgm3752;3753; GFX6789-LABEL: store_1d_glc:3754; GFX6789:       ; %bb.0: ; %main_body3755; GFX6789-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc3756; GFX6789-NEXT:    s_endpgm3757;3758; NOPRT-LABEL: store_1d_glc:3759; NOPRT:       ; %bb.0: ; %main_body3760; NOPRT-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc3761; NOPRT-NEXT:    s_endpgm3762;3763; GFX10PLUS-LABEL: store_1d_glc:3764; GFX10PLUS:       ; %bb.0: ; %main_body3765; GFX10PLUS-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc3766; GFX10PLUS-NEXT:    s_endpgm3767;3768; GFX12-LABEL: store_1d_glc:3769; GFX12:       ; %bb.0: ; %main_body3770; GFX12-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D th:TH_STORE_NT3771; GFX12-NEXT:    s_endpgm3772main_body:3773  call void @llvm.amdgcn.image.store.1d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 1)3774  ret void3775}3776 3777define amdgpu_ps void @store_1d_slc(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s) {3778; VERDE-LABEL: store_1d_slc:3779; VERDE:       ; %bb.0: ; %main_body3780; VERDE-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm slc3781; VERDE-NEXT:    s_endpgm3782;3783; FIJI-LABEL: store_1d_slc:3784; FIJI:       ; %bb.0: ; %main_body3785; FIJI-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm slc3786; FIJI-NEXT:    s_endpgm3787;3788; GFX6789-LABEL: store_1d_slc:3789; GFX6789:       ; %bb.0: ; %main_body3790; GFX6789-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm slc3791; GFX6789-NEXT:    s_endpgm3792;3793; NOPRT-LABEL: store_1d_slc:3794; NOPRT:       ; %bb.0: ; %main_body3795; NOPRT-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm slc3796; NOPRT-NEXT:    s_endpgm3797;3798; GFX10PLUS-LABEL: store_1d_slc:3799; GFX10PLUS:       ; %bb.0: ; %main_body3800; GFX10PLUS-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm slc3801; GFX10PLUS-NEXT:    s_endpgm3802;3803; GFX12-LABEL: store_1d_slc:3804; GFX12:       ; %bb.0: ; %main_body3805; GFX12-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D th:TH_STORE_HT3806; GFX12-NEXT:    s_endpgm3807main_body:3808  call void @llvm.amdgcn.image.store.1d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 2)3809  ret void3810}3811 3812define amdgpu_ps void @store_1d_glc_slc(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %s) {3813; VERDE-LABEL: store_1d_glc_slc:3814; VERDE:       ; %bb.0: ; %main_body3815; VERDE-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc slc3816; VERDE-NEXT:    s_endpgm3817;3818; FIJI-LABEL: store_1d_glc_slc:3819; FIJI:       ; %bb.0: ; %main_body3820; FIJI-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc slc3821; FIJI-NEXT:    s_endpgm3822;3823; GFX6789-LABEL: store_1d_glc_slc:3824; GFX6789:       ; %bb.0: ; %main_body3825; GFX6789-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc slc3826; GFX6789-NEXT:    s_endpgm3827;3828; NOPRT-LABEL: store_1d_glc_slc:3829; NOPRT:       ; %bb.0: ; %main_body3830; NOPRT-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm glc slc3831; NOPRT-NEXT:    s_endpgm3832;3833; GFX10PLUS-LABEL: store_1d_glc_slc:3834; GFX10PLUS:       ; %bb.0: ; %main_body3835; GFX10PLUS-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm glc slc3836; GFX10PLUS-NEXT:    s_endpgm3837;3838; GFX12-LABEL: store_1d_glc_slc:3839; GFX12:       ; %bb.0: ; %main_body3840; GFX12-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D th:TH_STORE_WB3841; GFX12-NEXT:    s_endpgm3842main_body:3843  call void @llvm.amdgcn.image.store.1d.v4f32.i32(<4 x float> %vdata, i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 3)3844  ret void3845}3846 3847define amdgpu_ps <3 x float> @getresinfo_dmask7(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) {3848; VERDE-LABEL: getresinfo_dmask7:3849; VERDE:       ; %bb.0: ; %main_body3850; VERDE-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 unorm3851; VERDE-NEXT:    s_waitcnt vmcnt(0)3852; VERDE-NEXT:    ; return to shader part epilog3853;3854; FIJI-LABEL: getresinfo_dmask7:3855; FIJI:       ; %bb.0: ; %main_body3856; FIJI-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 unorm3857; FIJI-NEXT:    s_waitcnt vmcnt(0)3858; FIJI-NEXT:    ; return to shader part epilog3859;3860; GFX6789-LABEL: getresinfo_dmask7:3861; GFX6789:       ; %bb.0: ; %main_body3862; GFX6789-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 unorm3863; GFX6789-NEXT:    s_waitcnt vmcnt(0)3864; GFX6789-NEXT:    ; return to shader part epilog3865;3866; NOPRT-LABEL: getresinfo_dmask7:3867; NOPRT:       ; %bb.0: ; %main_body3868; NOPRT-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 unorm3869; NOPRT-NEXT:    s_waitcnt vmcnt(0)3870; NOPRT-NEXT:    ; return to shader part epilog3871;3872; GFX10PLUS-LABEL: getresinfo_dmask7:3873; GFX10PLUS:       ; %bb.0: ; %main_body3874; GFX10PLUS-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm3875; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3876; GFX10PLUS-NEXT:    ; return to shader part epilog3877;3878; GFX12-LABEL: getresinfo_dmask7:3879; GFX12:       ; %bb.0: ; %main_body3880; GFX12-NEXT:    image_get_resinfo v[0:2], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D3881; GFX12-NEXT:    s_wait_loadcnt 0x03882; GFX12-NEXT:    ; return to shader part epilog3883main_body:3884  %r = call <3 x float> @llvm.amdgcn.image.getresinfo.1d.v3f32.i32(i32 7, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3885  ret <3 x float> %r3886}3887 3888define amdgpu_ps <2 x float> @getresinfo_dmask3(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) {3889; VERDE-LABEL: getresinfo_dmask3:3890; VERDE:       ; %bb.0: ; %main_body3891; VERDE-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 unorm3892; VERDE-NEXT:    s_waitcnt vmcnt(0)3893; VERDE-NEXT:    ; return to shader part epilog3894;3895; FIJI-LABEL: getresinfo_dmask3:3896; FIJI:       ; %bb.0: ; %main_body3897; FIJI-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 unorm3898; FIJI-NEXT:    s_waitcnt vmcnt(0)3899; FIJI-NEXT:    ; return to shader part epilog3900;3901; GFX6789-LABEL: getresinfo_dmask3:3902; GFX6789:       ; %bb.0: ; %main_body3903; GFX6789-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 unorm3904; GFX6789-NEXT:    s_waitcnt vmcnt(0)3905; GFX6789-NEXT:    ; return to shader part epilog3906;3907; NOPRT-LABEL: getresinfo_dmask3:3908; NOPRT:       ; %bb.0: ; %main_body3909; NOPRT-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 unorm3910; NOPRT-NEXT:    s_waitcnt vmcnt(0)3911; NOPRT-NEXT:    ; return to shader part epilog3912;3913; GFX10PLUS-LABEL: getresinfo_dmask3:3914; GFX10PLUS:       ; %bb.0: ; %main_body3915; GFX10PLUS-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm3916; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3917; GFX10PLUS-NEXT:    ; return to shader part epilog3918;3919; GFX12-LABEL: getresinfo_dmask3:3920; GFX12:       ; %bb.0: ; %main_body3921; GFX12-NEXT:    image_get_resinfo v[0:1], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D3922; GFX12-NEXT:    s_wait_loadcnt 0x03923; GFX12-NEXT:    ; return to shader part epilog3924main_body:3925  %r = call <2 x float> @llvm.amdgcn.image.getresinfo.1d.v2f32.i32(i32 3, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3926  ret <2 x float> %r3927}3928 3929define amdgpu_ps float @getresinfo_dmask1(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) {3930; VERDE-LABEL: getresinfo_dmask1:3931; VERDE:       ; %bb.0: ; %main_body3932; VERDE-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 unorm3933; VERDE-NEXT:    s_waitcnt vmcnt(0)3934; VERDE-NEXT:    ; return to shader part epilog3935;3936; FIJI-LABEL: getresinfo_dmask1:3937; FIJI:       ; %bb.0: ; %main_body3938; FIJI-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 unorm3939; FIJI-NEXT:    s_waitcnt vmcnt(0)3940; FIJI-NEXT:    ; return to shader part epilog3941;3942; GFX6789-LABEL: getresinfo_dmask1:3943; GFX6789:       ; %bb.0: ; %main_body3944; GFX6789-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 unorm3945; GFX6789-NEXT:    s_waitcnt vmcnt(0)3946; GFX6789-NEXT:    ; return to shader part epilog3947;3948; NOPRT-LABEL: getresinfo_dmask1:3949; NOPRT:       ; %bb.0: ; %main_body3950; NOPRT-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 unorm3951; NOPRT-NEXT:    s_waitcnt vmcnt(0)3952; NOPRT-NEXT:    ; return to shader part epilog3953;3954; GFX10PLUS-LABEL: getresinfo_dmask1:3955; GFX10PLUS:       ; %bb.0: ; %main_body3956; GFX10PLUS-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm3957; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)3958; GFX10PLUS-NEXT:    ; return to shader part epilog3959;3960; GFX12-LABEL: getresinfo_dmask1:3961; GFX12:       ; %bb.0: ; %main_body3962; GFX12-NEXT:    image_get_resinfo v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D3963; GFX12-NEXT:    s_wait_loadcnt 0x03964; GFX12-NEXT:    ; return to shader part epilog3965main_body:3966  %r = call float @llvm.amdgcn.image.getresinfo.1d.f32.i32(i32 1, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3967  ret float %r3968}3969 3970define amdgpu_ps <4 x float> @getresinfo_dmask0(<8 x i32> inreg %rsrc, <4 x float> %vdata, i32 %mip) #0 {3971; VERDE-LABEL: getresinfo_dmask0:3972; VERDE:       ; %bb.0: ; %main_body3973; VERDE-NEXT:    ; return to shader part epilog3974;3975; FIJI-LABEL: getresinfo_dmask0:3976; FIJI:       ; %bb.0: ; %main_body3977; FIJI-NEXT:    ; return to shader part epilog3978;3979; GFX6789-LABEL: getresinfo_dmask0:3980; GFX6789:       ; %bb.0: ; %main_body3981; GFX6789-NEXT:    ; return to shader part epilog3982;3983; NOPRT-LABEL: getresinfo_dmask0:3984; NOPRT:       ; %bb.0: ; %main_body3985; NOPRT-NEXT:    ; return to shader part epilog3986;3987; GFX10PLUS-LABEL: getresinfo_dmask0:3988; GFX10PLUS:       ; %bb.0: ; %main_body3989; GFX10PLUS-NEXT:    ; return to shader part epilog3990;3991; GFX12-LABEL: getresinfo_dmask0:3992; GFX12:       ; %bb.0: ; %main_body3993; GFX12-NEXT:    ; return to shader part epilog3994main_body:3995  %r = call <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i32(i32 0, i32 %mip, <8 x i32> %rsrc, i32 0, i32 0)3996  ret <4 x float> %r3997}3998 3999;4000define amdgpu_ps void @image_store_wait(<8 x i32> inreg %arg, <8 x i32> inreg %arg1, <8 x i32> inreg %arg2, <4 x float> %arg3, i32 %arg4) #0 {4001; VERDE-LABEL: image_store_wait:4002; VERDE:       ; %bb.0: ; %main_body4003; VERDE-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm4004; VERDE-NEXT:    s_waitcnt expcnt(0)4005; VERDE-NEXT:    image_load v[0:3], v4, s[8:15] dmask:0xf unorm4006; VERDE-NEXT:    s_waitcnt vmcnt(0)4007; VERDE-NEXT:    image_store v[0:3], v4, s[16:23] dmask:0xf unorm4008; VERDE-NEXT:    s_endpgm4009;4010; FIJI-LABEL: image_store_wait:4011; FIJI:       ; %bb.0: ; %main_body4012; FIJI-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm4013; FIJI-NEXT:    image_load v[0:3], v4, s[8:15] dmask:0xf unorm4014; FIJI-NEXT:    s_waitcnt vmcnt(0)4015; FIJI-NEXT:    image_store v[0:3], v4, s[16:23] dmask:0xf unorm4016; FIJI-NEXT:    s_endpgm4017;4018; GFX6789-LABEL: image_store_wait:4019; GFX6789:       ; %bb.0: ; %main_body4020; GFX6789-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm4021; GFX6789-NEXT:    image_load v[0:3], v4, s[8:15] dmask:0xf unorm4022; GFX6789-NEXT:    s_waitcnt vmcnt(0)4023; GFX6789-NEXT:    image_store v[0:3], v4, s[16:23] dmask:0xf unorm4024; GFX6789-NEXT:    s_endpgm4025;4026; NOPRT-LABEL: image_store_wait:4027; NOPRT:       ; %bb.0: ; %main_body4028; NOPRT-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf unorm4029; NOPRT-NEXT:    image_load v[0:3], v4, s[8:15] dmask:0xf unorm4030; NOPRT-NEXT:    s_waitcnt vmcnt(0)4031; NOPRT-NEXT:    image_store v[0:3], v4, s[16:23] dmask:0xf unorm4032; NOPRT-NEXT:    s_endpgm4033;4034; GFX10PLUS-LABEL: image_store_wait:4035; GFX10PLUS:       ; %bb.0: ; %main_body4036; GFX10PLUS-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm4037; GFX10PLUS-NEXT:    image_load v[0:3], v4, s[8:15] dmask:0xf dim:SQ_RSRC_IMG_1D unorm4038; GFX10PLUS-NEXT:    s_waitcnt vmcnt(0)4039; GFX10PLUS-NEXT:    image_store v[0:3], v4, s[16:23] dmask:0xf dim:SQ_RSRC_IMG_1D unorm4040; GFX10PLUS-NEXT:    s_endpgm4041;4042; GFX12-LABEL: image_store_wait:4043; GFX12:       ; %bb.0: ; %main_body4044; GFX12-NEXT:    image_store v[0:3], v4, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D4045; GFX12-NEXT:    image_load v[0:3], v4, s[8:15] dmask:0xf dim:SQ_RSRC_IMG_1D4046; GFX12-NEXT:    s_wait_loadcnt 0x04047; GFX12-NEXT:    image_store v[0:3], v4, s[16:23] dmask:0xf dim:SQ_RSRC_IMG_1D4048; GFX12-NEXT:    s_endpgm4049main_body:4050  call void @llvm.amdgcn.image.store.1d.v4f32.i32(<4 x float> %arg3, i32 15, i32 %arg4, <8 x i32> %arg, i32 0, i32 0)4051  %data = call <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i32(i32 15, i32 %arg4, <8 x i32> %arg1, i32 0, i32 0)4052  call void @llvm.amdgcn.image.store.1d.v4f32.i32(<4 x float> %data, i32 15, i32 %arg4, <8 x i32> %arg2, i32 0, i32 0)4053  ret void4054}4055 4056define amdgpu_ps float @image_load_mmo(<8 x i32> inreg %rsrc, ptr addrspace(3) %lds, <2 x i32> %c) #0 {4057; VERDE-LABEL: image_load_mmo:4058; VERDE:       ; %bb.0:4059; VERDE-NEXT:    image_load v1, v[1:2], s[0:7] dmask:0x1 unorm4060; VERDE-NEXT:    v_mov_b32_e32 v2, 04061; VERDE-NEXT:    s_mov_b32 m0, -14062; VERDE-NEXT:    ds_write_b32 v0, v24063; VERDE-NEXT:    v_add_i32_e32 v0, vcc, 16, v04064; VERDE-NEXT:    ds_write_b32 v0, v24065; VERDE-NEXT:    s_waitcnt vmcnt(0)4066; VERDE-NEXT:    v_mov_b32_e32 v0, v14067; VERDE-NEXT:    s_waitcnt lgkmcnt(0)4068; VERDE-NEXT:    ; return to shader part epilog4069;4070; FIJI-LABEL: image_load_mmo:4071; FIJI:       ; %bb.0:4072; FIJI-NEXT:    image_load v1, v[1:2], s[0:7] dmask:0x1 unorm4073; FIJI-NEXT:    v_mov_b32_e32 v2, 04074; FIJI-NEXT:    s_mov_b32 m0, -14075; FIJI-NEXT:    ds_write2_b32 v0, v2, v2 offset1:44076; FIJI-NEXT:    s_waitcnt vmcnt(0)4077; FIJI-NEXT:    v_mov_b32_e32 v0, v14078; FIJI-NEXT:    s_waitcnt lgkmcnt(0)4079; FIJI-NEXT:    ; return to shader part epilog4080;4081; GFX6789-LABEL: image_load_mmo:4082; GFX6789:       ; %bb.0:4083; GFX6789-NEXT:    image_load v1, v[1:2], s[0:7] dmask:0x1 unorm4084; GFX6789-NEXT:    v_mov_b32_e32 v2, 04085; GFX6789-NEXT:    ds_write2_b32 v0, v2, v2 offset1:44086; GFX6789-NEXT:    s_waitcnt vmcnt(0)4087; GFX6789-NEXT:    v_mov_b32_e32 v0, v14088; GFX6789-NEXT:    s_waitcnt lgkmcnt(0)4089; GFX6789-NEXT:    ; return to shader part epilog4090;4091; NOPRT-LABEL: image_load_mmo:4092; NOPRT:       ; %bb.0:4093; NOPRT-NEXT:    image_load v1, v[1:2], s[0:7] dmask:0x1 unorm4094; NOPRT-NEXT:    v_mov_b32_e32 v2, 04095; NOPRT-NEXT:    ds_write2_b32 v0, v2, v2 offset1:44096; NOPRT-NEXT:    s_waitcnt vmcnt(0)4097; NOPRT-NEXT:    v_mov_b32_e32 v0, v14098; NOPRT-NEXT:    s_waitcnt lgkmcnt(0)4099; NOPRT-NEXT:    ; return to shader part epilog4100;4101; GFX10-LABEL: image_load_mmo:4102; GFX10:       ; %bb.0:4103; GFX10-NEXT:    image_load v1, v[1:2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm4104; GFX10-NEXT:    v_mov_b32_e32 v2, 04105; GFX10-NEXT:    ds_write2_b32 v0, v2, v2 offset1:44106; GFX10-NEXT:    s_waitcnt vmcnt(0)4107; GFX10-NEXT:    v_mov_b32_e32 v0, v14108; GFX10-NEXT:    s_waitcnt lgkmcnt(0)4109; GFX10-NEXT:    ; return to shader part epilog4110;4111; GFX11-LABEL: image_load_mmo:4112; GFX11:       ; %bb.0:4113; GFX11-NEXT:    image_load v1, v[1:2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D unorm4114; GFX11-NEXT:    v_mov_b32_e32 v2, 04115; GFX11-NEXT:    ds_store_2addr_b32 v0, v2, v2 offset1:44116; GFX11-NEXT:    s_waitcnt vmcnt(0)4117; GFX11-NEXT:    v_mov_b32_e32 v0, v14118; GFX11-NEXT:    s_waitcnt lgkmcnt(0)4119; GFX11-NEXT:    ; return to shader part epilog4120;4121; GFX12-LABEL: image_load_mmo:4122; GFX12:       ; %bb.0:4123; GFX12-NEXT:    image_load v1, [v1, v2], s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_2D4124; GFX12-NEXT:    v_mov_b32_e32 v2, 04125; GFX12-NEXT:    ds_store_2addr_b32 v0, v2, v2 offset1:44126; GFX12-NEXT:    s_wait_loadcnt 0x04127; GFX12-NEXT:    v_mov_b32_e32 v0, v14128; GFX12-NEXT:    s_wait_dscnt 0x04129; GFX12-NEXT:    ; return to shader part epilog4130  store float 0.000000e+00, ptr addrspace(3) %lds4131  %c0 = extractelement <2 x i32> %c, i32 04132  %c1 = extractelement <2 x i32> %c, i32 14133  %tex = call float @llvm.amdgcn.image.load.2d.f32.i32(i32 1, i32 %c0, i32 %c1, <8 x i32> %rsrc, i32 0, i32 0)4134  %tmp2 = getelementptr float, ptr addrspace(3) %lds, i32 44135  store float 0.000000e+00, ptr addrspace(3) %tmp24136  ret float %tex4137}4138 4139declare <4 x float> @llvm.amdgcn.image.load.1d.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #14140declare {float,i32} @llvm.amdgcn.image.load.1d.f32i32.i32(i32, i32, <8 x i32>, i32, i32) #14141declare {<2 x float>,i32} @llvm.amdgcn.image.load.1d.v2f32i32.i32(i32, i32, <8 x i32>, i32, i32) #14142declare {<4 x float>,i32} @llvm.amdgcn.image.load.1d.v4f32i32.i32(i32, i32, <8 x i32>, i32, i32) #14143declare <4 x float> @llvm.amdgcn.image.load.2d.v4f32.i32(i32, i32, i32, <8 x i32>, i32, i32) #14144declare {<4 x float>,i32} @llvm.amdgcn.image.load.2d.v4f32i32.i32(i32, i32, i32, <8 x i32>, i32, i32) #14145declare <4 x float> @llvm.amdgcn.image.load.3d.v4f32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14146declare {<4 x float>,i32} @llvm.amdgcn.image.load.3d.v4f32i32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14147declare <4 x float> @llvm.amdgcn.image.load.cube.v4f32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14148declare {<4 x float>,i32} @llvm.amdgcn.image.load.cube.v4f32i32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14149declare <4 x float> @llvm.amdgcn.image.load.1darray.v4f32.i32(i32, i32, i32, <8 x i32>, i32, i32) #14150declare {<4 x float>,i32} @llvm.amdgcn.image.load.1darray.v4f32i32.i32(i32, i32, i32, <8 x i32>, i32, i32) #14151declare <4 x float> @llvm.amdgcn.image.load.2darray.v4f32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14152declare {<4 x float>,i32} @llvm.amdgcn.image.load.2darray.v4f32i32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14153declare <4 x float> @llvm.amdgcn.image.load.2dmsaa.v4f32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14154declare {<4 x float>,i32} @llvm.amdgcn.image.load.2dmsaa.v4f32i32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14155declare <4 x float> @llvm.amdgcn.image.load.2darraymsaa.v4f32.i32(i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #14156declare {<4 x float>,i32} @llvm.amdgcn.image.load.2darraymsaa.v4f32i32.i32(i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #14157 4158declare <4 x float> @llvm.amdgcn.image.load.mip.1d.v4f32.i32(i32, i32, i32, <8 x i32>, i32, i32) #14159declare <4 x float> @llvm.amdgcn.image.load.mip.2d.v4f32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14160declare {<4 x float>,i32} @llvm.amdgcn.image.load.mip.1d.v4f32i32.i32(i32, i32, i32, <8 x i32>, i32, i32) #14161declare {<4 x float>,i32} @llvm.amdgcn.image.load.mip.2d.v4f32i32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14162declare {<2 x float>,i32} @llvm.amdgcn.image.load.mip.2d.v2f32i32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14163declare {float,i32} @llvm.amdgcn.image.load.mip.2d.f32i32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14164declare <4 x float> @llvm.amdgcn.image.load.mip.3d.v4f32.i32(i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #14165declare <4 x float> @llvm.amdgcn.image.load.mip.cube.v4f32.i32(i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #14166declare <4 x float> @llvm.amdgcn.image.load.mip.1darray.v4f32.i32(i32, i32, i32, i32, <8 x i32>, i32, i32) #14167declare <4 x float> @llvm.amdgcn.image.load.mip.2darray.v4f32.i32(i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #14168 4169declare void @llvm.amdgcn.image.store.1d.v4f32.i32(<4 x float>, i32, i32, <8 x i32>, i32, i32) #04170declare void @llvm.amdgcn.image.store.2d.v4f32.i32(<4 x float>, i32, i32, i32, <8 x i32>, i32, i32) #04171declare void @llvm.amdgcn.image.store.3d.v4f32.i32(<4 x float>, i32, i32, i32, i32, <8 x i32>, i32, i32) #04172declare void @llvm.amdgcn.image.store.cube.v4f32.i32(<4 x float>, i32, i32, i32, i32, <8 x i32>, i32, i32) #04173declare void @llvm.amdgcn.image.store.1darray.v4f32.i32(<4 x float>, i32, i32, i32, <8 x i32>, i32, i32) #04174declare void @llvm.amdgcn.image.store.2darray.v4f32.i32(<4 x float>, i32, i32, i32, i32, <8 x i32>, i32, i32) #04175declare void @llvm.amdgcn.image.store.2dmsaa.v4f32.i32(<4 x float>, i32, i32, i32, i32, <8 x i32>, i32, i32) #04176declare void @llvm.amdgcn.image.store.2darraymsaa.v4f32.i32(<4 x float>, i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #04177 4178declare void @llvm.amdgcn.image.store.mip.1d.v4f32.i32(<4 x float>, i32, i32, i32, <8 x i32>, i32, i32) #04179declare void @llvm.amdgcn.image.store.mip.2d.v4f32.i32(<4 x float>, i32, i32, i32, i32, <8 x i32>, i32, i32) #04180declare void @llvm.amdgcn.image.store.mip.3d.v4f32.i32(<4 x float>, i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #04181declare void @llvm.amdgcn.image.store.mip.cube.v4f32.i32(<4 x float>, i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #04182declare void @llvm.amdgcn.image.store.mip.1darray.v4f32.i32(<4 x float>, i32, i32, i32, i32, <8 x i32>, i32, i32) #04183declare void @llvm.amdgcn.image.store.mip.2darray.v4f32.i32(<4 x float>, i32, i32, i32, i32, i32, <8 x i32>, i32, i32) #04184 4185declare <4 x float> @llvm.amdgcn.image.getresinfo.1d.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24186declare <3 x float> @llvm.amdgcn.image.getresinfo.1d.v3f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #14187declare <2 x float> @llvm.amdgcn.image.getresinfo.1d.v2f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #14188declare float @llvm.amdgcn.image.getresinfo.1d.f32.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #14189declare <4 x float> @llvm.amdgcn.image.getresinfo.2d.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24190declare <4 x float> @llvm.amdgcn.image.getresinfo.3d.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24191declare <4 x float> @llvm.amdgcn.image.getresinfo.cube.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24192declare <4 x float> @llvm.amdgcn.image.getresinfo.1darray.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24193declare <4 x float> @llvm.amdgcn.image.getresinfo.2darray.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24194declare <4 x float> @llvm.amdgcn.image.getresinfo.2dmsaa.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24195declare <4 x float> @llvm.amdgcn.image.getresinfo.2darraymsaa.v4f32.i32(i32, i32, <8 x i32>, i32, i32) #24196 4197declare float @llvm.amdgcn.image.load.1d.f32.i32(i32, i32, <8 x i32>, i32, i32) #14198declare float @llvm.amdgcn.image.load.2d.f32.i32(i32, i32, i32, <8 x i32>, i32, i32) #14199declare <2 x float> @llvm.amdgcn.image.load.1d.v2f32.i32(i32, i32, <8 x i32>, i32, i32) #14200declare void @llvm.amdgcn.image.store.1d.f32.i32(float, i32, i32, <8 x i32>, i32, i32) #04201declare void @llvm.amdgcn.image.store.1d.v2f32.i32(<2 x float>, i32, i32, <8 x i32>, i32, i32) #04202 4203attributes #0 = { nounwind }4204attributes #1 = { nounwind readonly }4205attributes #2 = { nounwind readnone }4206