; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=amdgcn -mcpu=tahiti | FileCheck %s -enable-var-scope -check-prefixes=GCN,SI
; RUN: llc < %s -mtriple=amdgcn -mcpu=fiji | FileCheck %s -enable-var-scope -check-prefixes=GCN,VI

; Make sure high constant 0 isn't pointlessly materialized
define i16 @trunc_bitcast_i64_lshr_32_i16(i64 %bar) {
; GCN-LABEL: trunc_bitcast_i64_lshr_32_i16:
; GCN:       ; %bb.0:
; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GCN-NEXT:    v_mov_b32_e32 v0, v1
; GCN-NEXT:    s_setpc_b64 s[30:31]
  %srl = lshr i64 %bar, 32
  %trunc = trunc i64 %srl to i16
  ret i16 %trunc
}

define i32 @trunc_bitcast_i64_lshr_32_i32(i64 %bar) {
; GCN-LABEL: trunc_bitcast_i64_lshr_32_i32:
; GCN:       ; %bb.0:
; GCN-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; GCN-NEXT:    v_mov_b32_e32 v0, v1
; GCN-NEXT:    s_setpc_b64 s[30:31]
  %srl = lshr i64 %bar, 32
  %trunc = trunc i64 %srl to i32
  ret i32 %trunc
}

define i16 @trunc_bitcast_v2i32_to_i16(<2 x i32> %bar) {
; SI-LABEL: trunc_bitcast_v2i32_to_i16:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    s_mov_b32 s7, 0xf000
; SI-NEXT:    s_mov_b32 s6, -1
; SI-NEXT:    buffer_load_dword v0, off, s[4:7], 0
; SI-NEXT:    s_waitcnt vmcnt(0)
; SI-NEXT:    v_add_i32_e32 v0, vcc, 4, v0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: trunc_bitcast_v2i32_to_i16:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    flat_load_dword v0, v[0:1]
; VI-NEXT:    s_waitcnt vmcnt(0)
; VI-NEXT:    v_add_u32_e32 v0, vcc, 4, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %load0 = load i32, ptr addrspace(1) poison
  %load1 = load i32, ptr addrspace(1) null
  %insert.0 = insertelement <2 x i32> poison, i32 %load0, i32 0
  %insert.1 = insertelement <2 x i32> %insert.0, i32 99, i32 1
  %bc = bitcast <2 x i32> %insert.1 to i64
  %trunc = trunc i64 %bc to i16
  %add = add i16 %trunc, 4
  ret i16 %add
}

; Make sure there's no crash if the source vector type is FP
define i16 @trunc_bitcast_v2f32_to_i16(<2 x float> %bar) {
; SI-LABEL: trunc_bitcast_v2f32_to_i16:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    s_mov_b32 s7, 0xf000
; SI-NEXT:    s_mov_b32 s6, -1
; SI-NEXT:    buffer_load_dword v0, off, s[4:7], 0
; SI-NEXT:    s_waitcnt vmcnt(0)
; SI-NEXT:    v_add_i32_e32 v0, vcc, 4, v0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: trunc_bitcast_v2f32_to_i16:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    flat_load_dword v0, v[0:1]
; VI-NEXT:    s_waitcnt vmcnt(0)
; VI-NEXT:    v_add_u32_e32 v0, vcc, 4, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %load0 = load float, ptr addrspace(1) poison
  %load1 = load float, ptr addrspace(1) null
  %insert.0 = insertelement <2 x float> poison, float %load0, i32 0
  %insert.1 = insertelement <2 x float> %insert.0, float 4.0, i32 1
  %bc = bitcast <2 x float> %insert.1 to i64
  %trunc = trunc i64 %bc to i16
  %add = add i16 %trunc, 4
  ret i16 %add
}

define amdgpu_kernel void @truncate_high_elt_extract_vector(ptr addrspace(1) nocapture readonly %arg, ptr addrspace(1) nocapture readonly %arg1, ptr addrspace(1) nocapture %arg2) local_unnamed_addr {
; SI-LABEL: truncate_high_elt_extract_vector:
; SI:       ; %bb.0: ; %bb
; SI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x9
; SI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0xd
; SI-NEXT:    s_mov_b32 s7, 0xf000
; SI-NEXT:    s_mov_b32 s6, -1
; SI-NEXT:    s_waitcnt lgkmcnt(0)
; SI-NEXT:    s_load_dword s0, s[0:1], 0x0
; SI-NEXT:    s_load_dword s1, s[2:3], 0x0
; SI-NEXT:    s_waitcnt lgkmcnt(0)
; SI-NEXT:    s_sext_i32_i16 s0, s0
; SI-NEXT:    s_sext_i32_i16 s1, s1
; SI-NEXT:    s_mul_i32 s1, s1, s0
; SI-NEXT:    s_lshr_b32 s0, s1, 16
; SI-NEXT:    v_mov_b32_e32 v0, s0
; SI-NEXT:    buffer_store_dword v0, off, s[4:7], 0
; SI-NEXT:    s_endpgm
;
; VI-LABEL: truncate_high_elt_extract_vector:
; VI:       ; %bb.0: ; %bb
; VI-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x24
; VI-NEXT:    s_load_dwordx2 s[4:5], s[4:5], 0x34
; VI-NEXT:    s_waitcnt lgkmcnt(0)
; VI-NEXT:    s_load_dword s0, s[0:1], 0x0
; VI-NEXT:    s_load_dword s1, s[2:3], 0x0
; VI-NEXT:    v_mov_b32_e32 v0, s4
; VI-NEXT:    v_mov_b32_e32 v1, s5
; VI-NEXT:    s_waitcnt lgkmcnt(0)
; VI-NEXT:    s_sext_i32_i16 s0, s0
; VI-NEXT:    s_sext_i32_i16 s1, s1
; VI-NEXT:    s_mul_i32 s1, s1, s0
; VI-NEXT:    s_lshr_b32 s0, s1, 16
; VI-NEXT:    v_mov_b32_e32 v2, s0
; VI-NEXT:    flat_store_dword v[0:1], v2
; VI-NEXT:    s_endpgm
bb:
  %tmp = getelementptr inbounds <2 x i16>, ptr addrspace(1) %arg, i64 0
  %tmp3 = load <2 x i16>, ptr addrspace(1) %tmp, align 4
  %tmp4 = getelementptr inbounds <2 x i16>, ptr addrspace(1) %arg1, i64 0
  %tmp5 = load <2 x i16>, ptr addrspace(1) %tmp4, align 4
  %tmp6 = sext <2 x i16> %tmp3 to <2 x i32>
  %tmp7 = sext <2 x i16> %tmp5 to <2 x i32>
  %tmp8 = extractelement <2 x i32> %tmp6, i64 0
  %tmp9 = extractelement <2 x i32> %tmp7, i64 0
  %tmp10 = mul nsw i32 %tmp9, %tmp8
  %tmp11 = insertelement <2 x i32> poison, i32 %tmp10, i32 0
  %tmp12 = insertelement <2 x i32> %tmp11, i32 poison, i32 1
  %tmp13 = lshr <2 x i32> %tmp12, <i32 16, i32 16>
  %tmp14 = trunc <2 x i32> %tmp13 to <2 x i16>
  %tmp15 = getelementptr inbounds <2 x i16>, ptr addrspace(1) %arg2, i64 0
  store <2 x i16> %tmp14, ptr addrspace(1) %tmp15, align 4
  ret void
}

define <2 x i16> @trunc_v2i64_arg_to_v2i16(<2 x i64> %arg0) #0 {
; SI-LABEL: trunc_v2i64_arg_to_v2i16:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_lshlrev_b32_e32 v1, 16, v2
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_or_b32_e32 v0, v0, v1
; SI-NEXT:    v_and_b32_e32 v1, 0xffff, v2
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: trunc_v2i64_arg_to_v2i16:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    s_mov_b32 s4, 0x1000504
; VI-NEXT:    v_perm_b32 v0, v0, v2, s4
; VI-NEXT:    s_setpc_b64 s[30:31]
  %trunc = trunc <2 x i64> %arg0 to <2 x i16>
  ret <2 x i16> %trunc
}

; Test for regression where an unnecessary v_alignbit_b32 was inserted
; on the final result, due to losing the fact that the upper half of
; the lhs vector was undef.
define <2 x i16> @vector_trunc_high_bits_undef_lshr_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_lshr_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_lshr_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = lshr <2 x i32> %undef.hi.elt, splat (i32 16)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_lshr_rhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_lshr_rhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_lshr_b32_e32 v0, 16, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_lshr_rhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_lshrrev_b32_e64 v0, v0, 16
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = lshr <2 x i32> splat (i32 16), %undef.hi.elt
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_ashr_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_ashr_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_ashr_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_lshrrev_b32_e32 v0, 16, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %ashr = ashr <2 x i32> %undef.hi.elt, splat (i32 16)
  %trunc = trunc <2 x i32> %ashr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_ashr_rhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_ashr_rhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_ashr_i32_e32 v0, -4, v0
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_ashr_rhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_ashrrev_i32_e64 v0, v0, -4
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = ashr <2 x i32> splat (i32 -4), %undef.hi.elt
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_add_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_add_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_add_i32_e32 v0, vcc, 16, v0
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_add_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_add_u32_e32 v0, vcc, 16, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = add <2 x i32> %undef.hi.elt, splat (i32 16)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_shl_rhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_shl_rhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_lshl_b32_e32 v0, 2, v0
; SI-NEXT:    v_and_b32_e32 v0, 0xfffe, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_shl_rhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_lshlrev_b32_e64 v0, v0, 2
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = shl <2 x i32> splat (i32 2), %undef.hi.elt
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_sub_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_sub_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_add_i32_e32 v0, vcc, -16, v0
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_sub_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_add_u32_e32 v0, vcc, -16, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = sub <2 x i32> %undef.hi.elt, splat (i32 16)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_or_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_or_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_or_b32_e32 v0, 0xffff0011, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0xffff
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_or_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_or_b32_e32 v0, 0xffff0011, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = or <2 x i32> %undef.hi.elt, splat (i32 17)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_xor_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_xor_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_xor_b32_e32 v0, 17, v0
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_xor_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_xor_b32_e32 v0, 17, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = xor <2 x i32> %undef.hi.elt, splat (i32 17)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_shl_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_shl_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_lshlrev_b32_e32 v0, 2, v0
; SI-NEXT:    v_and_b32_e32 v0, 0xfffc, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_shl_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_lshlrev_b16_e32 v0, 2, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %shl = shl <2 x i32> %undef.hi.elt, splat (i32 2)
  %trunc = trunc <2 x i32> %shl to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_mul_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_mul_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    v_mul_lo_u32 v0, v0, 18
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    v_and_b32_e32 v0, 0xfffe, v0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_mul_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    v_mul_lo_u32 v0, v0, 18
; VI-NEXT:    v_and_b32_e32 v0, 0xfffe, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = mul <2 x i32> %undef.hi.elt, splat (i32 18)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_sdiv_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_sdiv_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    s_mov_b32 s4, 0x38e38e39
; SI-NEXT:    v_mul_hi_i32 v0, v0, s4
; SI-NEXT:    v_lshrrev_b32_e32 v1, 31, v0
; SI-NEXT:    v_lshrrev_b32_e32 v0, 2, v0
; SI-NEXT:    v_add_i32_e32 v0, vcc, v0, v1
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_sdiv_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    s_mov_b32 s4, 0x38e38e39
; VI-NEXT:    v_mul_hi_i32 v0, v0, s4
; VI-NEXT:    v_lshrrev_b32_e32 v1, 31, v0
; VI-NEXT:    v_ashrrev_i32_e32 v0, 2, v0
; VI-NEXT:    v_add_u32_e32 v0, vcc, v0, v1
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = sdiv <2 x i32> %undef.hi.elt, splat (i32 18)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_srem_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_srem_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    s_mov_b32 s4, 0x38e38e39
; SI-NEXT:    v_mul_hi_i32 v1, v0, s4
; SI-NEXT:    v_lshrrev_b32_e32 v2, 31, v1
; SI-NEXT:    v_lshrrev_b32_e32 v1, 2, v1
; SI-NEXT:    v_add_i32_e32 v1, vcc, v1, v2
; SI-NEXT:    v_mul_lo_u32 v1, v1, 18
; SI-NEXT:    v_sub_i32_e32 v0, vcc, v0, v1
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_srem_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    s_mov_b32 s4, 0x38e38e39
; VI-NEXT:    v_mul_hi_i32 v1, v0, s4
; VI-NEXT:    v_lshrrev_b32_e32 v2, 31, v1
; VI-NEXT:    v_ashrrev_i32_e32 v1, 2, v1
; VI-NEXT:    v_add_u32_e32 v1, vcc, v1, v2
; VI-NEXT:    v_mul_lo_u32 v1, v1, 18
; VI-NEXT:    v_sub_u32_e32 v0, vcc, v0, v1
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = srem <2 x i32> %undef.hi.elt, splat (i32 18)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}


define <2 x i16> @vector_trunc_high_bits_undef_udiv_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_udiv_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    s_mov_b32 s4, 0x38e38e39
; SI-NEXT:    v_mul_hi_u32 v0, v0, s4
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    v_bfe_u32 v0, v0, 2, 16
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_udiv_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    s_mov_b32 s4, 0x38e38e39
; VI-NEXT:    v_mul_hi_u32 v0, v0, s4
; VI-NEXT:    v_lshrrev_b32_e32 v0, 2, v0
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = udiv <2 x i32> %undef.hi.elt, splat (i32 18)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}

define <2 x i16> @vector_trunc_high_bits_undef_urem_lhs_alignbit_regression(i32 %arg0) {
; SI-LABEL: vector_trunc_high_bits_undef_urem_lhs_alignbit_regression:
; SI:       ; %bb.0:
; SI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; SI-NEXT:    s_mov_b32 s4, 0x38e38e39
; SI-NEXT:    v_mul_hi_u32 v1, v0, s4
; SI-NEXT:    v_lshrrev_b32_e32 v1, 2, v1
; SI-NEXT:    v_mul_lo_u32 v1, v1, 18
; SI-NEXT:    v_sub_i32_e32 v0, vcc, v0, v1
; SI-NEXT:    v_and_b32_e32 v0, 0xffff, v0
; SI-NEXT:    v_mov_b32_e32 v1, 0
; SI-NEXT:    s_setpc_b64 s[30:31]
;
; VI-LABEL: vector_trunc_high_bits_undef_urem_lhs_alignbit_regression:
; VI:       ; %bb.0:
; VI-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
; VI-NEXT:    s_mov_b32 s4, 0x38e38e39
; VI-NEXT:    v_mul_hi_u32 v1, v0, s4
; VI-NEXT:    v_lshrrev_b32_e32 v1, 2, v1
; VI-NEXT:    v_mul_lo_u32 v1, v1, 18
; VI-NEXT:    v_sub_u32_e32 v0, vcc, v0, v1
; VI-NEXT:    s_setpc_b64 s[30:31]
  %undef.hi.elt = insertelement <2 x i32> poison, i32 %arg0, i32 0
  %lshr = urem <2 x i32> %undef.hi.elt, splat (i32 18)
  %trunc = trunc <2 x i32> %lshr to <2 x i16>
  ret <2 x i16> %trunc
}
