1157 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=tonga < %s | FileCheck -check-prefix=GFX8-UNPACKED %s3; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx810 < %s | FileCheck -check-prefix=GFX8-PACKED %s4; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s5; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck -check-prefixes=GFX10PLUS %s6; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GFX10PLUS %s7; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1200 < %s | FileCheck -check-prefixes=GFX12 %s8 9define amdgpu_ps half @load_1d_f16_x(<8 x i32> inreg %rsrc, i32 %s) {10; GFX8-UNPACKED-LABEL: load_1d_f16_x:11; GFX8-UNPACKED: ; %bb.0:12; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s213; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s314; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s415; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s516; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s617; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s718; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s819; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s920; GFX8-UNPACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x1 unorm d1621; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)22; GFX8-UNPACKED-NEXT: ; return to shader part epilog23;24; GFX8-PACKED-LABEL: load_1d_f16_x:25; GFX8-PACKED: ; %bb.0:26; GFX8-PACKED-NEXT: s_mov_b32 s0, s227; GFX8-PACKED-NEXT: s_mov_b32 s1, s328; GFX8-PACKED-NEXT: s_mov_b32 s2, s429; GFX8-PACKED-NEXT: s_mov_b32 s3, s530; GFX8-PACKED-NEXT: s_mov_b32 s4, s631; GFX8-PACKED-NEXT: s_mov_b32 s5, s732; GFX8-PACKED-NEXT: s_mov_b32 s6, s833; GFX8-PACKED-NEXT: s_mov_b32 s7, s934; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x1 unorm d1635; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)36; GFX8-PACKED-NEXT: ; return to shader part epilog37;38; GFX9-LABEL: load_1d_f16_x:39; GFX9: ; %bb.0:40; GFX9-NEXT: s_mov_b32 s0, s241; GFX9-NEXT: s_mov_b32 s1, s342; GFX9-NEXT: s_mov_b32 s2, s443; GFX9-NEXT: s_mov_b32 s3, s544; GFX9-NEXT: s_mov_b32 s4, s645; GFX9-NEXT: s_mov_b32 s5, s746; GFX9-NEXT: s_mov_b32 s6, s847; GFX9-NEXT: s_mov_b32 s7, s948; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x1 unorm d1649; GFX9-NEXT: s_waitcnt vmcnt(0)50; GFX9-NEXT: ; return to shader part epilog51;52; GFX10PLUS-LABEL: load_1d_f16_x:53; GFX10PLUS: ; %bb.0:54; GFX10PLUS-NEXT: s_mov_b32 s0, s255; GFX10PLUS-NEXT: s_mov_b32 s1, s356; GFX10PLUS-NEXT: s_mov_b32 s2, s457; GFX10PLUS-NEXT: s_mov_b32 s3, s558; GFX10PLUS-NEXT: s_mov_b32 s4, s659; GFX10PLUS-NEXT: s_mov_b32 s5, s760; GFX10PLUS-NEXT: s_mov_b32 s6, s861; GFX10PLUS-NEXT: s_mov_b32 s7, s962; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm d1663; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)64; GFX10PLUS-NEXT: ; return to shader part epilog65;66; GFX12-LABEL: load_1d_f16_x:67; GFX12: ; %bb.0:68; GFX12-NEXT: s_mov_b32 s0, s269; GFX12-NEXT: s_mov_b32 s1, s370; GFX12-NEXT: s_mov_b32 s2, s471; GFX12-NEXT: s_mov_b32 s3, s572; GFX12-NEXT: s_mov_b32 s4, s673; GFX12-NEXT: s_mov_b32 s5, s774; GFX12-NEXT: s_mov_b32 s6, s875; GFX12-NEXT: s_mov_b32 s7, s976; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D d1677; GFX12-NEXT: s_wait_loadcnt 0x078; GFX12-NEXT: ; return to shader part epilog79 %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 1, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)80 ret half %v81}82 83define amdgpu_ps half @load_1d_f16_y(<8 x i32> inreg %rsrc, i32 %s) {84; GFX8-UNPACKED-LABEL: load_1d_f16_y:85; GFX8-UNPACKED: ; %bb.0:86; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s287; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s388; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s489; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s590; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s691; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s792; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s893; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s994; GFX8-UNPACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x2 unorm d1695; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)96; GFX8-UNPACKED-NEXT: ; return to shader part epilog97;98; GFX8-PACKED-LABEL: load_1d_f16_y:99; GFX8-PACKED: ; %bb.0:100; GFX8-PACKED-NEXT: s_mov_b32 s0, s2101; GFX8-PACKED-NEXT: s_mov_b32 s1, s3102; GFX8-PACKED-NEXT: s_mov_b32 s2, s4103; GFX8-PACKED-NEXT: s_mov_b32 s3, s5104; GFX8-PACKED-NEXT: s_mov_b32 s4, s6105; GFX8-PACKED-NEXT: s_mov_b32 s5, s7106; GFX8-PACKED-NEXT: s_mov_b32 s6, s8107; GFX8-PACKED-NEXT: s_mov_b32 s7, s9108; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x2 unorm d16109; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)110; GFX8-PACKED-NEXT: ; return to shader part epilog111;112; GFX9-LABEL: load_1d_f16_y:113; GFX9: ; %bb.0:114; GFX9-NEXT: s_mov_b32 s0, s2115; GFX9-NEXT: s_mov_b32 s1, s3116; GFX9-NEXT: s_mov_b32 s2, s4117; GFX9-NEXT: s_mov_b32 s3, s5118; GFX9-NEXT: s_mov_b32 s4, s6119; GFX9-NEXT: s_mov_b32 s5, s7120; GFX9-NEXT: s_mov_b32 s6, s8121; GFX9-NEXT: s_mov_b32 s7, s9122; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x2 unorm d16123; GFX9-NEXT: s_waitcnt vmcnt(0)124; GFX9-NEXT: ; return to shader part epilog125;126; GFX10PLUS-LABEL: load_1d_f16_y:127; GFX10PLUS: ; %bb.0:128; GFX10PLUS-NEXT: s_mov_b32 s0, s2129; GFX10PLUS-NEXT: s_mov_b32 s1, s3130; GFX10PLUS-NEXT: s_mov_b32 s2, s4131; GFX10PLUS-NEXT: s_mov_b32 s3, s5132; GFX10PLUS-NEXT: s_mov_b32 s4, s6133; GFX10PLUS-NEXT: s_mov_b32 s5, s7134; GFX10PLUS-NEXT: s_mov_b32 s6, s8135; GFX10PLUS-NEXT: s_mov_b32 s7, s9136; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D unorm d16137; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)138; GFX10PLUS-NEXT: ; return to shader part epilog139;140; GFX12-LABEL: load_1d_f16_y:141; GFX12: ; %bb.0:142; GFX12-NEXT: s_mov_b32 s0, s2143; GFX12-NEXT: s_mov_b32 s1, s3144; GFX12-NEXT: s_mov_b32 s2, s4145; GFX12-NEXT: s_mov_b32 s3, s5146; GFX12-NEXT: s_mov_b32 s4, s6147; GFX12-NEXT: s_mov_b32 s5, s7148; GFX12-NEXT: s_mov_b32 s6, s8149; GFX12-NEXT: s_mov_b32 s7, s9150; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x2 dim:SQ_RSRC_IMG_1D d16151; GFX12-NEXT: s_wait_loadcnt 0x0152; GFX12-NEXT: ; return to shader part epilog153 %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 2, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)154 ret half %v155}156 157define amdgpu_ps half @load_1d_f16_z(<8 x i32> inreg %rsrc, i32 %s) {158; GFX8-UNPACKED-LABEL: load_1d_f16_z:159; GFX8-UNPACKED: ; %bb.0:160; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2161; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3162; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4163; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5164; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6165; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7166; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8167; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9168; GFX8-UNPACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x4 unorm d16169; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)170; GFX8-UNPACKED-NEXT: ; return to shader part epilog171;172; GFX8-PACKED-LABEL: load_1d_f16_z:173; GFX8-PACKED: ; %bb.0:174; GFX8-PACKED-NEXT: s_mov_b32 s0, s2175; GFX8-PACKED-NEXT: s_mov_b32 s1, s3176; GFX8-PACKED-NEXT: s_mov_b32 s2, s4177; GFX8-PACKED-NEXT: s_mov_b32 s3, s5178; GFX8-PACKED-NEXT: s_mov_b32 s4, s6179; GFX8-PACKED-NEXT: s_mov_b32 s5, s7180; GFX8-PACKED-NEXT: s_mov_b32 s6, s8181; GFX8-PACKED-NEXT: s_mov_b32 s7, s9182; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x4 unorm d16183; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)184; GFX8-PACKED-NEXT: ; return to shader part epilog185;186; GFX9-LABEL: load_1d_f16_z:187; GFX9: ; %bb.0:188; GFX9-NEXT: s_mov_b32 s0, s2189; GFX9-NEXT: s_mov_b32 s1, s3190; GFX9-NEXT: s_mov_b32 s2, s4191; GFX9-NEXT: s_mov_b32 s3, s5192; GFX9-NEXT: s_mov_b32 s4, s6193; GFX9-NEXT: s_mov_b32 s5, s7194; GFX9-NEXT: s_mov_b32 s6, s8195; GFX9-NEXT: s_mov_b32 s7, s9196; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x4 unorm d16197; GFX9-NEXT: s_waitcnt vmcnt(0)198; GFX9-NEXT: ; return to shader part epilog199;200; GFX10PLUS-LABEL: load_1d_f16_z:201; GFX10PLUS: ; %bb.0:202; GFX10PLUS-NEXT: s_mov_b32 s0, s2203; GFX10PLUS-NEXT: s_mov_b32 s1, s3204; GFX10PLUS-NEXT: s_mov_b32 s2, s4205; GFX10PLUS-NEXT: s_mov_b32 s3, s5206; GFX10PLUS-NEXT: s_mov_b32 s4, s6207; GFX10PLUS-NEXT: s_mov_b32 s5, s7208; GFX10PLUS-NEXT: s_mov_b32 s6, s8209; GFX10PLUS-NEXT: s_mov_b32 s7, s9210; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x4 dim:SQ_RSRC_IMG_1D unorm d16211; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)212; GFX10PLUS-NEXT: ; return to shader part epilog213;214; GFX12-LABEL: load_1d_f16_z:215; GFX12: ; %bb.0:216; GFX12-NEXT: s_mov_b32 s0, s2217; GFX12-NEXT: s_mov_b32 s1, s3218; GFX12-NEXT: s_mov_b32 s2, s4219; GFX12-NEXT: s_mov_b32 s3, s5220; GFX12-NEXT: s_mov_b32 s4, s6221; GFX12-NEXT: s_mov_b32 s5, s7222; GFX12-NEXT: s_mov_b32 s6, s8223; GFX12-NEXT: s_mov_b32 s7, s9224; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x4 dim:SQ_RSRC_IMG_1D d16225; GFX12-NEXT: s_wait_loadcnt 0x0226; GFX12-NEXT: ; return to shader part epilog227 %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 4, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)228 ret half %v229}230 231define amdgpu_ps half @load_1d_f16_w(<8 x i32> inreg %rsrc, i32 %s) {232; GFX8-UNPACKED-LABEL: load_1d_f16_w:233; GFX8-UNPACKED: ; %bb.0:234; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2235; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3236; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4237; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5238; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6239; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7240; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8241; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9242; GFX8-UNPACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x8 unorm d16243; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)244; GFX8-UNPACKED-NEXT: ; return to shader part epilog245;246; GFX8-PACKED-LABEL: load_1d_f16_w:247; GFX8-PACKED: ; %bb.0:248; GFX8-PACKED-NEXT: s_mov_b32 s0, s2249; GFX8-PACKED-NEXT: s_mov_b32 s1, s3250; GFX8-PACKED-NEXT: s_mov_b32 s2, s4251; GFX8-PACKED-NEXT: s_mov_b32 s3, s5252; GFX8-PACKED-NEXT: s_mov_b32 s4, s6253; GFX8-PACKED-NEXT: s_mov_b32 s5, s7254; GFX8-PACKED-NEXT: s_mov_b32 s6, s8255; GFX8-PACKED-NEXT: s_mov_b32 s7, s9256; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x8 unorm d16257; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)258; GFX8-PACKED-NEXT: ; return to shader part epilog259;260; GFX9-LABEL: load_1d_f16_w:261; GFX9: ; %bb.0:262; GFX9-NEXT: s_mov_b32 s0, s2263; GFX9-NEXT: s_mov_b32 s1, s3264; GFX9-NEXT: s_mov_b32 s2, s4265; GFX9-NEXT: s_mov_b32 s3, s5266; GFX9-NEXT: s_mov_b32 s4, s6267; GFX9-NEXT: s_mov_b32 s5, s7268; GFX9-NEXT: s_mov_b32 s6, s8269; GFX9-NEXT: s_mov_b32 s7, s9270; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x8 unorm d16271; GFX9-NEXT: s_waitcnt vmcnt(0)272; GFX9-NEXT: ; return to shader part epilog273;274; GFX10PLUS-LABEL: load_1d_f16_w:275; GFX10PLUS: ; %bb.0:276; GFX10PLUS-NEXT: s_mov_b32 s0, s2277; GFX10PLUS-NEXT: s_mov_b32 s1, s3278; GFX10PLUS-NEXT: s_mov_b32 s2, s4279; GFX10PLUS-NEXT: s_mov_b32 s3, s5280; GFX10PLUS-NEXT: s_mov_b32 s4, s6281; GFX10PLUS-NEXT: s_mov_b32 s5, s7282; GFX10PLUS-NEXT: s_mov_b32 s6, s8283; GFX10PLUS-NEXT: s_mov_b32 s7, s9284; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D unorm d16285; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)286; GFX10PLUS-NEXT: ; return to shader part epilog287;288; GFX12-LABEL: load_1d_f16_w:289; GFX12: ; %bb.0:290; GFX12-NEXT: s_mov_b32 s0, s2291; GFX12-NEXT: s_mov_b32 s1, s3292; GFX12-NEXT: s_mov_b32 s2, s4293; GFX12-NEXT: s_mov_b32 s3, s5294; GFX12-NEXT: s_mov_b32 s4, s6295; GFX12-NEXT: s_mov_b32 s5, s7296; GFX12-NEXT: s_mov_b32 s6, s8297; GFX12-NEXT: s_mov_b32 s7, s9298; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x8 dim:SQ_RSRC_IMG_1D d16299; GFX12-NEXT: s_wait_loadcnt 0x0300; GFX12-NEXT: ; return to shader part epilog301 %v = call half @llvm.amdgcn.image.load.1d.half.i32(i32 8, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)302 ret half %v303}304 305define amdgpu_ps <2 x half> @load_1d_v2f16_xy(<8 x i32> inreg %rsrc, i32 %s) {306; GFX8-UNPACKED-LABEL: load_1d_v2f16_xy:307; GFX8-UNPACKED: ; %bb.0:308; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2309; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3310; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4311; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5312; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6313; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7314; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8315; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9316; GFX8-UNPACKED-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x3 unorm d16317; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)318; GFX8-UNPACKED-NEXT: v_and_b32_e32 v1, 0xffff, v1319; GFX8-UNPACKED-NEXT: v_lshlrev_b32_e32 v1, 16, v1320; GFX8-UNPACKED-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD321; GFX8-UNPACKED-NEXT: ; return to shader part epilog322;323; GFX8-PACKED-LABEL: load_1d_v2f16_xy:324; GFX8-PACKED: ; %bb.0:325; GFX8-PACKED-NEXT: s_mov_b32 s0, s2326; GFX8-PACKED-NEXT: s_mov_b32 s1, s3327; GFX8-PACKED-NEXT: s_mov_b32 s2, s4328; GFX8-PACKED-NEXT: s_mov_b32 s3, s5329; GFX8-PACKED-NEXT: s_mov_b32 s4, s6330; GFX8-PACKED-NEXT: s_mov_b32 s5, s7331; GFX8-PACKED-NEXT: s_mov_b32 s6, s8332; GFX8-PACKED-NEXT: s_mov_b32 s7, s9333; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x3 unorm d16334; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)335; GFX8-PACKED-NEXT: ; return to shader part epilog336;337; GFX9-LABEL: load_1d_v2f16_xy:338; GFX9: ; %bb.0:339; GFX9-NEXT: s_mov_b32 s0, s2340; GFX9-NEXT: s_mov_b32 s1, s3341; GFX9-NEXT: s_mov_b32 s2, s4342; GFX9-NEXT: s_mov_b32 s3, s5343; GFX9-NEXT: s_mov_b32 s4, s6344; GFX9-NEXT: s_mov_b32 s5, s7345; GFX9-NEXT: s_mov_b32 s6, s8346; GFX9-NEXT: s_mov_b32 s7, s9347; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x3 unorm d16348; GFX9-NEXT: s_waitcnt vmcnt(0)349; GFX9-NEXT: ; return to shader part epilog350;351; GFX10PLUS-LABEL: load_1d_v2f16_xy:352; GFX10PLUS: ; %bb.0:353; GFX10PLUS-NEXT: s_mov_b32 s0, s2354; GFX10PLUS-NEXT: s_mov_b32 s1, s3355; GFX10PLUS-NEXT: s_mov_b32 s2, s4356; GFX10PLUS-NEXT: s_mov_b32 s3, s5357; GFX10PLUS-NEXT: s_mov_b32 s4, s6358; GFX10PLUS-NEXT: s_mov_b32 s5, s7359; GFX10PLUS-NEXT: s_mov_b32 s6, s8360; GFX10PLUS-NEXT: s_mov_b32 s7, s9361; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm d16362; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)363; GFX10PLUS-NEXT: ; return to shader part epilog364;365; GFX12-LABEL: load_1d_v2f16_xy:366; GFX12: ; %bb.0:367; GFX12-NEXT: s_mov_b32 s0, s2368; GFX12-NEXT: s_mov_b32 s1, s3369; GFX12-NEXT: s_mov_b32 s2, s4370; GFX12-NEXT: s_mov_b32 s3, s5371; GFX12-NEXT: s_mov_b32 s4, s6372; GFX12-NEXT: s_mov_b32 s5, s7373; GFX12-NEXT: s_mov_b32 s6, s8374; GFX12-NEXT: s_mov_b32 s7, s9375; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D d16376; GFX12-NEXT: s_wait_loadcnt 0x0377; GFX12-NEXT: ; return to shader part epilog378 %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 3, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)379 ret <2 x half> %v380}381 382define amdgpu_ps <2 x half> @load_1d_v2f16_xz(<8 x i32> inreg %rsrc, i32 %s) {383; GFX8-UNPACKED-LABEL: load_1d_v2f16_xz:384; GFX8-UNPACKED: ; %bb.0:385; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2386; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3387; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4388; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5389; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6390; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7391; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8392; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9393; GFX8-UNPACKED-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x5 unorm d16394; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)395; GFX8-UNPACKED-NEXT: v_and_b32_e32 v1, 0xffff, v1396; GFX8-UNPACKED-NEXT: v_lshlrev_b32_e32 v1, 16, v1397; GFX8-UNPACKED-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD398; GFX8-UNPACKED-NEXT: ; return to shader part epilog399;400; GFX8-PACKED-LABEL: load_1d_v2f16_xz:401; GFX8-PACKED: ; %bb.0:402; GFX8-PACKED-NEXT: s_mov_b32 s0, s2403; GFX8-PACKED-NEXT: s_mov_b32 s1, s3404; GFX8-PACKED-NEXT: s_mov_b32 s2, s4405; GFX8-PACKED-NEXT: s_mov_b32 s3, s5406; GFX8-PACKED-NEXT: s_mov_b32 s4, s6407; GFX8-PACKED-NEXT: s_mov_b32 s5, s7408; GFX8-PACKED-NEXT: s_mov_b32 s6, s8409; GFX8-PACKED-NEXT: s_mov_b32 s7, s9410; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x5 unorm d16411; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)412; GFX8-PACKED-NEXT: ; return to shader part epilog413;414; GFX9-LABEL: load_1d_v2f16_xz:415; GFX9: ; %bb.0:416; GFX9-NEXT: s_mov_b32 s0, s2417; GFX9-NEXT: s_mov_b32 s1, s3418; GFX9-NEXT: s_mov_b32 s2, s4419; GFX9-NEXT: s_mov_b32 s3, s5420; GFX9-NEXT: s_mov_b32 s4, s6421; GFX9-NEXT: s_mov_b32 s5, s7422; GFX9-NEXT: s_mov_b32 s6, s8423; GFX9-NEXT: s_mov_b32 s7, s9424; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x5 unorm d16425; GFX9-NEXT: s_waitcnt vmcnt(0)426; GFX9-NEXT: ; return to shader part epilog427;428; GFX10PLUS-LABEL: load_1d_v2f16_xz:429; GFX10PLUS: ; %bb.0:430; GFX10PLUS-NEXT: s_mov_b32 s0, s2431; GFX10PLUS-NEXT: s_mov_b32 s1, s3432; GFX10PLUS-NEXT: s_mov_b32 s2, s4433; GFX10PLUS-NEXT: s_mov_b32 s3, s5434; GFX10PLUS-NEXT: s_mov_b32 s4, s6435; GFX10PLUS-NEXT: s_mov_b32 s5, s7436; GFX10PLUS-NEXT: s_mov_b32 s6, s8437; GFX10PLUS-NEXT: s_mov_b32 s7, s9438; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x5 dim:SQ_RSRC_IMG_1D unorm d16439; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)440; GFX10PLUS-NEXT: ; return to shader part epilog441;442; GFX12-LABEL: load_1d_v2f16_xz:443; GFX12: ; %bb.0:444; GFX12-NEXT: s_mov_b32 s0, s2445; GFX12-NEXT: s_mov_b32 s1, s3446; GFX12-NEXT: s_mov_b32 s2, s4447; GFX12-NEXT: s_mov_b32 s3, s5448; GFX12-NEXT: s_mov_b32 s4, s6449; GFX12-NEXT: s_mov_b32 s5, s7450; GFX12-NEXT: s_mov_b32 s6, s8451; GFX12-NEXT: s_mov_b32 s7, s9452; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x5 dim:SQ_RSRC_IMG_1D d16453; GFX12-NEXT: s_wait_loadcnt 0x0454; GFX12-NEXT: ; return to shader part epilog455 %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 5, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)456 ret <2 x half> %v457}458 459define amdgpu_ps <2 x half> @load_1d_v2f16_xw(<8 x i32> inreg %rsrc, i32 %s) {460; GFX8-UNPACKED-LABEL: load_1d_v2f16_xw:461; GFX8-UNPACKED: ; %bb.0:462; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2463; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3464; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4465; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5466; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6467; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7468; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8469; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9470; GFX8-UNPACKED-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x9 unorm d16471; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)472; GFX8-UNPACKED-NEXT: v_and_b32_e32 v1, 0xffff, v1473; GFX8-UNPACKED-NEXT: v_lshlrev_b32_e32 v1, 16, v1474; GFX8-UNPACKED-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD475; GFX8-UNPACKED-NEXT: ; return to shader part epilog476;477; GFX8-PACKED-LABEL: load_1d_v2f16_xw:478; GFX8-PACKED: ; %bb.0:479; GFX8-PACKED-NEXT: s_mov_b32 s0, s2480; GFX8-PACKED-NEXT: s_mov_b32 s1, s3481; GFX8-PACKED-NEXT: s_mov_b32 s2, s4482; GFX8-PACKED-NEXT: s_mov_b32 s3, s5483; GFX8-PACKED-NEXT: s_mov_b32 s4, s6484; GFX8-PACKED-NEXT: s_mov_b32 s5, s7485; GFX8-PACKED-NEXT: s_mov_b32 s6, s8486; GFX8-PACKED-NEXT: s_mov_b32 s7, s9487; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x9 unorm d16488; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)489; GFX8-PACKED-NEXT: ; return to shader part epilog490;491; GFX9-LABEL: load_1d_v2f16_xw:492; GFX9: ; %bb.0:493; GFX9-NEXT: s_mov_b32 s0, s2494; GFX9-NEXT: s_mov_b32 s1, s3495; GFX9-NEXT: s_mov_b32 s2, s4496; GFX9-NEXT: s_mov_b32 s3, s5497; GFX9-NEXT: s_mov_b32 s4, s6498; GFX9-NEXT: s_mov_b32 s5, s7499; GFX9-NEXT: s_mov_b32 s6, s8500; GFX9-NEXT: s_mov_b32 s7, s9501; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x9 unorm d16502; GFX9-NEXT: s_waitcnt vmcnt(0)503; GFX9-NEXT: ; return to shader part epilog504;505; GFX10PLUS-LABEL: load_1d_v2f16_xw:506; GFX10PLUS: ; %bb.0:507; GFX10PLUS-NEXT: s_mov_b32 s0, s2508; GFX10PLUS-NEXT: s_mov_b32 s1, s3509; GFX10PLUS-NEXT: s_mov_b32 s2, s4510; GFX10PLUS-NEXT: s_mov_b32 s3, s5511; GFX10PLUS-NEXT: s_mov_b32 s4, s6512; GFX10PLUS-NEXT: s_mov_b32 s5, s7513; GFX10PLUS-NEXT: s_mov_b32 s6, s8514; GFX10PLUS-NEXT: s_mov_b32 s7, s9515; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D unorm d16516; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)517; GFX10PLUS-NEXT: ; return to shader part epilog518;519; GFX12-LABEL: load_1d_v2f16_xw:520; GFX12: ; %bb.0:521; GFX12-NEXT: s_mov_b32 s0, s2522; GFX12-NEXT: s_mov_b32 s1, s3523; GFX12-NEXT: s_mov_b32 s2, s4524; GFX12-NEXT: s_mov_b32 s3, s5525; GFX12-NEXT: s_mov_b32 s4, s6526; GFX12-NEXT: s_mov_b32 s5, s7527; GFX12-NEXT: s_mov_b32 s6, s8528; GFX12-NEXT: s_mov_b32 s7, s9529; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x9 dim:SQ_RSRC_IMG_1D d16530; GFX12-NEXT: s_wait_loadcnt 0x0531; GFX12-NEXT: ; return to shader part epilog532 %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 9, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)533 ret <2 x half> %v534}535 536define amdgpu_ps <2 x half> @load_1d_v2f16_yz(<8 x i32> inreg %rsrc, i32 %s) {537; GFX8-UNPACKED-LABEL: load_1d_v2f16_yz:538; GFX8-UNPACKED: ; %bb.0:539; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2540; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3541; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4542; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5543; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6544; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7545; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8546; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9547; GFX8-UNPACKED-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x6 unorm d16548; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)549; GFX8-UNPACKED-NEXT: v_and_b32_e32 v1, 0xffff, v1550; GFX8-UNPACKED-NEXT: v_lshlrev_b32_e32 v1, 16, v1551; GFX8-UNPACKED-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD552; GFX8-UNPACKED-NEXT: ; return to shader part epilog553;554; GFX8-PACKED-LABEL: load_1d_v2f16_yz:555; GFX8-PACKED: ; %bb.0:556; GFX8-PACKED-NEXT: s_mov_b32 s0, s2557; GFX8-PACKED-NEXT: s_mov_b32 s1, s3558; GFX8-PACKED-NEXT: s_mov_b32 s2, s4559; GFX8-PACKED-NEXT: s_mov_b32 s3, s5560; GFX8-PACKED-NEXT: s_mov_b32 s4, s6561; GFX8-PACKED-NEXT: s_mov_b32 s5, s7562; GFX8-PACKED-NEXT: s_mov_b32 s6, s8563; GFX8-PACKED-NEXT: s_mov_b32 s7, s9564; GFX8-PACKED-NEXT: image_load v0, v0, s[0:7] dmask:0x6 unorm d16565; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)566; GFX8-PACKED-NEXT: ; return to shader part epilog567;568; GFX9-LABEL: load_1d_v2f16_yz:569; GFX9: ; %bb.0:570; GFX9-NEXT: s_mov_b32 s0, s2571; GFX9-NEXT: s_mov_b32 s1, s3572; GFX9-NEXT: s_mov_b32 s2, s4573; GFX9-NEXT: s_mov_b32 s3, s5574; GFX9-NEXT: s_mov_b32 s4, s6575; GFX9-NEXT: s_mov_b32 s5, s7576; GFX9-NEXT: s_mov_b32 s6, s8577; GFX9-NEXT: s_mov_b32 s7, s9578; GFX9-NEXT: image_load v0, v0, s[0:7] dmask:0x6 unorm d16579; GFX9-NEXT: s_waitcnt vmcnt(0)580; GFX9-NEXT: ; return to shader part epilog581;582; GFX10PLUS-LABEL: load_1d_v2f16_yz:583; GFX10PLUS: ; %bb.0:584; GFX10PLUS-NEXT: s_mov_b32 s0, s2585; GFX10PLUS-NEXT: s_mov_b32 s1, s3586; GFX10PLUS-NEXT: s_mov_b32 s2, s4587; GFX10PLUS-NEXT: s_mov_b32 s3, s5588; GFX10PLUS-NEXT: s_mov_b32 s4, s6589; GFX10PLUS-NEXT: s_mov_b32 s5, s7590; GFX10PLUS-NEXT: s_mov_b32 s6, s8591; GFX10PLUS-NEXT: s_mov_b32 s7, s9592; GFX10PLUS-NEXT: image_load v0, v0, s[0:7] dmask:0x6 dim:SQ_RSRC_IMG_1D unorm d16593; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)594; GFX10PLUS-NEXT: ; return to shader part epilog595;596; GFX12-LABEL: load_1d_v2f16_yz:597; GFX12: ; %bb.0:598; GFX12-NEXT: s_mov_b32 s0, s2599; GFX12-NEXT: s_mov_b32 s1, s3600; GFX12-NEXT: s_mov_b32 s2, s4601; GFX12-NEXT: s_mov_b32 s3, s5602; GFX12-NEXT: s_mov_b32 s4, s6603; GFX12-NEXT: s_mov_b32 s5, s7604; GFX12-NEXT: s_mov_b32 s6, s8605; GFX12-NEXT: s_mov_b32 s7, s9606; GFX12-NEXT: image_load v0, v0, s[0:7] dmask:0x6 dim:SQ_RSRC_IMG_1D d16607; GFX12-NEXT: s_wait_loadcnt 0x0608; GFX12-NEXT: ; return to shader part epilog609 %v = call <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 6, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)610 ret <2 x half> %v611}612 613define amdgpu_ps <3 x half> @load_1d_v3f16_xyz(<8 x i32> inreg %rsrc, i32 %s) {614; GFX8-UNPACKED-LABEL: load_1d_v3f16_xyz:615; GFX8-UNPACKED: ; %bb.0:616; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2617; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3618; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4619; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5620; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6621; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7622; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8623; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9624; GFX8-UNPACKED-NEXT: image_load v[0:2], v0, s[0:7] dmask:0x7 unorm d16625; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)626; GFX8-UNPACKED-NEXT: v_and_b32_e32 v3, 0xffff, v1627; GFX8-UNPACKED-NEXT: v_and_b32_e32 v1, 0xffff, v2628; GFX8-UNPACKED-NEXT: v_lshlrev_b32_e32 v2, 16, v3629; GFX8-UNPACKED-NEXT: v_or_b32_sdwa v0, v0, v2 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD630; GFX8-UNPACKED-NEXT: ; return to shader part epilog631;632; GFX8-PACKED-LABEL: load_1d_v3f16_xyz:633; GFX8-PACKED: ; %bb.0:634; GFX8-PACKED-NEXT: s_mov_b32 s0, s2635; GFX8-PACKED-NEXT: s_mov_b32 s1, s3636; GFX8-PACKED-NEXT: s_mov_b32 s2, s4637; GFX8-PACKED-NEXT: s_mov_b32 s3, s5638; GFX8-PACKED-NEXT: s_mov_b32 s4, s6639; GFX8-PACKED-NEXT: s_mov_b32 s5, s7640; GFX8-PACKED-NEXT: s_mov_b32 s6, s8641; GFX8-PACKED-NEXT: s_mov_b32 s7, s9642; GFX8-PACKED-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x7 unorm d16643; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)644; GFX8-PACKED-NEXT: v_and_b32_e32 v1, 0xffff, v1645; GFX8-PACKED-NEXT: ; return to shader part epilog646;647; GFX9-LABEL: load_1d_v3f16_xyz:648; GFX9: ; %bb.0:649; GFX9-NEXT: s_mov_b32 s0, s2650; GFX9-NEXT: s_mov_b32 s1, s3651; GFX9-NEXT: s_mov_b32 s2, s4652; GFX9-NEXT: s_mov_b32 s3, s5653; GFX9-NEXT: s_mov_b32 s4, s6654; GFX9-NEXT: s_mov_b32 s5, s7655; GFX9-NEXT: s_mov_b32 s6, s8656; GFX9-NEXT: s_mov_b32 s7, s9657; GFX9-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x7 unorm d16658; GFX9-NEXT: s_waitcnt vmcnt(0)659; GFX9-NEXT: ; return to shader part epilog660;661; GFX10PLUS-LABEL: load_1d_v3f16_xyz:662; GFX10PLUS: ; %bb.0:663; GFX10PLUS-NEXT: s_mov_b32 s0, s2664; GFX10PLUS-NEXT: s_mov_b32 s1, s3665; GFX10PLUS-NEXT: s_mov_b32 s2, s4666; GFX10PLUS-NEXT: s_mov_b32 s3, s5667; GFX10PLUS-NEXT: s_mov_b32 s4, s6668; GFX10PLUS-NEXT: s_mov_b32 s5, s7669; GFX10PLUS-NEXT: s_mov_b32 s6, s8670; GFX10PLUS-NEXT: s_mov_b32 s7, s9671; GFX10PLUS-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm d16672; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)673; GFX10PLUS-NEXT: ; return to shader part epilog674;675; GFX12-LABEL: load_1d_v3f16_xyz:676; GFX12: ; %bb.0:677; GFX12-NEXT: s_mov_b32 s0, s2678; GFX12-NEXT: s_mov_b32 s1, s3679; GFX12-NEXT: s_mov_b32 s2, s4680; GFX12-NEXT: s_mov_b32 s3, s5681; GFX12-NEXT: s_mov_b32 s4, s6682; GFX12-NEXT: s_mov_b32 s5, s7683; GFX12-NEXT: s_mov_b32 s6, s8684; GFX12-NEXT: s_mov_b32 s7, s9685; GFX12-NEXT: image_load v[0:1], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D d16686; GFX12-NEXT: s_wait_loadcnt 0x0687; GFX12-NEXT: ; return to shader part epilog688 %v = call <3 x half> @llvm.amdgcn.image.load.1d.v3f16.i32(i32 7, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)689 ret <3 x half> %v690}691 692define amdgpu_ps <4 x half> @load_1d_v4f16_xyzw(<8 x i32> inreg %rsrc, i32 %s) {693; GFX8-UNPACKED-LABEL: load_1d_v4f16_xyzw:694; GFX8-UNPACKED: ; %bb.0:695; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2696; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3697; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4698; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5699; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6700; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7701; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8702; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9703; GFX8-UNPACKED-NEXT: image_load v[0:3], v0, s[0:7] dmask:0xf unorm d16704; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)705; GFX8-UNPACKED-NEXT: v_and_b32_e32 v1, 0xffff, v1706; GFX8-UNPACKED-NEXT: v_and_b32_e32 v3, 0xffff, v3707; GFX8-UNPACKED-NEXT: v_lshlrev_b32_e32 v1, 16, v1708; GFX8-UNPACKED-NEXT: v_lshlrev_b32_e32 v3, 16, v3709; GFX8-UNPACKED-NEXT: v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD710; GFX8-UNPACKED-NEXT: v_or_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD711; GFX8-UNPACKED-NEXT: ; return to shader part epilog712;713; GFX8-PACKED-LABEL: load_1d_v4f16_xyzw:714; GFX8-PACKED: ; %bb.0:715; GFX8-PACKED-NEXT: s_mov_b32 s0, s2716; GFX8-PACKED-NEXT: s_mov_b32 s1, s3717; GFX8-PACKED-NEXT: s_mov_b32 s2, s4718; GFX8-PACKED-NEXT: s_mov_b32 s3, s5719; GFX8-PACKED-NEXT: s_mov_b32 s4, s6720; GFX8-PACKED-NEXT: s_mov_b32 s5, s7721; GFX8-PACKED-NEXT: s_mov_b32 s6, s8722; GFX8-PACKED-NEXT: s_mov_b32 s7, s9723; GFX8-PACKED-NEXT: image_load v[0:1], v0, s[0:7] dmask:0xf unorm d16724; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)725; GFX8-PACKED-NEXT: ; return to shader part epilog726;727; GFX9-LABEL: load_1d_v4f16_xyzw:728; GFX9: ; %bb.0:729; GFX9-NEXT: s_mov_b32 s0, s2730; GFX9-NEXT: s_mov_b32 s1, s3731; GFX9-NEXT: s_mov_b32 s2, s4732; GFX9-NEXT: s_mov_b32 s3, s5733; GFX9-NEXT: s_mov_b32 s4, s6734; GFX9-NEXT: s_mov_b32 s5, s7735; GFX9-NEXT: s_mov_b32 s6, s8736; GFX9-NEXT: s_mov_b32 s7, s9737; GFX9-NEXT: image_load v[0:1], v0, s[0:7] dmask:0xf unorm d16738; GFX9-NEXT: s_waitcnt vmcnt(0)739; GFX9-NEXT: ; return to shader part epilog740;741; GFX10PLUS-LABEL: load_1d_v4f16_xyzw:742; GFX10PLUS: ; %bb.0:743; GFX10PLUS-NEXT: s_mov_b32 s0, s2744; GFX10PLUS-NEXT: s_mov_b32 s1, s3745; GFX10PLUS-NEXT: s_mov_b32 s2, s4746; GFX10PLUS-NEXT: s_mov_b32 s3, s5747; GFX10PLUS-NEXT: s_mov_b32 s4, s6748; GFX10PLUS-NEXT: s_mov_b32 s5, s7749; GFX10PLUS-NEXT: s_mov_b32 s6, s8750; GFX10PLUS-NEXT: s_mov_b32 s7, s9751; GFX10PLUS-NEXT: image_load v[0:1], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D unorm d16752; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)753; GFX10PLUS-NEXT: ; return to shader part epilog754;755; GFX12-LABEL: load_1d_v4f16_xyzw:756; GFX12: ; %bb.0:757; GFX12-NEXT: s_mov_b32 s0, s2758; GFX12-NEXT: s_mov_b32 s1, s3759; GFX12-NEXT: s_mov_b32 s2, s4760; GFX12-NEXT: s_mov_b32 s3, s5761; GFX12-NEXT: s_mov_b32 s4, s6762; GFX12-NEXT: s_mov_b32 s5, s7763; GFX12-NEXT: s_mov_b32 s6, s8764; GFX12-NEXT: s_mov_b32 s7, s9765; GFX12-NEXT: image_load v[0:1], v0, s[0:7] dmask:0xf dim:SQ_RSRC_IMG_1D d16766; GFX12-NEXT: s_wait_loadcnt 0x0767; GFX12-NEXT: ; return to shader part epilog768 %v = call <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 0, i32 0)769 ret <4 x half> %v770}771 772define amdgpu_ps float @load_1d_f16_tfe_dmask_x(<8 x i32> inreg %rsrc, i32 %s) {773; GFX8-UNPACKED-LABEL: load_1d_f16_tfe_dmask_x:774; GFX8-UNPACKED: ; %bb.0:775; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v1, 0776; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2777; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3778; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4779; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5780; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6781; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7782; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8783; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9784; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v2, v1785; GFX8-UNPACKED-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe d16786; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)787; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v0, v2788; GFX8-UNPACKED-NEXT: ; return to shader part epilog789;790; GFX8-PACKED-LABEL: load_1d_f16_tfe_dmask_x:791; GFX8-PACKED: ; %bb.0:792; GFX8-PACKED-NEXT: v_mov_b32_e32 v1, 0793; GFX8-PACKED-NEXT: s_mov_b32 s0, s2794; GFX8-PACKED-NEXT: s_mov_b32 s1, s3795; GFX8-PACKED-NEXT: s_mov_b32 s2, s4796; GFX8-PACKED-NEXT: s_mov_b32 s3, s5797; GFX8-PACKED-NEXT: s_mov_b32 s4, s6798; GFX8-PACKED-NEXT: s_mov_b32 s5, s7799; GFX8-PACKED-NEXT: s_mov_b32 s6, s8800; GFX8-PACKED-NEXT: s_mov_b32 s7, s9801; GFX8-PACKED-NEXT: v_mov_b32_e32 v2, v1802; GFX8-PACKED-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe d16803; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)804; GFX8-PACKED-NEXT: v_mov_b32_e32 v0, v2805; GFX8-PACKED-NEXT: ; return to shader part epilog806;807; GFX9-LABEL: load_1d_f16_tfe_dmask_x:808; GFX9: ; %bb.0:809; GFX9-NEXT: v_mov_b32_e32 v1, 0810; GFX9-NEXT: s_mov_b32 s0, s2811; GFX9-NEXT: s_mov_b32 s1, s3812; GFX9-NEXT: s_mov_b32 s2, s4813; GFX9-NEXT: s_mov_b32 s3, s5814; GFX9-NEXT: s_mov_b32 s4, s6815; GFX9-NEXT: s_mov_b32 s5, s7816; GFX9-NEXT: s_mov_b32 s6, s8817; GFX9-NEXT: s_mov_b32 s7, s9818; GFX9-NEXT: v_mov_b32_e32 v2, v1819; GFX9-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x1 unorm tfe d16820; GFX9-NEXT: s_waitcnt vmcnt(0)821; GFX9-NEXT: v_mov_b32_e32 v0, v2822; GFX9-NEXT: ; return to shader part epilog823;824; GFX10PLUS-LABEL: load_1d_f16_tfe_dmask_x:825; GFX10PLUS: ; %bb.0:826; GFX10PLUS-NEXT: v_mov_b32_e32 v1, 0827; GFX10PLUS-NEXT: s_mov_b32 s0, s2828; GFX10PLUS-NEXT: s_mov_b32 s1, s3829; GFX10PLUS-NEXT: s_mov_b32 s2, s4830; GFX10PLUS-NEXT: s_mov_b32 s3, s5831; GFX10PLUS-NEXT: s_mov_b32 s4, s6832; GFX10PLUS-NEXT: s_mov_b32 s5, s7833; GFX10PLUS-NEXT: s_mov_b32 s6, s8834; GFX10PLUS-NEXT: s_mov_b32 s7, s9835; GFX10PLUS-NEXT: v_mov_b32_e32 v2, v1836; GFX10PLUS-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16837; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)838; GFX10PLUS-NEXT: v_mov_b32_e32 v0, v2839; GFX10PLUS-NEXT: ; return to shader part epilog840;841; GFX12-LABEL: load_1d_f16_tfe_dmask_x:842; GFX12: ; %bb.0:843; GFX12-NEXT: v_mov_b32_e32 v1, 0844; GFX12-NEXT: s_mov_b32 s0, s2845; GFX12-NEXT: s_mov_b32 s1, s3846; GFX12-NEXT: s_mov_b32 s2, s4847; GFX12-NEXT: s_mov_b32 s3, s5848; GFX12-NEXT: s_mov_b32 s4, s6849; GFX12-NEXT: s_mov_b32 s5, s7850; GFX12-NEXT: s_mov_b32 s6, s8851; GFX12-NEXT: s_mov_b32 s7, s9852; GFX12-NEXT: v_mov_b32_e32 v2, v1853; GFX12-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x1 dim:SQ_RSRC_IMG_1D tfe d16854; GFX12-NEXT: s_wait_loadcnt 0x0855; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)856; GFX12-NEXT: v_mov_b32_e32 v0, v2857; GFX12-NEXT: ; return to shader part epilog858 %v = call { half, i32 } @llvm.amdgcn.image.load.1d.sl_f16i32s.i32(i32 1, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)859 %v.err = extractvalue { half, i32 } %v, 1860 %vv = bitcast i32 %v.err to float861 ret float %vv862}863 864define amdgpu_ps float @load_1d_v2f16_tfe_dmask_xy(<8 x i32> inreg %rsrc, i32 %s) {865; GFX8-UNPACKED-LABEL: load_1d_v2f16_tfe_dmask_xy:866; GFX8-UNPACKED: ; %bb.0:867; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v1, 0868; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2869; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3870; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4871; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5872; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6873; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7874; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8875; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9876; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v2, v1877; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v3, v1878; GFX8-UNPACKED-NEXT: image_load v[1:3], v0, s[0:7] dmask:0x3 unorm tfe d16879; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)880; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v0, v3881; GFX8-UNPACKED-NEXT: ; return to shader part epilog882;883; GFX8-PACKED-LABEL: load_1d_v2f16_tfe_dmask_xy:884; GFX8-PACKED: ; %bb.0:885; GFX8-PACKED-NEXT: v_mov_b32_e32 v1, 0886; GFX8-PACKED-NEXT: s_mov_b32 s0, s2887; GFX8-PACKED-NEXT: s_mov_b32 s1, s3888; GFX8-PACKED-NEXT: s_mov_b32 s2, s4889; GFX8-PACKED-NEXT: s_mov_b32 s3, s5890; GFX8-PACKED-NEXT: s_mov_b32 s4, s6891; GFX8-PACKED-NEXT: s_mov_b32 s5, s7892; GFX8-PACKED-NEXT: s_mov_b32 s6, s8893; GFX8-PACKED-NEXT: s_mov_b32 s7, s9894; GFX8-PACKED-NEXT: v_mov_b32_e32 v2, v1895; GFX8-PACKED-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x3 unorm tfe d16896; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)897; GFX8-PACKED-NEXT: v_mov_b32_e32 v0, v2898; GFX8-PACKED-NEXT: ; return to shader part epilog899;900; GFX9-LABEL: load_1d_v2f16_tfe_dmask_xy:901; GFX9: ; %bb.0:902; GFX9-NEXT: v_mov_b32_e32 v1, 0903; GFX9-NEXT: s_mov_b32 s0, s2904; GFX9-NEXT: s_mov_b32 s1, s3905; GFX9-NEXT: s_mov_b32 s2, s4906; GFX9-NEXT: s_mov_b32 s3, s5907; GFX9-NEXT: s_mov_b32 s4, s6908; GFX9-NEXT: s_mov_b32 s5, s7909; GFX9-NEXT: s_mov_b32 s6, s8910; GFX9-NEXT: s_mov_b32 s7, s9911; GFX9-NEXT: v_mov_b32_e32 v2, v1912; GFX9-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x3 unorm tfe d16913; GFX9-NEXT: s_waitcnt vmcnt(0)914; GFX9-NEXT: v_mov_b32_e32 v0, v2915; GFX9-NEXT: ; return to shader part epilog916;917; GFX10PLUS-LABEL: load_1d_v2f16_tfe_dmask_xy:918; GFX10PLUS: ; %bb.0:919; GFX10PLUS-NEXT: v_mov_b32_e32 v1, 0920; GFX10PLUS-NEXT: s_mov_b32 s0, s2921; GFX10PLUS-NEXT: s_mov_b32 s1, s3922; GFX10PLUS-NEXT: s_mov_b32 s2, s4923; GFX10PLUS-NEXT: s_mov_b32 s3, s5924; GFX10PLUS-NEXT: s_mov_b32 s4, s6925; GFX10PLUS-NEXT: s_mov_b32 s5, s7926; GFX10PLUS-NEXT: s_mov_b32 s6, s8927; GFX10PLUS-NEXT: s_mov_b32 s7, s9928; GFX10PLUS-NEXT: v_mov_b32_e32 v2, v1929; GFX10PLUS-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm tfe d16930; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)931; GFX10PLUS-NEXT: v_mov_b32_e32 v0, v2932; GFX10PLUS-NEXT: ; return to shader part epilog933;934; GFX12-LABEL: load_1d_v2f16_tfe_dmask_xy:935; GFX12: ; %bb.0:936; GFX12-NEXT: v_mov_b32_e32 v1, 0937; GFX12-NEXT: s_mov_b32 s0, s2938; GFX12-NEXT: s_mov_b32 s1, s3939; GFX12-NEXT: s_mov_b32 s2, s4940; GFX12-NEXT: s_mov_b32 s3, s5941; GFX12-NEXT: s_mov_b32 s4, s6942; GFX12-NEXT: s_mov_b32 s5, s7943; GFX12-NEXT: s_mov_b32 s6, s8944; GFX12-NEXT: s_mov_b32 s7, s9945; GFX12-NEXT: v_mov_b32_e32 v2, v1946; GFX12-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x3 dim:SQ_RSRC_IMG_1D tfe d16947; GFX12-NEXT: s_wait_loadcnt 0x0948; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)949; GFX12-NEXT: v_mov_b32_e32 v0, v2950; GFX12-NEXT: ; return to shader part epilog951 %v = call { <2 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v2f16i32s.i32(i32 3, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)952 %v.err = extractvalue { <2 x half>, i32 } %v, 1953 %vv = bitcast i32 %v.err to float954 ret float %vv955}956 957define amdgpu_ps float @load_1d_v3f16_tfe_dmask_xyz(<8 x i32> inreg %rsrc, i32 %s) {958; GFX8-UNPACKED-LABEL: load_1d_v3f16_tfe_dmask_xyz:959; GFX8-UNPACKED: ; %bb.0:960; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v1, 0961; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s2962; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s3963; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s4964; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s5965; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s6966; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s7967; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s8968; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s9969; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v2, v1970; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v3, v1971; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v4, v1972; GFX8-UNPACKED-NEXT: image_load v[1:4], v0, s[0:7] dmask:0x7 unorm tfe d16973; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)974; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v0, v4975; GFX8-UNPACKED-NEXT: ; return to shader part epilog976;977; GFX8-PACKED-LABEL: load_1d_v3f16_tfe_dmask_xyz:978; GFX8-PACKED: ; %bb.0:979; GFX8-PACKED-NEXT: v_mov_b32_e32 v1, 0980; GFX8-PACKED-NEXT: s_mov_b32 s0, s2981; GFX8-PACKED-NEXT: s_mov_b32 s1, s3982; GFX8-PACKED-NEXT: s_mov_b32 s2, s4983; GFX8-PACKED-NEXT: s_mov_b32 s3, s5984; GFX8-PACKED-NEXT: s_mov_b32 s4, s6985; GFX8-PACKED-NEXT: s_mov_b32 s5, s7986; GFX8-PACKED-NEXT: s_mov_b32 s6, s8987; GFX8-PACKED-NEXT: s_mov_b32 s7, s9988; GFX8-PACKED-NEXT: v_mov_b32_e32 v2, v1989; GFX8-PACKED-NEXT: v_mov_b32_e32 v3, v1990; GFX8-PACKED-NEXT: image_load v[1:3], v0, s[0:7] dmask:0x7 unorm tfe d16991; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)992; GFX8-PACKED-NEXT: v_mov_b32_e32 v0, v3993; GFX8-PACKED-NEXT: ; return to shader part epilog994;995; GFX9-LABEL: load_1d_v3f16_tfe_dmask_xyz:996; GFX9: ; %bb.0:997; GFX9-NEXT: v_mov_b32_e32 v1, 0998; GFX9-NEXT: s_mov_b32 s0, s2999; GFX9-NEXT: s_mov_b32 s1, s31000; GFX9-NEXT: s_mov_b32 s2, s41001; GFX9-NEXT: s_mov_b32 s3, s51002; GFX9-NEXT: s_mov_b32 s4, s61003; GFX9-NEXT: s_mov_b32 s5, s71004; GFX9-NEXT: s_mov_b32 s6, s81005; GFX9-NEXT: s_mov_b32 s7, s91006; GFX9-NEXT: v_mov_b32_e32 v2, v11007; GFX9-NEXT: v_mov_b32_e32 v3, v11008; GFX9-NEXT: image_load v[1:3], v0, s[0:7] dmask:0x7 unorm tfe d161009; GFX9-NEXT: s_waitcnt vmcnt(0)1010; GFX9-NEXT: v_mov_b32_e32 v0, v31011; GFX9-NEXT: ; return to shader part epilog1012;1013; GFX10PLUS-LABEL: load_1d_v3f16_tfe_dmask_xyz:1014; GFX10PLUS: ; %bb.0:1015; GFX10PLUS-NEXT: v_mov_b32_e32 v1, 01016; GFX10PLUS-NEXT: s_mov_b32 s0, s21017; GFX10PLUS-NEXT: s_mov_b32 s1, s31018; GFX10PLUS-NEXT: s_mov_b32 s2, s41019; GFX10PLUS-NEXT: s_mov_b32 s3, s51020; GFX10PLUS-NEXT: s_mov_b32 s4, s61021; GFX10PLUS-NEXT: s_mov_b32 s5, s71022; GFX10PLUS-NEXT: s_mov_b32 s6, s81023; GFX10PLUS-NEXT: s_mov_b32 s7, s91024; GFX10PLUS-NEXT: v_mov_b32_e32 v2, v11025; GFX10PLUS-NEXT: v_mov_b32_e32 v3, v11026; GFX10PLUS-NEXT: image_load v[1:3], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm tfe d161027; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)1028; GFX10PLUS-NEXT: v_mov_b32_e32 v0, v31029; GFX10PLUS-NEXT: ; return to shader part epilog1030;1031; GFX12-LABEL: load_1d_v3f16_tfe_dmask_xyz:1032; GFX12: ; %bb.0:1033; GFX12-NEXT: v_mov_b32_e32 v1, 01034; GFX12-NEXT: s_mov_b32 s0, s21035; GFX12-NEXT: s_mov_b32 s1, s31036; GFX12-NEXT: s_mov_b32 s2, s41037; GFX12-NEXT: s_mov_b32 s3, s51038; GFX12-NEXT: s_mov_b32 s4, s61039; GFX12-NEXT: s_mov_b32 s5, s71040; GFX12-NEXT: s_mov_b32 s6, s81041; GFX12-NEXT: s_mov_b32 s7, s91042; GFX12-NEXT: v_dual_mov_b32 v2, v1 :: v_dual_mov_b32 v3, v11043; GFX12-NEXT: image_load v[1:3], v0, s[0:7] dmask:0x7 dim:SQ_RSRC_IMG_1D tfe d161044; GFX12-NEXT: s_wait_loadcnt 0x01045; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)1046; GFX12-NEXT: v_mov_b32_e32 v0, v31047; GFX12-NEXT: ; return to shader part epilog1048 %v = call { <3 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v3f16i32s.i32(i32 7, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)1049 %v.err = extractvalue { <3 x half>, i32 } %v, 11050 %vv = bitcast i32 %v.err to float1051 ret float %vv1052}1053 1054define amdgpu_ps float @load_1d_v4f16_tfe_dmask_xyzw(<8 x i32> inreg %rsrc, i32 %s) {1055; GFX8-UNPACKED-LABEL: load_1d_v4f16_tfe_dmask_xyzw:1056; GFX8-UNPACKED: ; %bb.0:1057; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v1, 01058; GFX8-UNPACKED-NEXT: s_mov_b32 s0, s21059; GFX8-UNPACKED-NEXT: s_mov_b32 s1, s31060; GFX8-UNPACKED-NEXT: s_mov_b32 s2, s41061; GFX8-UNPACKED-NEXT: s_mov_b32 s3, s51062; GFX8-UNPACKED-NEXT: s_mov_b32 s4, s61063; GFX8-UNPACKED-NEXT: s_mov_b32 s5, s71064; GFX8-UNPACKED-NEXT: s_mov_b32 s6, s81065; GFX8-UNPACKED-NEXT: s_mov_b32 s7, s91066; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v2, v11067; GFX8-UNPACKED-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x10 unorm tfe d161068; GFX8-UNPACKED-NEXT: s_waitcnt vmcnt(0)1069; GFX8-UNPACKED-NEXT: v_mov_b32_e32 v0, v21070; GFX8-UNPACKED-NEXT: ; return to shader part epilog1071;1072; GFX8-PACKED-LABEL: load_1d_v4f16_tfe_dmask_xyzw:1073; GFX8-PACKED: ; %bb.0:1074; GFX8-PACKED-NEXT: v_mov_b32_e32 v1, 01075; GFX8-PACKED-NEXT: s_mov_b32 s0, s21076; GFX8-PACKED-NEXT: s_mov_b32 s1, s31077; GFX8-PACKED-NEXT: s_mov_b32 s2, s41078; GFX8-PACKED-NEXT: s_mov_b32 s3, s51079; GFX8-PACKED-NEXT: s_mov_b32 s4, s61080; GFX8-PACKED-NEXT: s_mov_b32 s5, s71081; GFX8-PACKED-NEXT: s_mov_b32 s6, s81082; GFX8-PACKED-NEXT: s_mov_b32 s7, s91083; GFX8-PACKED-NEXT: v_mov_b32_e32 v2, v11084; GFX8-PACKED-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x10 unorm tfe d161085; GFX8-PACKED-NEXT: s_waitcnt vmcnt(0)1086; GFX8-PACKED-NEXT: v_mov_b32_e32 v0, v21087; GFX8-PACKED-NEXT: ; return to shader part epilog1088;1089; GFX9-LABEL: load_1d_v4f16_tfe_dmask_xyzw:1090; GFX9: ; %bb.0:1091; GFX9-NEXT: v_mov_b32_e32 v1, 01092; GFX9-NEXT: s_mov_b32 s0, s21093; GFX9-NEXT: s_mov_b32 s1, s31094; GFX9-NEXT: s_mov_b32 s2, s41095; GFX9-NEXT: s_mov_b32 s3, s51096; GFX9-NEXT: s_mov_b32 s4, s61097; GFX9-NEXT: s_mov_b32 s5, s71098; GFX9-NEXT: s_mov_b32 s6, s81099; GFX9-NEXT: s_mov_b32 s7, s91100; GFX9-NEXT: v_mov_b32_e32 v2, v11101; GFX9-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x10 unorm tfe d161102; GFX9-NEXT: s_waitcnt vmcnt(0)1103; GFX9-NEXT: v_mov_b32_e32 v0, v21104; GFX9-NEXT: ; return to shader part epilog1105;1106; GFX10PLUS-LABEL: load_1d_v4f16_tfe_dmask_xyzw:1107; GFX10PLUS: ; %bb.0:1108; GFX10PLUS-NEXT: v_mov_b32_e32 v1, 01109; GFX10PLUS-NEXT: s_mov_b32 s0, s21110; GFX10PLUS-NEXT: s_mov_b32 s1, s31111; GFX10PLUS-NEXT: s_mov_b32 s2, s41112; GFX10PLUS-NEXT: s_mov_b32 s3, s51113; GFX10PLUS-NEXT: s_mov_b32 s4, s61114; GFX10PLUS-NEXT: s_mov_b32 s5, s71115; GFX10PLUS-NEXT: s_mov_b32 s6, s81116; GFX10PLUS-NEXT: s_mov_b32 s7, s91117; GFX10PLUS-NEXT: v_mov_b32_e32 v2, v11118; GFX10PLUS-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x10 dim:SQ_RSRC_IMG_1D unorm tfe d161119; GFX10PLUS-NEXT: s_waitcnt vmcnt(0)1120; GFX10PLUS-NEXT: v_mov_b32_e32 v0, v21121; GFX10PLUS-NEXT: ; return to shader part epilog1122;1123; GFX12-LABEL: load_1d_v4f16_tfe_dmask_xyzw:1124; GFX12: ; %bb.0:1125; GFX12-NEXT: v_mov_b32_e32 v1, 01126; GFX12-NEXT: s_mov_b32 s0, s21127; GFX12-NEXT: s_mov_b32 s1, s31128; GFX12-NEXT: s_mov_b32 s2, s41129; GFX12-NEXT: s_mov_b32 s3, s51130; GFX12-NEXT: s_mov_b32 s4, s61131; GFX12-NEXT: s_mov_b32 s5, s71132; GFX12-NEXT: s_mov_b32 s6, s81133; GFX12-NEXT: s_mov_b32 s7, s91134; GFX12-NEXT: v_mov_b32_e32 v2, v11135; GFX12-NEXT: image_load v[1:2], v0, s[0:7] dmask:0x10 dim:SQ_RSRC_IMG_1D tfe d161136; GFX12-NEXT: s_wait_loadcnt 0x01137; GFX12-NEXT: s_delay_alu instid0(VALU_DEP_1)1138; GFX12-NEXT: v_mov_b32_e32 v0, v21139; GFX12-NEXT: ; return to shader part epilog1140 %v = call { <4 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v4f16i32s.i32(i32 16, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)1141 %v.err = extractvalue { <4 x half>, i32 } %v, 11142 %vv = bitcast i32 %v.err to float1143 ret float %vv1144}1145 1146declare half @llvm.amdgcn.image.load.1d.half.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01147declare <2 x half> @llvm.amdgcn.image.load.1d.v2f16.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01148declare <3 x half> @llvm.amdgcn.image.load.1d.v3f16.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01149declare <4 x half> @llvm.amdgcn.image.load.1d.v4f16.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01150 1151declare { half, i32 } @llvm.amdgcn.image.load.1d.sl_f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01152declare { <2 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v2f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01153declare { <3 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v3f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01154declare { <4 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v4f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #01155 1156attributes #0 = { nounwind readonly }1157