brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.3 KiB · f9c679d Raw
656 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 < %s | FileCheck -check-prefix=GFX9 %s3; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 < %s | FileCheck -check-prefix=GFX10 %s4; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 < %s | FileCheck -check-prefix=GFX11 %s5; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tonga < %s | FileCheck -check-prefix=GFX8-UNPACKED %s6 7define amdgpu_ps void @load_1d_f16_tfe_dmask0(<8 x i32> inreg %rsrc, i32 %s) {8; GFX9-LABEL: load_1d_f16_tfe_dmask0:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    v_mov_b32_e32 v1, 011; GFX9-NEXT:    s_mov_b32 s11, s912; GFX9-NEXT:    s_mov_b32 s10, s813; GFX9-NEXT:    s_mov_b32 s9, s714; GFX9-NEXT:    s_mov_b32 s8, s615; GFX9-NEXT:    s_mov_b32 s7, s516; GFX9-NEXT:    s_mov_b32 s6, s417; GFX9-NEXT:    s_mov_b32 s5, s318; GFX9-NEXT:    s_mov_b32 s4, s219; GFX9-NEXT:    v_mov_b32_e32 v2, v120; GFX9-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d1621; GFX9-NEXT:    s_waitcnt vmcnt(0)22; GFX9-NEXT:    global_store_short v[0:1], v1, off23; GFX9-NEXT:    s_waitcnt vmcnt(0)24; GFX9-NEXT:    global_store_dword v[0:1], v2, off25; GFX9-NEXT:    s_waitcnt vmcnt(0)26; GFX9-NEXT:    s_endpgm27;28; GFX10-LABEL: load_1d_f16_tfe_dmask0:29; GFX10:       ; %bb.0:30; GFX10-NEXT:    v_mov_b32_e32 v1, 031; GFX10-NEXT:    s_mov_b32 s11, s932; GFX10-NEXT:    s_mov_b32 s10, s833; GFX10-NEXT:    s_mov_b32 s9, s734; GFX10-NEXT:    s_mov_b32 s8, s635; GFX10-NEXT:    s_mov_b32 s7, s536; GFX10-NEXT:    s_mov_b32 s6, s437; GFX10-NEXT:    s_mov_b32 s5, s338; GFX10-NEXT:    s_mov_b32 s4, s239; GFX10-NEXT:    v_mov_b32_e32 v2, v140; GFX10-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d1641; GFX10-NEXT:    s_waitcnt vmcnt(0)42; GFX10-NEXT:    global_store_short v[0:1], v1, off43; GFX10-NEXT:    s_waitcnt_vscnt null, 0x044; GFX10-NEXT:    global_store_dword v[0:1], v2, off45; GFX10-NEXT:    s_waitcnt_vscnt null, 0x046; GFX10-NEXT:    s_endpgm47;48; GFX11-LABEL: load_1d_f16_tfe_dmask0:49; GFX11:       ; %bb.0:50; GFX11-NEXT:    v_mov_b32_e32 v1, 051; GFX11-NEXT:    s_mov_b32 s11, s952; GFX11-NEXT:    s_mov_b32 s10, s853; GFX11-NEXT:    s_mov_b32 s9, s754; GFX11-NEXT:    s_mov_b32 s8, s655; GFX11-NEXT:    s_mov_b32 s7, s556; GFX11-NEXT:    s_mov_b32 s6, s457; GFX11-NEXT:    s_mov_b32 s5, s358; GFX11-NEXT:    s_mov_b32 s4, s259; GFX11-NEXT:    v_mov_b32_e32 v2, v160; GFX11-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d1661; GFX11-NEXT:    s_waitcnt vmcnt(0)62; GFX11-NEXT:    global_store_b16 v[0:1], v1, off dlc63; GFX11-NEXT:    s_waitcnt_vscnt null, 0x064; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc65; GFX11-NEXT:    s_waitcnt_vscnt null, 0x066; GFX11-NEXT:    s_endpgm67;68; GFX8-UNPACKED-LABEL: load_1d_f16_tfe_dmask0:69; GFX8-UNPACKED:       ; %bb.0:70; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 071; GFX8-UNPACKED-NEXT:    s_mov_b32 s11, s972; GFX8-UNPACKED-NEXT:    s_mov_b32 s10, s873; GFX8-UNPACKED-NEXT:    s_mov_b32 s9, s774; GFX8-UNPACKED-NEXT:    s_mov_b32 s8, s675; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s576; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s477; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s378; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s279; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v180; GFX8-UNPACKED-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d1681; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)82; GFX8-UNPACKED-NEXT:    flat_store_short v[0:1], v183; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)84; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v285; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)86; GFX8-UNPACKED-NEXT:    s_endpgm87  %v = call { half, i32 } @llvm.amdgcn.image.load.1d.sl_f16i32s.i32(i32 0, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)88  %v.data = extractvalue { half, i32 } %v, 089  %v.err = extractvalue { half, i32 } %v, 190  store volatile half %v.data, ptr addrspace(1) poison91  store volatile i32 %v.err, ptr addrspace(1) poison92  ret void93}94 95define amdgpu_ps void @load_1d_f16_tfe_dmask1(<8 x i32> inreg %rsrc, i32 %s) {96; GFX9-LABEL: load_1d_f16_tfe_dmask1:97; GFX9:       ; %bb.0:98; GFX9-NEXT:    v_mov_b32_e32 v1, 099; GFX9-NEXT:    s_mov_b32 s11, s9100; GFX9-NEXT:    s_mov_b32 s10, s8101; GFX9-NEXT:    s_mov_b32 s9, s7102; GFX9-NEXT:    s_mov_b32 s8, s6103; GFX9-NEXT:    s_mov_b32 s7, s5104; GFX9-NEXT:    s_mov_b32 s6, s4105; GFX9-NEXT:    s_mov_b32 s5, s3106; GFX9-NEXT:    s_mov_b32 s4, s2107; GFX9-NEXT:    v_mov_b32_e32 v2, v1108; GFX9-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d16109; GFX9-NEXT:    s_waitcnt vmcnt(0)110; GFX9-NEXT:    global_store_short v[0:1], v1, off111; GFX9-NEXT:    s_waitcnt vmcnt(0)112; GFX9-NEXT:    global_store_dword v[0:1], v2, off113; GFX9-NEXT:    s_waitcnt vmcnt(0)114; GFX9-NEXT:    s_endpgm115;116; GFX10-LABEL: load_1d_f16_tfe_dmask1:117; GFX10:       ; %bb.0:118; GFX10-NEXT:    v_mov_b32_e32 v1, 0119; GFX10-NEXT:    s_mov_b32 s11, s9120; GFX10-NEXT:    s_mov_b32 s10, s8121; GFX10-NEXT:    s_mov_b32 s9, s7122; GFX10-NEXT:    s_mov_b32 s8, s6123; GFX10-NEXT:    s_mov_b32 s7, s5124; GFX10-NEXT:    s_mov_b32 s6, s4125; GFX10-NEXT:    s_mov_b32 s5, s3126; GFX10-NEXT:    s_mov_b32 s4, s2127; GFX10-NEXT:    v_mov_b32_e32 v2, v1128; GFX10-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16129; GFX10-NEXT:    s_waitcnt vmcnt(0)130; GFX10-NEXT:    global_store_short v[0:1], v1, off131; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0132; GFX10-NEXT:    global_store_dword v[0:1], v2, off133; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0134; GFX10-NEXT:    s_endpgm135;136; GFX11-LABEL: load_1d_f16_tfe_dmask1:137; GFX11:       ; %bb.0:138; GFX11-NEXT:    v_mov_b32_e32 v1, 0139; GFX11-NEXT:    s_mov_b32 s11, s9140; GFX11-NEXT:    s_mov_b32 s10, s8141; GFX11-NEXT:    s_mov_b32 s9, s7142; GFX11-NEXT:    s_mov_b32 s8, s6143; GFX11-NEXT:    s_mov_b32 s7, s5144; GFX11-NEXT:    s_mov_b32 s6, s4145; GFX11-NEXT:    s_mov_b32 s5, s3146; GFX11-NEXT:    s_mov_b32 s4, s2147; GFX11-NEXT:    v_mov_b32_e32 v2, v1148; GFX11-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16149; GFX11-NEXT:    s_waitcnt vmcnt(0)150; GFX11-NEXT:    global_store_b16 v[0:1], v1, off dlc151; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0152; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc153; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0154; GFX11-NEXT:    s_endpgm155;156; GFX8-UNPACKED-LABEL: load_1d_f16_tfe_dmask1:157; GFX8-UNPACKED:       ; %bb.0:158; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0159; GFX8-UNPACKED-NEXT:    s_mov_b32 s11, s9160; GFX8-UNPACKED-NEXT:    s_mov_b32 s10, s8161; GFX8-UNPACKED-NEXT:    s_mov_b32 s9, s7162; GFX8-UNPACKED-NEXT:    s_mov_b32 s8, s6163; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s5164; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s4165; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s3166; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s2167; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1168; GFX8-UNPACKED-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d16169; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)170; GFX8-UNPACKED-NEXT:    flat_store_short v[0:1], v1171; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)172; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v2173; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)174; GFX8-UNPACKED-NEXT:    s_endpgm175  %v = call { half, i32 } @llvm.amdgcn.image.load.1d.sl_f16i32s.i32(i32 1, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)176  %v.data = extractvalue { half, i32 } %v, 0177  %v.err = extractvalue { half, i32 } %v, 1178  store volatile half %v.data, ptr addrspace(1) poison179  store volatile i32 %v.err, ptr addrspace(1) poison180  ret void181}182 183define amdgpu_ps void @load_1d_v2f16_tfe_dmask0(<8 x i32> inreg %rsrc, i32 %s) {184; GFX9-LABEL: load_1d_v2f16_tfe_dmask0:185; GFX9:       ; %bb.0:186; GFX9-NEXT:    v_mov_b32_e32 v1, 0187; GFX9-NEXT:    s_mov_b32 s11, s9188; GFX9-NEXT:    s_mov_b32 s10, s8189; GFX9-NEXT:    s_mov_b32 s9, s7190; GFX9-NEXT:    s_mov_b32 s8, s6191; GFX9-NEXT:    s_mov_b32 s7, s5192; GFX9-NEXT:    s_mov_b32 s6, s4193; GFX9-NEXT:    s_mov_b32 s5, s3194; GFX9-NEXT:    s_mov_b32 s4, s2195; GFX9-NEXT:    v_mov_b32_e32 v2, v1196; GFX9-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d16197; GFX9-NEXT:    s_waitcnt vmcnt(0)198; GFX9-NEXT:    global_store_dword v[0:1], v1, off199; GFX9-NEXT:    s_waitcnt vmcnt(0)200; GFX9-NEXT:    global_store_dword v[0:1], v2, off201; GFX9-NEXT:    s_waitcnt vmcnt(0)202; GFX9-NEXT:    s_endpgm203;204; GFX10-LABEL: load_1d_v2f16_tfe_dmask0:205; GFX10:       ; %bb.0:206; GFX10-NEXT:    v_mov_b32_e32 v1, 0207; GFX10-NEXT:    s_mov_b32 s11, s9208; GFX10-NEXT:    s_mov_b32 s10, s8209; GFX10-NEXT:    s_mov_b32 s9, s7210; GFX10-NEXT:    s_mov_b32 s8, s6211; GFX10-NEXT:    s_mov_b32 s7, s5212; GFX10-NEXT:    s_mov_b32 s6, s4213; GFX10-NEXT:    s_mov_b32 s5, s3214; GFX10-NEXT:    s_mov_b32 s4, s2215; GFX10-NEXT:    v_mov_b32_e32 v2, v1216; GFX10-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16217; GFX10-NEXT:    s_waitcnt vmcnt(0)218; GFX10-NEXT:    global_store_dword v[0:1], v1, off219; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0220; GFX10-NEXT:    global_store_dword v[0:1], v2, off221; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0222; GFX10-NEXT:    s_endpgm223;224; GFX11-LABEL: load_1d_v2f16_tfe_dmask0:225; GFX11:       ; %bb.0:226; GFX11-NEXT:    v_mov_b32_e32 v1, 0227; GFX11-NEXT:    s_mov_b32 s11, s9228; GFX11-NEXT:    s_mov_b32 s10, s8229; GFX11-NEXT:    s_mov_b32 s9, s7230; GFX11-NEXT:    s_mov_b32 s8, s6231; GFX11-NEXT:    s_mov_b32 s7, s5232; GFX11-NEXT:    s_mov_b32 s6, s4233; GFX11-NEXT:    s_mov_b32 s5, s3234; GFX11-NEXT:    s_mov_b32 s4, s2235; GFX11-NEXT:    v_mov_b32_e32 v2, v1236; GFX11-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16237; GFX11-NEXT:    s_waitcnt vmcnt(0)238; GFX11-NEXT:    global_store_b32 v[0:1], v1, off dlc239; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0240; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc241; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0242; GFX11-NEXT:    s_endpgm243;244; GFX8-UNPACKED-LABEL: load_1d_v2f16_tfe_dmask0:245; GFX8-UNPACKED:       ; %bb.0:246; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0247; GFX8-UNPACKED-NEXT:    s_mov_b32 s11, s9248; GFX8-UNPACKED-NEXT:    s_mov_b32 s10, s8249; GFX8-UNPACKED-NEXT:    s_mov_b32 s9, s7250; GFX8-UNPACKED-NEXT:    s_mov_b32 s8, s6251; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s5252; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s4253; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s3254; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s2255; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1256; GFX8-UNPACKED-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d16257; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)258; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v1259; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)260; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v2261; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)262; GFX8-UNPACKED-NEXT:    s_endpgm263  %v = call { <2 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v2f16i32s.i32(i32 0, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)264  %v.data = extractvalue { <2 x half>, i32 } %v, 0265  %v.err = extractvalue { <2 x half>, i32 } %v, 1266  store volatile <2 x half> %v.data, ptr addrspace(1) poison267  store volatile i32 %v.err, ptr addrspace(1) poison268  ret void269}270 271define amdgpu_ps void @load_1d_v2f16_tfe_dmask1(<8 x i32> inreg %rsrc, i32 %s) {272; GFX9-LABEL: load_1d_v2f16_tfe_dmask1:273; GFX9:       ; %bb.0:274; GFX9-NEXT:    v_mov_b32_e32 v1, 0275; GFX9-NEXT:    s_mov_b32 s11, s9276; GFX9-NEXT:    s_mov_b32 s10, s8277; GFX9-NEXT:    s_mov_b32 s9, s7278; GFX9-NEXT:    s_mov_b32 s8, s6279; GFX9-NEXT:    s_mov_b32 s7, s5280; GFX9-NEXT:    s_mov_b32 s6, s4281; GFX9-NEXT:    s_mov_b32 s5, s3282; GFX9-NEXT:    s_mov_b32 s4, s2283; GFX9-NEXT:    v_mov_b32_e32 v2, v1284; GFX9-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d16285; GFX9-NEXT:    s_waitcnt vmcnt(0)286; GFX9-NEXT:    global_store_dword v[0:1], v1, off287; GFX9-NEXT:    s_waitcnt vmcnt(0)288; GFX9-NEXT:    global_store_dword v[0:1], v2, off289; GFX9-NEXT:    s_waitcnt vmcnt(0)290; GFX9-NEXT:    s_endpgm291;292; GFX10-LABEL: load_1d_v2f16_tfe_dmask1:293; GFX10:       ; %bb.0:294; GFX10-NEXT:    v_mov_b32_e32 v1, 0295; GFX10-NEXT:    s_mov_b32 s11, s9296; GFX10-NEXT:    s_mov_b32 s10, s8297; GFX10-NEXT:    s_mov_b32 s9, s7298; GFX10-NEXT:    s_mov_b32 s8, s6299; GFX10-NEXT:    s_mov_b32 s7, s5300; GFX10-NEXT:    s_mov_b32 s6, s4301; GFX10-NEXT:    s_mov_b32 s5, s3302; GFX10-NEXT:    s_mov_b32 s4, s2303; GFX10-NEXT:    v_mov_b32_e32 v2, v1304; GFX10-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16305; GFX10-NEXT:    s_waitcnt vmcnt(0)306; GFX10-NEXT:    global_store_dword v[0:1], v1, off307; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0308; GFX10-NEXT:    global_store_dword v[0:1], v2, off309; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0310; GFX10-NEXT:    s_endpgm311;312; GFX11-LABEL: load_1d_v2f16_tfe_dmask1:313; GFX11:       ; %bb.0:314; GFX11-NEXT:    v_mov_b32_e32 v1, 0315; GFX11-NEXT:    s_mov_b32 s11, s9316; GFX11-NEXT:    s_mov_b32 s10, s8317; GFX11-NEXT:    s_mov_b32 s9, s7318; GFX11-NEXT:    s_mov_b32 s8, s6319; GFX11-NEXT:    s_mov_b32 s7, s5320; GFX11-NEXT:    s_mov_b32 s6, s4321; GFX11-NEXT:    s_mov_b32 s5, s3322; GFX11-NEXT:    s_mov_b32 s4, s2323; GFX11-NEXT:    v_mov_b32_e32 v2, v1324; GFX11-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 dim:SQ_RSRC_IMG_1D unorm tfe d16325; GFX11-NEXT:    s_waitcnt vmcnt(0)326; GFX11-NEXT:    global_store_b32 v[0:1], v1, off dlc327; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0328; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc329; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0330; GFX11-NEXT:    s_endpgm331;332; GFX8-UNPACKED-LABEL: load_1d_v2f16_tfe_dmask1:333; GFX8-UNPACKED:       ; %bb.0:334; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0335; GFX8-UNPACKED-NEXT:    s_mov_b32 s11, s9336; GFX8-UNPACKED-NEXT:    s_mov_b32 s10, s8337; GFX8-UNPACKED-NEXT:    s_mov_b32 s9, s7338; GFX8-UNPACKED-NEXT:    s_mov_b32 s8, s6339; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s5340; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s4341; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s3342; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s2343; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1344; GFX8-UNPACKED-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x1 unorm tfe d16345; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)346; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v1347; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)348; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v2349; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)350; GFX8-UNPACKED-NEXT:    s_endpgm351  %v = call { <2 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v2f16i32s.i32(i32 1, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)352  %v.data = extractvalue { <2 x half>, i32 } %v, 0353  %v.err = extractvalue { <2 x half>, i32 } %v, 1354  store volatile <2 x half> %v.data, ptr addrspace(1) poison355  store volatile i32 %v.err, ptr addrspace(1) poison356  ret void357}358 359define amdgpu_ps void @load_1d_v2f16_tfe_dmask3(<8 x i32> inreg %rsrc, i32 %s) {360; GFX9-LABEL: load_1d_v2f16_tfe_dmask3:361; GFX9:       ; %bb.0:362; GFX9-NEXT:    v_mov_b32_e32 v1, 0363; GFX9-NEXT:    s_mov_b32 s11, s9364; GFX9-NEXT:    s_mov_b32 s10, s8365; GFX9-NEXT:    s_mov_b32 s9, s7366; GFX9-NEXT:    s_mov_b32 s8, s6367; GFX9-NEXT:    s_mov_b32 s7, s5368; GFX9-NEXT:    s_mov_b32 s6, s4369; GFX9-NEXT:    s_mov_b32 s5, s3370; GFX9-NEXT:    s_mov_b32 s4, s2371; GFX9-NEXT:    v_mov_b32_e32 v2, v1372; GFX9-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x3 unorm tfe d16373; GFX9-NEXT:    s_waitcnt vmcnt(0)374; GFX9-NEXT:    global_store_dword v[0:1], v1, off375; GFX9-NEXT:    s_waitcnt vmcnt(0)376; GFX9-NEXT:    global_store_dword v[0:1], v2, off377; GFX9-NEXT:    s_waitcnt vmcnt(0)378; GFX9-NEXT:    s_endpgm379;380; GFX10-LABEL: load_1d_v2f16_tfe_dmask3:381; GFX10:       ; %bb.0:382; GFX10-NEXT:    v_mov_b32_e32 v1, 0383; GFX10-NEXT:    s_mov_b32 s11, s9384; GFX10-NEXT:    s_mov_b32 s10, s8385; GFX10-NEXT:    s_mov_b32 s9, s7386; GFX10-NEXT:    s_mov_b32 s8, s6387; GFX10-NEXT:    s_mov_b32 s7, s5388; GFX10-NEXT:    s_mov_b32 s6, s4389; GFX10-NEXT:    s_mov_b32 s5, s3390; GFX10-NEXT:    s_mov_b32 s4, s2391; GFX10-NEXT:    v_mov_b32_e32 v2, v1392; GFX10-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm tfe d16393; GFX10-NEXT:    s_waitcnt vmcnt(0)394; GFX10-NEXT:    global_store_dword v[0:1], v1, off395; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0396; GFX10-NEXT:    global_store_dword v[0:1], v2, off397; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0398; GFX10-NEXT:    s_endpgm399;400; GFX11-LABEL: load_1d_v2f16_tfe_dmask3:401; GFX11:       ; %bb.0:402; GFX11-NEXT:    v_mov_b32_e32 v1, 0403; GFX11-NEXT:    s_mov_b32 s11, s9404; GFX11-NEXT:    s_mov_b32 s10, s8405; GFX11-NEXT:    s_mov_b32 s9, s7406; GFX11-NEXT:    s_mov_b32 s8, s6407; GFX11-NEXT:    s_mov_b32 s7, s5408; GFX11-NEXT:    s_mov_b32 s6, s4409; GFX11-NEXT:    s_mov_b32 s5, s3410; GFX11-NEXT:    s_mov_b32 s4, s2411; GFX11-NEXT:    v_mov_b32_e32 v2, v1412; GFX11-NEXT:    image_load v[1:2], v0, s[4:11] dmask:0x3 dim:SQ_RSRC_IMG_1D unorm tfe d16413; GFX11-NEXT:    s_waitcnt vmcnt(0)414; GFX11-NEXT:    global_store_b32 v[0:1], v1, off dlc415; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0416; GFX11-NEXT:    global_store_b32 v[0:1], v2, off dlc417; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0418; GFX11-NEXT:    s_endpgm419;420; GFX8-UNPACKED-LABEL: load_1d_v2f16_tfe_dmask3:421; GFX8-UNPACKED:       ; %bb.0:422; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0423; GFX8-UNPACKED-NEXT:    s_mov_b32 s11, s9424; GFX8-UNPACKED-NEXT:    s_mov_b32 s10, s8425; GFX8-UNPACKED-NEXT:    s_mov_b32 s9, s7426; GFX8-UNPACKED-NEXT:    s_mov_b32 s8, s6427; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s5428; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s4429; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s3430; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s2431; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1432; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v3, v1433; GFX8-UNPACKED-NEXT:    image_load v[1:3], v0, s[4:11] dmask:0x3 unorm tfe d16434; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)435; GFX8-UNPACKED-NEXT:    v_lshlrev_b32_e32 v0, 16, v2436; GFX8-UNPACKED-NEXT:    v_or_b32_sdwa v0, v1, v0 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD437; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v0438; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)439; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v3440; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)441; GFX8-UNPACKED-NEXT:    s_endpgm442  %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)443  %v.data = extractvalue { <2 x half>, i32 } %v, 0444  %v.err = extractvalue { <2 x half>, i32 } %v, 1445  store volatile <2 x half> %v.data, ptr addrspace(1) poison446  store volatile i32 %v.err, ptr addrspace(1) poison447  ret void448}449 450define amdgpu_ps void @load_1d_v3f16_tfe_dmask7(<8 x i32> inreg %rsrc, i32 %s) {451; GFX9-LABEL: load_1d_v3f16_tfe_dmask7:452; GFX9:       ; %bb.0:453; GFX9-NEXT:    v_mov_b32_e32 v1, 0454; GFX9-NEXT:    s_mov_b32 s11, s9455; GFX9-NEXT:    s_mov_b32 s10, s8456; GFX9-NEXT:    s_mov_b32 s9, s7457; GFX9-NEXT:    s_mov_b32 s8, s6458; GFX9-NEXT:    s_mov_b32 s7, s5459; GFX9-NEXT:    s_mov_b32 s6, s4460; GFX9-NEXT:    s_mov_b32 s5, s3461; GFX9-NEXT:    s_mov_b32 s4, s2462; GFX9-NEXT:    v_mov_b32_e32 v2, v1463; GFX9-NEXT:    v_mov_b32_e32 v3, v1464; GFX9-NEXT:    image_load v[1:3], v0, s[4:11] dmask:0x7 unorm tfe d16465; GFX9-NEXT:    s_waitcnt vmcnt(0)466; GFX9-NEXT:    global_store_short v[0:1], v2, off467; GFX9-NEXT:    s_waitcnt vmcnt(0)468; GFX9-NEXT:    global_store_dword v[0:1], v1, off469; GFX9-NEXT:    s_waitcnt vmcnt(0)470; GFX9-NEXT:    global_store_dword v[0:1], v3, off471; GFX9-NEXT:    s_waitcnt vmcnt(0)472; GFX9-NEXT:    s_endpgm473;474; GFX10-LABEL: load_1d_v3f16_tfe_dmask7:475; GFX10:       ; %bb.0:476; GFX10-NEXT:    v_mov_b32_e32 v1, 0477; GFX10-NEXT:    s_mov_b32 s11, s9478; GFX10-NEXT:    s_mov_b32 s10, s8479; GFX10-NEXT:    s_mov_b32 s9, s7480; GFX10-NEXT:    s_mov_b32 s8, s6481; GFX10-NEXT:    s_mov_b32 s7, s5482; GFX10-NEXT:    s_mov_b32 s6, s4483; GFX10-NEXT:    s_mov_b32 s5, s3484; GFX10-NEXT:    s_mov_b32 s4, s2485; GFX10-NEXT:    v_mov_b32_e32 v2, v1486; GFX10-NEXT:    v_mov_b32_e32 v3, v1487; GFX10-NEXT:    image_load v[1:3], v0, s[4:11] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm tfe d16488; GFX10-NEXT:    s_waitcnt vmcnt(0)489; GFX10-NEXT:    global_store_short v[0:1], v2, off490; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0491; GFX10-NEXT:    global_store_dword v[0:1], v1, off492; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0493; GFX10-NEXT:    global_store_dword v[0:1], v3, off494; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0495; GFX10-NEXT:    s_endpgm496;497; GFX11-LABEL: load_1d_v3f16_tfe_dmask7:498; GFX11:       ; %bb.0:499; GFX11-NEXT:    v_mov_b32_e32 v1, 0500; GFX11-NEXT:    s_mov_b32 s11, s9501; GFX11-NEXT:    s_mov_b32 s10, s8502; GFX11-NEXT:    s_mov_b32 s9, s7503; GFX11-NEXT:    s_mov_b32 s8, s6504; GFX11-NEXT:    s_mov_b32 s7, s5505; GFX11-NEXT:    s_mov_b32 s6, s4506; GFX11-NEXT:    s_mov_b32 s5, s3507; GFX11-NEXT:    s_mov_b32 s4, s2508; GFX11-NEXT:    v_mov_b32_e32 v2, v1509; GFX11-NEXT:    v_mov_b32_e32 v3, v1510; GFX11-NEXT:    image_load v[1:3], v0, s[4:11] dmask:0x7 dim:SQ_RSRC_IMG_1D unorm tfe d16511; GFX11-NEXT:    s_waitcnt vmcnt(0)512; GFX11-NEXT:    global_store_b16 v[0:1], v2, off dlc513; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0514; GFX11-NEXT:    global_store_b32 v[0:1], v1, off dlc515; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0516; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc517; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0518; GFX11-NEXT:    s_endpgm519;520; GFX8-UNPACKED-LABEL: load_1d_v3f16_tfe_dmask7:521; GFX8-UNPACKED:       ; %bb.0:522; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0523; GFX8-UNPACKED-NEXT:    s_mov_b32 s11, s9524; GFX8-UNPACKED-NEXT:    s_mov_b32 s10, s8525; GFX8-UNPACKED-NEXT:    s_mov_b32 s9, s7526; GFX8-UNPACKED-NEXT:    s_mov_b32 s8, s6527; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s5528; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s4529; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s3530; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s2531; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1532; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v3, v1533; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v4, v1534; GFX8-UNPACKED-NEXT:    image_load v[1:4], v0, s[4:11] dmask:0x7 unorm tfe d16535; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, 0x1000504536; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)537; GFX8-UNPACKED-NEXT:    v_perm_b32 v0, v1, v2, s0538; GFX8-UNPACKED-NEXT:    flat_store_short v[0:1], v3539; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)540; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v0541; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)542; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v4543; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)544; GFX8-UNPACKED-NEXT:    s_endpgm545  %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)546  %v.data = extractvalue { <3 x half>, i32 } %v, 0547  %v.err = extractvalue { <3 x half>, i32 } %v, 1548  store volatile <3 x half> %v.data, ptr addrspace(1) poison549  store volatile i32 %v.err, ptr addrspace(1) poison550  ret void551}552 553define amdgpu_ps void @load_1d_v4f16_tfe_dmask15(<8 x i32> inreg %rsrc, i32 %s) {554; GFX9-LABEL: load_1d_v4f16_tfe_dmask15:555; GFX9:       ; %bb.0:556; GFX9-NEXT:    v_mov_b32_e32 v1, 0557; GFX9-NEXT:    s_mov_b32 s11, s9558; GFX9-NEXT:    s_mov_b32 s10, s8559; GFX9-NEXT:    s_mov_b32 s9, s7560; GFX9-NEXT:    s_mov_b32 s8, s6561; GFX9-NEXT:    s_mov_b32 s7, s5562; GFX9-NEXT:    s_mov_b32 s6, s4563; GFX9-NEXT:    s_mov_b32 s5, s3564; GFX9-NEXT:    s_mov_b32 s4, s2565; GFX9-NEXT:    v_mov_b32_e32 v2, v1566; GFX9-NEXT:    v_mov_b32_e32 v3, v1567; GFX9-NEXT:    image_load v[1:3], v0, s[4:11] dmask:0xf unorm tfe d16568; GFX9-NEXT:    s_waitcnt vmcnt(0)569; GFX9-NEXT:    global_store_dwordx2 v[0:1], v[1:2], off570; GFX9-NEXT:    s_waitcnt vmcnt(0)571; GFX9-NEXT:    global_store_dword v[0:1], v3, off572; GFX9-NEXT:    s_waitcnt vmcnt(0)573; GFX9-NEXT:    s_endpgm574;575; GFX10-LABEL: load_1d_v4f16_tfe_dmask15:576; GFX10:       ; %bb.0:577; GFX10-NEXT:    v_mov_b32_e32 v1, 0578; GFX10-NEXT:    s_mov_b32 s11, s9579; GFX10-NEXT:    s_mov_b32 s10, s8580; GFX10-NEXT:    s_mov_b32 s9, s7581; GFX10-NEXT:    s_mov_b32 s8, s6582; GFX10-NEXT:    s_mov_b32 s7, s5583; GFX10-NEXT:    s_mov_b32 s6, s4584; GFX10-NEXT:    s_mov_b32 s5, s3585; GFX10-NEXT:    s_mov_b32 s4, s2586; GFX10-NEXT:    v_mov_b32_e32 v2, v1587; GFX10-NEXT:    v_mov_b32_e32 v3, v1588; GFX10-NEXT:    image_load v[1:3], v0, s[4:11] dmask:0xf dim:SQ_RSRC_IMG_1D unorm tfe d16589; GFX10-NEXT:    s_waitcnt vmcnt(0)590; GFX10-NEXT:    global_store_dwordx2 v[0:1], v[1:2], off591; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0592; GFX10-NEXT:    global_store_dword v[0:1], v3, off593; GFX10-NEXT:    s_waitcnt_vscnt null, 0x0594; GFX10-NEXT:    s_endpgm595;596; GFX11-LABEL: load_1d_v4f16_tfe_dmask15:597; GFX11:       ; %bb.0:598; GFX11-NEXT:    v_mov_b32_e32 v1, 0599; GFX11-NEXT:    s_mov_b32 s11, s9600; GFX11-NEXT:    s_mov_b32 s10, s8601; GFX11-NEXT:    s_mov_b32 s9, s7602; GFX11-NEXT:    s_mov_b32 s8, s6603; GFX11-NEXT:    s_mov_b32 s7, s5604; GFX11-NEXT:    s_mov_b32 s6, s4605; GFX11-NEXT:    s_mov_b32 s5, s3606; GFX11-NEXT:    s_mov_b32 s4, s2607; GFX11-NEXT:    v_mov_b32_e32 v2, v1608; GFX11-NEXT:    v_mov_b32_e32 v3, v1609; GFX11-NEXT:    image_load v[1:3], v0, s[4:11] dmask:0xf dim:SQ_RSRC_IMG_1D unorm tfe d16610; GFX11-NEXT:    s_waitcnt vmcnt(0)611; GFX11-NEXT:    global_store_b64 v[0:1], v[1:2], off dlc612; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0613; GFX11-NEXT:    global_store_b32 v[0:1], v3, off dlc614; GFX11-NEXT:    s_waitcnt_vscnt null, 0x0615; GFX11-NEXT:    s_endpgm616;617; GFX8-UNPACKED-LABEL: load_1d_v4f16_tfe_dmask15:618; GFX8-UNPACKED:       ; %bb.0:619; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v1, 0620; GFX8-UNPACKED-NEXT:    s_mov_b32 s11, s9621; GFX8-UNPACKED-NEXT:    s_mov_b32 s10, s8622; GFX8-UNPACKED-NEXT:    s_mov_b32 s9, s7623; GFX8-UNPACKED-NEXT:    s_mov_b32 s8, s6624; GFX8-UNPACKED-NEXT:    s_mov_b32 s7, s5625; GFX8-UNPACKED-NEXT:    s_mov_b32 s6, s4626; GFX8-UNPACKED-NEXT:    s_mov_b32 s5, s3627; GFX8-UNPACKED-NEXT:    s_mov_b32 s4, s2628; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v2, v1629; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v3, v1630; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v4, v1631; GFX8-UNPACKED-NEXT:    v_mov_b32_e32 v5, v1632; GFX8-UNPACKED-NEXT:    image_load v[1:5], v0, s[4:11] dmask:0xf unorm tfe d16633; GFX8-UNPACKED-NEXT:    s_mov_b32 s0, 0x1000504634; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)635; GFX8-UNPACKED-NEXT:    v_perm_b32 v3, v3, v4, s0636; GFX8-UNPACKED-NEXT:    v_perm_b32 v2, v1, v2, s0637; GFX8-UNPACKED-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]638; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)639; GFX8-UNPACKED-NEXT:    flat_store_dword v[0:1], v5640; GFX8-UNPACKED-NEXT:    s_waitcnt vmcnt(0)641; GFX8-UNPACKED-NEXT:    s_endpgm642  %v = call { <4 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v4f16i32s.i32(i32 15, i32 %s, <8 x i32> %rsrc, i32 1, i32 0)643  %v.data = extractvalue { <4 x half>, i32 } %v, 0644  %v.err = extractvalue { <4 x half>, i32 } %v, 1645  store volatile <4 x half> %v.data, ptr addrspace(1) poison646  store volatile i32 %v.err, ptr addrspace(1) poison647  ret void648}649 650declare { half, i32 } @llvm.amdgcn.image.load.1d.sl_f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0651declare { <2 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v2f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0652declare { <3 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v3f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0653declare { <4 x half>, i32 } @llvm.amdgcn.image.load.1d.sl_v4f16i32s.i32(i32 immarg, i32, <8 x i32>, i32 immarg, i32 immarg) #0654 655attributes #0 = { nounwind readonly }656