brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.5 KiB · f7dbcd1 Raw
821 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=fiji < %s | FileCheck -enable-var-scope -check-prefixes=GFX8,GFX8-SDAG %s3; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=fiji < %s | FileCheck -enable-var-scope -check-prefixes=GFX8,GFX8-GISEL %s4; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GFX9,GFX9-SDAG %s5; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GFX9,GFX9-GISEL %s6; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX11,GFX11-FAKE16,GFX11-FAKE16-SDAG %s7; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=-real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX11,GFX11-FAKE16,GFX11-FAKE16-GISEL %s8; RUN: llc -global-isel=0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX11,GFX11-TRUE16,GFX11-TRUE16-SDAG %s9; RUN: llc -global-isel=1 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+real-true16 < %s | FileCheck -enable-var-scope -check-prefixes=GFX11,GFX11-TRUE16,GFX11-TRUE16-GISEL %s10 11define void @undef_lo_v2i16(i16 %arg0) {12; GFX8-SDAG-LABEL: undef_lo_v2i16:13; GFX8-SDAG:       ; %bb.0:14; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15; GFX8-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 16, v016; GFX8-SDAG-NEXT:    ;;#ASMSTART17; GFX8-SDAG-NEXT:    ; use v018; GFX8-SDAG-NEXT:    ;;#ASMEND19; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]20;21; GFX8-GISEL-LABEL: undef_lo_v2i16:22; GFX8-GISEL:       ; %bb.0:23; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)24; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v025; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v0, 16, v026; GFX8-GISEL-NEXT:    ;;#ASMSTART27; GFX8-GISEL-NEXT:    ; use v028; GFX8-GISEL-NEXT:    ;;#ASMEND29; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]30;31; GFX9-LABEL: undef_lo_v2i16:32; GFX9:       ; %bb.0:33; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)34; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 16, v035; GFX9-NEXT:    ;;#ASMSTART36; GFX9-NEXT:    ; use v037; GFX9-NEXT:    ;;#ASMEND38; GFX9-NEXT:    s_setpc_b64 s[30:31]39;40; GFX11-FAKE16-LABEL: undef_lo_v2i16:41; GFX11-FAKE16:       ; %bb.0:42; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)43; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 16, v044; GFX11-FAKE16-NEXT:    ;;#ASMSTART45; GFX11-FAKE16-NEXT:    ; use v046; GFX11-FAKE16-NEXT:    ;;#ASMEND47; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]48;49; GFX11-TRUE16-LABEL: undef_lo_v2i16:50; GFX11-TRUE16:       ; %bb.0:51; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)52; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v0.l53; GFX11-TRUE16-NEXT:    ;;#ASMSTART54; GFX11-TRUE16-NEXT:    ; use v055; GFX11-TRUE16-NEXT:    ;;#ASMEND56; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]57  %undef.lo = insertelement <2 x i16> poison, i16 %arg0, i32 158  call void asm sideeffect "; use $0", "v"(<2 x i16> %undef.lo);59  ret void60}61 62define void @undef_lo_v2f16(half %arg0) {63; GFX8-SDAG-LABEL: undef_lo_v2f16:64; GFX8-SDAG:       ; %bb.0:65; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)66; GFX8-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 16, v067; GFX8-SDAG-NEXT:    ;;#ASMSTART68; GFX8-SDAG-NEXT:    ; use v069; GFX8-SDAG-NEXT:    ;;#ASMEND70; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]71;72; GFX8-GISEL-LABEL: undef_lo_v2f16:73; GFX8-GISEL:       ; %bb.0:74; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v076; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v0, 16, v077; GFX8-GISEL-NEXT:    ;;#ASMSTART78; GFX8-GISEL-NEXT:    ; use v079; GFX8-GISEL-NEXT:    ;;#ASMEND80; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]81;82; GFX9-LABEL: undef_lo_v2f16:83; GFX9:       ; %bb.0:84; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 16, v086; GFX9-NEXT:    ;;#ASMSTART87; GFX9-NEXT:    ; use v088; GFX9-NEXT:    ;;#ASMEND89; GFX9-NEXT:    s_setpc_b64 s[30:31]90;91; GFX11-FAKE16-LABEL: undef_lo_v2f16:92; GFX11-FAKE16:       ; %bb.0:93; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)94; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 16, v095; GFX11-FAKE16-NEXT:    ;;#ASMSTART96; GFX11-FAKE16-NEXT:    ; use v097; GFX11-FAKE16-NEXT:    ;;#ASMEND98; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]99;100; GFX11-TRUE16-LABEL: undef_lo_v2f16:101; GFX11-TRUE16:       ; %bb.0:102; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v0.l104; GFX11-TRUE16-NEXT:    ;;#ASMSTART105; GFX11-TRUE16-NEXT:    ; use v0106; GFX11-TRUE16-NEXT:    ;;#ASMEND107; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]108  %undef.lo = insertelement <2 x half> poison, half %arg0, i32 1109  call void asm sideeffect "; use $0", "v"(<2 x half> %undef.lo);110  ret void111}112 113define void @undef_lo_op_v2f16(half %arg0) {114; GFX8-SDAG-LABEL: undef_lo_op_v2f16:115; GFX8-SDAG:       ; %bb.0:116; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX8-SDAG-NEXT:    v_mov_b32_e32 v1, 0x3c00118; GFX8-SDAG-NEXT:    v_add_f16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD119; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, 0x7e00, v0120; GFX8-SDAG-NEXT:    ;;#ASMSTART121; GFX8-SDAG-NEXT:    ; use v0122; GFX8-SDAG-NEXT:    ;;#ASMEND123; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]124;125; GFX8-GISEL-LABEL: undef_lo_op_v2f16:126; GFX8-GISEL:       ; %bb.0:127; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)128; GFX8-GISEL-NEXT:    v_mov_b32_e32 v2, 0x3c00129; GFX8-GISEL-NEXT:    v_add_f16_e64 v1, s4, 1.0130; GFX8-GISEL-NEXT:    v_add_f16_sdwa v0, v0, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD131; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v1, v0132; GFX8-GISEL-NEXT:    ;;#ASMSTART133; GFX8-GISEL-NEXT:    ; use v0134; GFX8-GISEL-NEXT:    ;;#ASMEND135; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]136;137; GFX9-LABEL: undef_lo_op_v2f16:138; GFX9:       ; %bb.0:139; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)140; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 16, v0141; GFX9-NEXT:    v_pk_add_f16 v0, v0, 1.0 op_sel_hi:[1,0]142; GFX9-NEXT:    ;;#ASMSTART143; GFX9-NEXT:    ; use v0144; GFX9-NEXT:    ;;#ASMEND145; GFX9-NEXT:    s_setpc_b64 s[30:31]146;147; GFX11-FAKE16-LABEL: undef_lo_op_v2f16:148; GFX11-FAKE16:       ; %bb.0:149; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 16, v0151; GFX11-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)152; GFX11-FAKE16-NEXT:    v_pk_add_f16 v0, v0, 1.0 op_sel_hi:[1,0]153; GFX11-FAKE16-NEXT:    ;;#ASMSTART154; GFX11-FAKE16-NEXT:    ; use v0155; GFX11-FAKE16-NEXT:    ;;#ASMEND156; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]157;158; GFX11-TRUE16-LABEL: undef_lo_op_v2f16:159; GFX11-TRUE16:       ; %bb.0:160; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)161; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v0.l162; GFX11-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)163; GFX11-TRUE16-NEXT:    v_pk_add_f16 v0, v0, 1.0 op_sel_hi:[1,0]164; GFX11-TRUE16-NEXT:    ;;#ASMSTART165; GFX11-TRUE16-NEXT:    ; use v0166; GFX11-TRUE16-NEXT:    ;;#ASMEND167; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]168  %undef.lo = insertelement <2 x half> poison, half %arg0, i32 1169  %op = fadd <2 x half> %undef.lo, <half 1.0, half 1.0>170  call void asm sideeffect "; use $0", "v"(<2 x half> %op);171  ret void172}173 174define void @undef_lo_op_v2i16(i16 %arg0) {175; GFX8-SDAG-LABEL: undef_lo_op_v2i16:176; GFX8-SDAG:       ; %bb.0:177; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)178; GFX8-SDAG-NEXT:    v_mov_b32_e32 v1, 0x63179; GFX8-SDAG-NEXT:    v_add_u16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD180; GFX8-SDAG-NEXT:    ;;#ASMSTART181; GFX8-SDAG-NEXT:    ; use v0182; GFX8-SDAG-NEXT:    ;;#ASMEND183; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]184;185; GFX8-GISEL-LABEL: undef_lo_op_v2i16:186; GFX8-GISEL:       ; %bb.0:187; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)188; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0x63189; GFX8-GISEL-NEXT:    s_and_b32 s4, 0xffff, s4190; GFX8-GISEL-NEXT:    v_add_u16_sdwa v0, v0, v1 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD191; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, s4, v0192; GFX8-GISEL-NEXT:    ;;#ASMSTART193; GFX8-GISEL-NEXT:    ; use v0194; GFX8-GISEL-NEXT:    ;;#ASMEND195; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]196;197; GFX9-SDAG-LABEL: undef_lo_op_v2i16:198; GFX9-SDAG:       ; %bb.0:199; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; GFX9-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 16, v0201; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x63202; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, s4 op_sel_hi:[1,0]203; GFX9-SDAG-NEXT:    ;;#ASMSTART204; GFX9-SDAG-NEXT:    ; use v0205; GFX9-SDAG-NEXT:    ;;#ASMEND206; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]207;208; GFX9-GISEL-LABEL: undef_lo_op_v2i16:209; GFX9-GISEL:       ; %bb.0:210; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)211; GFX9-GISEL-NEXT:    v_lshlrev_b32_e32 v0, 16, v0212; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x630063213; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v1214; GFX9-GISEL-NEXT:    ;;#ASMSTART215; GFX9-GISEL-NEXT:    ; use v0216; GFX9-GISEL-NEXT:    ;;#ASMEND217; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]218;219; GFX11-FAKE16-SDAG-LABEL: undef_lo_op_v2i16:220; GFX11-FAKE16-SDAG:       ; %bb.0:221; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX11-FAKE16-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 16, v0223; GFX11-FAKE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)224; GFX11-FAKE16-SDAG-NEXT:    v_pk_add_u16 v0, 0x63, v0 op_sel_hi:[0,1]225; GFX11-FAKE16-SDAG-NEXT:    ;;#ASMSTART226; GFX11-FAKE16-SDAG-NEXT:    ; use v0227; GFX11-FAKE16-SDAG-NEXT:    ;;#ASMEND228; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31]229;230; GFX11-FAKE16-GISEL-LABEL: undef_lo_op_v2i16:231; GFX11-FAKE16-GISEL:       ; %bb.0:232; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)233; GFX11-FAKE16-GISEL-NEXT:    v_lshlrev_b32_e32 v0, 16, v0234; GFX11-FAKE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)235; GFX11-FAKE16-GISEL-NEXT:    v_pk_add_u16 v0, 0x630063, v0236; GFX11-FAKE16-GISEL-NEXT:    ;;#ASMSTART237; GFX11-FAKE16-GISEL-NEXT:    ; use v0238; GFX11-FAKE16-GISEL-NEXT:    ;;#ASMEND239; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31]240;241; GFX11-TRUE16-SDAG-LABEL: undef_lo_op_v2i16:242; GFX11-TRUE16-SDAG:       ; %bb.0:243; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)244; GFX11-TRUE16-SDAG-NEXT:    v_mov_b16_e32 v0.h, v0.l245; GFX11-TRUE16-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)246; GFX11-TRUE16-SDAG-NEXT:    v_pk_add_u16 v0, 0x63, v0 op_sel_hi:[0,1]247; GFX11-TRUE16-SDAG-NEXT:    ;;#ASMSTART248; GFX11-TRUE16-SDAG-NEXT:    ; use v0249; GFX11-TRUE16-SDAG-NEXT:    ;;#ASMEND250; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31]251;252; GFX11-TRUE16-GISEL-LABEL: undef_lo_op_v2i16:253; GFX11-TRUE16-GISEL:       ; %bb.0:254; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)255; GFX11-TRUE16-GISEL-NEXT:    v_mov_b16_e32 v0.h, v0.l256; GFX11-TRUE16-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)257; GFX11-TRUE16-GISEL-NEXT:    v_pk_add_u16 v0, 0x630063, v0258; GFX11-TRUE16-GISEL-NEXT:    ;;#ASMSTART259; GFX11-TRUE16-GISEL-NEXT:    ; use v0260; GFX11-TRUE16-GISEL-NEXT:    ;;#ASMEND261; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31]262  %undef.lo = insertelement <2 x i16> poison, i16 %arg0, i32 1263  %op = add <2 x i16> %undef.lo, <i16 99, i16 99>264  call void asm sideeffect "; use $0", "v"(<2 x i16> %op);265  ret void266}267 268define void @undef_lo3_v4i16(i16 %arg0) {269; GFX8-SDAG-LABEL: undef_lo3_v4i16:270; GFX8-SDAG:       ; %bb.0:271; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)272; GFX8-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 16, v0273; GFX8-SDAG-NEXT:    ;;#ASMSTART274; GFX8-SDAG-NEXT:    ; use v[0:1]275; GFX8-SDAG-NEXT:    ;;#ASMEND276; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]277;278; GFX8-GISEL-LABEL: undef_lo3_v4i16:279; GFX8-GISEL:       ; %bb.0:280; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)281; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0282; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v0, 16, v0283; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0284; GFX8-GISEL-NEXT:    ;;#ASMSTART285; GFX8-GISEL-NEXT:    ; use v[0:1]286; GFX8-GISEL-NEXT:    ;;#ASMEND287; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]288;289; GFX9-LABEL: undef_lo3_v4i16:290; GFX9:       ; %bb.0:291; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)292; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 16, v0293; GFX9-NEXT:    ;;#ASMSTART294; GFX9-NEXT:    ; use v[0:1]295; GFX9-NEXT:    ;;#ASMEND296; GFX9-NEXT:    s_setpc_b64 s[30:31]297;298; GFX11-FAKE16-LABEL: undef_lo3_v4i16:299; GFX11-FAKE16:       ; %bb.0:300; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)301; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 16, v0302; GFX11-FAKE16-NEXT:    ;;#ASMSTART303; GFX11-FAKE16-NEXT:    ; use v[0:1]304; GFX11-FAKE16-NEXT:    ;;#ASMEND305; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]306;307; GFX11-TRUE16-LABEL: undef_lo3_v4i16:308; GFX11-TRUE16:       ; %bb.0:309; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)310; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v0.l311; GFX11-TRUE16-NEXT:    ;;#ASMSTART312; GFX11-TRUE16-NEXT:    ; use v[0:1]313; GFX11-TRUE16-NEXT:    ;;#ASMEND314; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]315  %undef.lo = insertelement <4 x i16> poison, i16 %arg0, i32 1316  call void asm sideeffect "; use $0", "v"(<4 x i16> %undef.lo);317  ret void318}319 320define void @undef_lo3_v4f16(half %arg0) {321; GFX8-SDAG-LABEL: undef_lo3_v4f16:322; GFX8-SDAG:       ; %bb.0:323; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)324; GFX8-SDAG-NEXT:    v_lshlrev_b32_e32 v0, 16, v0325; GFX8-SDAG-NEXT:    ;;#ASMSTART326; GFX8-SDAG-NEXT:    ; use v[0:1]327; GFX8-SDAG-NEXT:    ;;#ASMEND328; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]329;330; GFX8-GISEL-LABEL: undef_lo3_v4f16:331; GFX8-GISEL:       ; %bb.0:332; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)333; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0334; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v0, 16, v0335; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0336; GFX8-GISEL-NEXT:    ;;#ASMSTART337; GFX8-GISEL-NEXT:    ; use v[0:1]338; GFX8-GISEL-NEXT:    ;;#ASMEND339; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]340;341; GFX9-LABEL: undef_lo3_v4f16:342; GFX9:       ; %bb.0:343; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)344; GFX9-NEXT:    v_lshlrev_b32_e32 v0, 16, v0345; GFX9-NEXT:    ;;#ASMSTART346; GFX9-NEXT:    ; use v[0:1]347; GFX9-NEXT:    ;;#ASMEND348; GFX9-NEXT:    s_setpc_b64 s[30:31]349;350; GFX11-FAKE16-LABEL: undef_lo3_v4f16:351; GFX11-FAKE16:       ; %bb.0:352; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)353; GFX11-FAKE16-NEXT:    v_lshlrev_b32_e32 v0, 16, v0354; GFX11-FAKE16-NEXT:    ;;#ASMSTART355; GFX11-FAKE16-NEXT:    ; use v[0:1]356; GFX11-FAKE16-NEXT:    ;;#ASMEND357; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]358;359; GFX11-TRUE16-LABEL: undef_lo3_v4f16:360; GFX11-TRUE16:       ; %bb.0:361; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)362; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.h, v0.l363; GFX11-TRUE16-NEXT:    ;;#ASMSTART364; GFX11-TRUE16-NEXT:    ; use v[0:1]365; GFX11-TRUE16-NEXT:    ;;#ASMEND366; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]367  %undef.lo = insertelement <4 x half> poison, half %arg0, i32 1368  call void asm sideeffect "; use $0", "v"(<4 x half> %undef.lo);369  ret void370}371 372define void @undef_lo2_v4i16(<2 x i16> %arg0) {373; GFX8-SDAG-LABEL: undef_lo2_v4i16:374; GFX8-SDAG:       ; %bb.0:375; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)376; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v0377; GFX8-SDAG-NEXT:    v_alignbit_b32 v0, v1, v0, 16378; GFX8-SDAG-NEXT:    ;;#ASMSTART379; GFX8-SDAG-NEXT:    ; use v[0:1]380; GFX8-SDAG-NEXT:    ;;#ASMEND381; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]382;383; GFX8-GISEL-LABEL: undef_lo2_v4i16:384; GFX8-GISEL:       ; %bb.0:385; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)386; GFX8-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v0387; GFX8-GISEL-NEXT:    v_alignbit_b32 v0, v1, v0, 16388; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0389; GFX8-GISEL-NEXT:    ;;#ASMSTART390; GFX8-GISEL-NEXT:    ; use v[0:1]391; GFX8-GISEL-NEXT:    ;;#ASMEND392; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]393;394; GFX9-LABEL: undef_lo2_v4i16:395; GFX9:       ; %bb.0:396; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)397; GFX9-NEXT:    s_mov_b32 s4, 0x7060302398; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s4399; GFX9-NEXT:    ;;#ASMSTART400; GFX9-NEXT:    ; use v[0:1]401; GFX9-NEXT:    ;;#ASMEND402; GFX9-NEXT:    s_setpc_b64 s[30:31]403;404; GFX11-FAKE16-LABEL: undef_lo2_v4i16:405; GFX11-FAKE16:       ; %bb.0:406; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)407; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302408; GFX11-FAKE16-NEXT:    ;;#ASMSTART409; GFX11-FAKE16-NEXT:    ; use v[0:1]410; GFX11-FAKE16-NEXT:    ;;#ASMEND411; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]412;413; GFX11-TRUE16-LABEL: undef_lo2_v4i16:414; GFX11-TRUE16:       ; %bb.0:415; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)416; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h417; GFX11-TRUE16-NEXT:    ;;#ASMSTART418; GFX11-TRUE16-NEXT:    ; use v[0:1]419; GFX11-TRUE16-NEXT:    ;;#ASMEND420; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]421  %undef.lo = shufflevector <2 x i16> %arg0, <2 x i16> poison, <4 x i32> <i32 1, i32 1, i32 2, i32 3>422  call void asm sideeffect "; use $0", "v"(<4 x i16> %undef.lo);423  ret void424}425 426define void @undef_lo2_v4f16(<2 x half> %arg0) {427; GFX8-SDAG-LABEL: undef_lo2_v4f16:428; GFX8-SDAG:       ; %bb.0:429; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)430; GFX8-SDAG-NEXT:    v_lshrrev_b32_e32 v1, 16, v0431; GFX8-SDAG-NEXT:    v_alignbit_b32 v0, v1, v0, 16432; GFX8-SDAG-NEXT:    ;;#ASMSTART433; GFX8-SDAG-NEXT:    ; use v[0:1]434; GFX8-SDAG-NEXT:    ;;#ASMEND435; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]436;437; GFX8-GISEL-LABEL: undef_lo2_v4f16:438; GFX8-GISEL:       ; %bb.0:439; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)440; GFX8-GISEL-NEXT:    v_lshrrev_b32_e32 v1, 16, v0441; GFX8-GISEL-NEXT:    v_alignbit_b32 v0, v1, v0, 16442; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0443; GFX8-GISEL-NEXT:    ;;#ASMSTART444; GFX8-GISEL-NEXT:    ; use v[0:1]445; GFX8-GISEL-NEXT:    ;;#ASMEND446; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]447;448; GFX9-LABEL: undef_lo2_v4f16:449; GFX9:       ; %bb.0:450; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)451; GFX9-NEXT:    s_mov_b32 s4, 0x7060302452; GFX9-NEXT:    v_perm_b32 v0, v0, v0, s4453; GFX9-NEXT:    ;;#ASMSTART454; GFX9-NEXT:    ; use v[0:1]455; GFX9-NEXT:    ;;#ASMEND456; GFX9-NEXT:    s_setpc_b64 s[30:31]457;458; GFX11-FAKE16-LABEL: undef_lo2_v4f16:459; GFX11-FAKE16:       ; %bb.0:460; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)461; GFX11-FAKE16-NEXT:    v_perm_b32 v0, v0, v0, 0x7060302462; GFX11-FAKE16-NEXT:    ;;#ASMSTART463; GFX11-FAKE16-NEXT:    ; use v[0:1]464; GFX11-FAKE16-NEXT:    ;;#ASMEND465; GFX11-FAKE16-NEXT:    s_setpc_b64 s[30:31]466;467; GFX11-TRUE16-LABEL: undef_lo2_v4f16:468; GFX11-TRUE16:       ; %bb.0:469; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)470; GFX11-TRUE16-NEXT:    v_mov_b16_e32 v0.l, v0.h471; GFX11-TRUE16-NEXT:    ;;#ASMSTART472; GFX11-TRUE16-NEXT:    ; use v[0:1]473; GFX11-TRUE16-NEXT:    ;;#ASMEND474; GFX11-TRUE16-NEXT:    s_setpc_b64 s[30:31]475  %undef.lo = shufflevector <2 x half> %arg0, <2 x half> poison, <4 x i32> <i32 1, i32 1, i32 2, i32 3>476  call void asm sideeffect "; use $0", "v"(<4 x half> %undef.lo);477  ret void478}479 480define void @undef_hi_v2i16(i16 %arg0) {481; GFX8-SDAG-LABEL: undef_hi_v2i16:482; GFX8-SDAG:       ; %bb.0:483; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)484; GFX8-SDAG-NEXT:    ;;#ASMSTART485; GFX8-SDAG-NEXT:    ; use v0486; GFX8-SDAG-NEXT:    ;;#ASMEND487; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]488;489; GFX8-GISEL-LABEL: undef_hi_v2i16:490; GFX8-GISEL:       ; %bb.0:491; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)492; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0493; GFX8-GISEL-NEXT:    ;;#ASMSTART494; GFX8-GISEL-NEXT:    ; use v0495; GFX8-GISEL-NEXT:    ;;#ASMEND496; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]497;498; GFX9-LABEL: undef_hi_v2i16:499; GFX9:       ; %bb.0:500; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)501; GFX9-NEXT:    ;;#ASMSTART502; GFX9-NEXT:    ; use v0503; GFX9-NEXT:    ;;#ASMEND504; GFX9-NEXT:    s_setpc_b64 s[30:31]505;506; GFX11-LABEL: undef_hi_v2i16:507; GFX11:       ; %bb.0:508; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)509; GFX11-NEXT:    ;;#ASMSTART510; GFX11-NEXT:    ; use v0511; GFX11-NEXT:    ;;#ASMEND512; GFX11-NEXT:    s_setpc_b64 s[30:31]513  %undef.hi = insertelement <2 x i16> poison, i16 %arg0, i32 0514  call void asm sideeffect "; use $0", "v"(<2 x i16> %undef.hi);515  ret void516}517 518define void @undef_hi_v2f16(half %arg0) {519; GFX8-SDAG-LABEL: undef_hi_v2f16:520; GFX8-SDAG:       ; %bb.0:521; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)522; GFX8-SDAG-NEXT:    ;;#ASMSTART523; GFX8-SDAG-NEXT:    ; use v0524; GFX8-SDAG-NEXT:    ;;#ASMEND525; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]526;527; GFX8-GISEL-LABEL: undef_hi_v2f16:528; GFX8-GISEL:       ; %bb.0:529; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)530; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0531; GFX8-GISEL-NEXT:    ;;#ASMSTART532; GFX8-GISEL-NEXT:    ; use v0533; GFX8-GISEL-NEXT:    ;;#ASMEND534; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]535;536; GFX9-LABEL: undef_hi_v2f16:537; GFX9:       ; %bb.0:538; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)539; GFX9-NEXT:    ;;#ASMSTART540; GFX9-NEXT:    ; use v0541; GFX9-NEXT:    ;;#ASMEND542; GFX9-NEXT:    s_setpc_b64 s[30:31]543;544; GFX11-LABEL: undef_hi_v2f16:545; GFX11:       ; %bb.0:546; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)547; GFX11-NEXT:    ;;#ASMSTART548; GFX11-NEXT:    ; use v0549; GFX11-NEXT:    ;;#ASMEND550; GFX11-NEXT:    s_setpc_b64 s[30:31]551  %undef.hi = insertelement <2 x half> poison, half %arg0, i32 0552  call void asm sideeffect "; use $0", "v"(<2 x half> %undef.hi);553  ret void554}555 556define void @undef_hi_op_v2f16(half %arg0) {557; GFX8-SDAG-LABEL: undef_hi_op_v2f16:558; GFX8-SDAG:       ; %bb.0:559; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)560; GFX8-SDAG-NEXT:    v_add_f16_e32 v0, 1.0, v0561; GFX8-SDAG-NEXT:    v_or_b32_e32 v0, 0x7e000000, v0562; GFX8-SDAG-NEXT:    ;;#ASMSTART563; GFX8-SDAG-NEXT:    ; use v0564; GFX8-SDAG-NEXT:    ;;#ASMEND565; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]566;567; GFX8-GISEL-LABEL: undef_hi_op_v2f16:568; GFX8-GISEL:       ; %bb.0:569; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)570; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, s4571; GFX8-GISEL-NEXT:    v_mov_b32_e32 v2, 0x3c00572; GFX8-GISEL-NEXT:    v_add_f16_e32 v0, 1.0, v0573; GFX8-GISEL-NEXT:    v_add_f16_sdwa v1, v1, v2 dst_sel:WORD_1 dst_unused:UNUSED_PAD src0_sel:DWORD src1_sel:DWORD574; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, v0, v1575; GFX8-GISEL-NEXT:    ;;#ASMSTART576; GFX8-GISEL-NEXT:    ; use v0577; GFX8-GISEL-NEXT:    ;;#ASMEND578; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]579;580; GFX9-LABEL: undef_hi_op_v2f16:581; GFX9:       ; %bb.0:582; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)583; GFX9-NEXT:    v_pk_add_f16 v0, v0, 1.0 op_sel_hi:[1,0]584; GFX9-NEXT:    ;;#ASMSTART585; GFX9-NEXT:    ; use v0586; GFX9-NEXT:    ;;#ASMEND587; GFX9-NEXT:    s_setpc_b64 s[30:31]588;589; GFX11-LABEL: undef_hi_op_v2f16:590; GFX11:       ; %bb.0:591; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)592; GFX11-NEXT:    v_pk_add_f16 v0, v0, 1.0 op_sel_hi:[1,0]593; GFX11-NEXT:    ;;#ASMSTART594; GFX11-NEXT:    ; use v0595; GFX11-NEXT:    ;;#ASMEND596; GFX11-NEXT:    s_setpc_b64 s[30:31]597  %undef.hi = insertelement <2 x half> poison, half %arg0, i32 0598  %op = fadd <2 x half> %undef.hi, <half 1.0, half 1.0>599  call void asm sideeffect "; use $0", "v"(<2 x half> %op);600  ret void601}602 603define void @undef_hi_op_v2i16(i16 %arg0) {604; GFX8-SDAG-LABEL: undef_hi_op_v2i16:605; GFX8-SDAG:       ; %bb.0:606; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)607; GFX8-SDAG-NEXT:    v_add_u16_e32 v0, 0x63, v0608; GFX8-SDAG-NEXT:    ;;#ASMSTART609; GFX8-SDAG-NEXT:    ; use v0610; GFX8-SDAG-NEXT:    ;;#ASMEND611; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]612;613; GFX8-GISEL-LABEL: undef_hi_op_v2i16:614; GFX8-GISEL:       ; %bb.0:615; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)616; GFX8-GISEL-NEXT:    s_and_b32 s4, 0xffff, s4617; GFX8-GISEL-NEXT:    v_add_u16_e32 v0, 0x63, v0618; GFX8-GISEL-NEXT:    s_lshl_b32 s4, s4, 16619; GFX8-GISEL-NEXT:    v_or_b32_e32 v0, s4, v0620; GFX8-GISEL-NEXT:    ;;#ASMSTART621; GFX8-GISEL-NEXT:    ; use v0622; GFX8-GISEL-NEXT:    ;;#ASMEND623; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]624;625; GFX9-SDAG-LABEL: undef_hi_op_v2i16:626; GFX9-SDAG:       ; %bb.0:627; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)628; GFX9-SDAG-NEXT:    s_movk_i32 s4, 0x63629; GFX9-SDAG-NEXT:    v_pk_add_u16 v0, v0, s4 op_sel_hi:[1,0]630; GFX9-SDAG-NEXT:    ;;#ASMSTART631; GFX9-SDAG-NEXT:    ; use v0632; GFX9-SDAG-NEXT:    ;;#ASMEND633; GFX9-SDAG-NEXT:    s_setpc_b64 s[30:31]634;635; GFX9-GISEL-LABEL: undef_hi_op_v2i16:636; GFX9-GISEL:       ; %bb.0:637; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)638; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, 0x630063639; GFX9-GISEL-NEXT:    v_pk_add_u16 v0, v0, v1640; GFX9-GISEL-NEXT:    ;;#ASMSTART641; GFX9-GISEL-NEXT:    ; use v0642; GFX9-GISEL-NEXT:    ;;#ASMEND643; GFX9-GISEL-NEXT:    s_setpc_b64 s[30:31]644;645; GFX11-FAKE16-SDAG-LABEL: undef_hi_op_v2i16:646; GFX11-FAKE16-SDAG:       ; %bb.0:647; GFX11-FAKE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)648; GFX11-FAKE16-SDAG-NEXT:    v_pk_add_u16 v0, 0x63, v0 op_sel_hi:[0,1]649; GFX11-FAKE16-SDAG-NEXT:    ;;#ASMSTART650; GFX11-FAKE16-SDAG-NEXT:    ; use v0651; GFX11-FAKE16-SDAG-NEXT:    ;;#ASMEND652; GFX11-FAKE16-SDAG-NEXT:    s_setpc_b64 s[30:31]653;654; GFX11-FAKE16-GISEL-LABEL: undef_hi_op_v2i16:655; GFX11-FAKE16-GISEL:       ; %bb.0:656; GFX11-FAKE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)657; GFX11-FAKE16-GISEL-NEXT:    v_pk_add_u16 v0, 0x630063, v0658; GFX11-FAKE16-GISEL-NEXT:    ;;#ASMSTART659; GFX11-FAKE16-GISEL-NEXT:    ; use v0660; GFX11-FAKE16-GISEL-NEXT:    ;;#ASMEND661; GFX11-FAKE16-GISEL-NEXT:    s_setpc_b64 s[30:31]662;663; GFX11-TRUE16-SDAG-LABEL: undef_hi_op_v2i16:664; GFX11-TRUE16-SDAG:       ; %bb.0:665; GFX11-TRUE16-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)666; GFX11-TRUE16-SDAG-NEXT:    v_pk_add_u16 v0, 0x63, v0 op_sel_hi:[0,1]667; GFX11-TRUE16-SDAG-NEXT:    ;;#ASMSTART668; GFX11-TRUE16-SDAG-NEXT:    ; use v0669; GFX11-TRUE16-SDAG-NEXT:    ;;#ASMEND670; GFX11-TRUE16-SDAG-NEXT:    s_setpc_b64 s[30:31]671;672; GFX11-TRUE16-GISEL-LABEL: undef_hi_op_v2i16:673; GFX11-TRUE16-GISEL:       ; %bb.0:674; GFX11-TRUE16-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)675; GFX11-TRUE16-GISEL-NEXT:    v_pk_add_u16 v0, 0x630063, v0676; GFX11-TRUE16-GISEL-NEXT:    ;;#ASMSTART677; GFX11-TRUE16-GISEL-NEXT:    ; use v0678; GFX11-TRUE16-GISEL-NEXT:    ;;#ASMEND679; GFX11-TRUE16-GISEL-NEXT:    s_setpc_b64 s[30:31]680  %undef.hi = insertelement <2 x i16> poison, i16 %arg0, i32 0681  %op = add <2 x i16> %undef.hi, <i16 99, i16 99>682  call void asm sideeffect "; use $0", "v"(<2 x i16> %op);683  ret void684}685 686define void @undef_hi3_v4i16(i16 %arg0) {687; GFX8-SDAG-LABEL: undef_hi3_v4i16:688; GFX8-SDAG:       ; %bb.0:689; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)690; GFX8-SDAG-NEXT:    ;;#ASMSTART691; GFX8-SDAG-NEXT:    ; use v[0:1]692; GFX8-SDAG-NEXT:    ;;#ASMEND693; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]694;695; GFX8-GISEL-LABEL: undef_hi3_v4i16:696; GFX8-GISEL:       ; %bb.0:697; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)698; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0699; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0700; GFX8-GISEL-NEXT:    ;;#ASMSTART701; GFX8-GISEL-NEXT:    ; use v[0:1]702; GFX8-GISEL-NEXT:    ;;#ASMEND703; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]704;705; GFX9-LABEL: undef_hi3_v4i16:706; GFX9:       ; %bb.0:707; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)708; GFX9-NEXT:    ;;#ASMSTART709; GFX9-NEXT:    ; use v[0:1]710; GFX9-NEXT:    ;;#ASMEND711; GFX9-NEXT:    s_setpc_b64 s[30:31]712;713; GFX11-LABEL: undef_hi3_v4i16:714; GFX11:       ; %bb.0:715; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)716; GFX11-NEXT:    ;;#ASMSTART717; GFX11-NEXT:    ; use v[0:1]718; GFX11-NEXT:    ;;#ASMEND719; GFX11-NEXT:    s_setpc_b64 s[30:31]720  %undef.hi = insertelement <4 x i16> poison, i16 %arg0, i32 0721  call void asm sideeffect "; use $0", "v"(<4 x i16> %undef.hi);722  ret void723}724 725define void @undef_hi3_v4f16(half %arg0) {726; GFX8-SDAG-LABEL: undef_hi3_v4f16:727; GFX8-SDAG:       ; %bb.0:728; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)729; GFX8-SDAG-NEXT:    ;;#ASMSTART730; GFX8-SDAG-NEXT:    ; use v[0:1]731; GFX8-SDAG-NEXT:    ;;#ASMEND732; GFX8-SDAG-NEXT:    s_setpc_b64 s[30:31]733;734; GFX8-GISEL-LABEL: undef_hi3_v4f16:735; GFX8-GISEL:       ; %bb.0:736; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)737; GFX8-GISEL-NEXT:    v_and_b32_e32 v0, 0xffff, v0738; GFX8-GISEL-NEXT:    v_mov_b32_e32 v1, 0739; GFX8-GISEL-NEXT:    ;;#ASMSTART740; GFX8-GISEL-NEXT:    ; use v[0:1]741; GFX8-GISEL-NEXT:    ;;#ASMEND742; GFX8-GISEL-NEXT:    s_setpc_b64 s[30:31]743;744; GFX9-LABEL: undef_hi3_v4f16:745; GFX9:       ; %bb.0:746; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)747; GFX9-NEXT:    ;;#ASMSTART748; GFX9-NEXT:    ; use v[0:1]749; GFX9-NEXT:    ;;#ASMEND750; GFX9-NEXT:    s_setpc_b64 s[30:31]751;752; GFX11-LABEL: undef_hi3_v4f16:753; GFX11:       ; %bb.0:754; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)755; GFX11-NEXT:    ;;#ASMSTART756; GFX11-NEXT:    ; use v[0:1]757; GFX11-NEXT:    ;;#ASMEND758; GFX11-NEXT:    s_setpc_b64 s[30:31]759  %undef.hi = insertelement <4 x half> poison, half %arg0, i32 0760  call void asm sideeffect "; use $0", "v"(<4 x half> %undef.hi);761  ret void762}763 764define void @undef_hi2_v4i16(<2 x i16> %arg0) {765; GFX8-LABEL: undef_hi2_v4i16:766; GFX8:       ; %bb.0:767; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)768; GFX8-NEXT:    ;;#ASMSTART769; GFX8-NEXT:    ; use v[0:1]770; GFX8-NEXT:    ;;#ASMEND771; GFX8-NEXT:    s_setpc_b64 s[30:31]772;773; GFX9-LABEL: undef_hi2_v4i16:774; GFX9:       ; %bb.0:775; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)776; GFX9-NEXT:    ;;#ASMSTART777; GFX9-NEXT:    ; use v[0:1]778; GFX9-NEXT:    ;;#ASMEND779; GFX9-NEXT:    s_setpc_b64 s[30:31]780;781; GFX11-LABEL: undef_hi2_v4i16:782; GFX11:       ; %bb.0:783; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)784; GFX11-NEXT:    ;;#ASMSTART785; GFX11-NEXT:    ; use v[0:1]786; GFX11-NEXT:    ;;#ASMEND787; GFX11-NEXT:    s_setpc_b64 s[30:31]788  %undef.hi = shufflevector <2 x i16> %arg0, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>789  call void asm sideeffect "; use $0", "v"(<4 x i16> %undef.hi);790  ret void791}792 793define void @undef_hi2_v4f16(<2 x half> %arg0) {794; GFX8-LABEL: undef_hi2_v4f16:795; GFX8:       ; %bb.0:796; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)797; GFX8-NEXT:    ;;#ASMSTART798; GFX8-NEXT:    ; use v[0:1]799; GFX8-NEXT:    ;;#ASMEND800; GFX8-NEXT:    s_setpc_b64 s[30:31]801;802; GFX9-LABEL: undef_hi2_v4f16:803; GFX9:       ; %bb.0:804; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)805; GFX9-NEXT:    ;;#ASMSTART806; GFX9-NEXT:    ; use v[0:1]807; GFX9-NEXT:    ;;#ASMEND808; GFX9-NEXT:    s_setpc_b64 s[30:31]809;810; GFX11-LABEL: undef_hi2_v4f16:811; GFX11:       ; %bb.0:812; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)813; GFX11-NEXT:    ;;#ASMSTART814; GFX11-NEXT:    ; use v[0:1]815; GFX11-NEXT:    ;;#ASMEND816; GFX11-NEXT:    s_setpc_b64 s[30:31]817  %undef.hi = shufflevector <2 x half> %arg0, <2 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>818  call void asm sideeffect "; use $0", "v"(<4 x half> %undef.hi);819  ret void820}821