; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S -passes=instcombine < %s | FileCheck %s

declare nofpclass(inf norm sub zero) <4 x half> @returns_nan()
declare nofpclass(nan norm sub zero) <4 x half> @returns_inf()

define nofpclass(inf norm sub zero) half @ret_only_nan__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(inf zero sub norm) half @ret_only_nan__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    [[EXT:%.*]] = extractelement <4 x half> [[VEC]], i32 [[IDX]]
; CHECK-NEXT:    ret half [[EXT]]
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(snan inf norm sub zero) half @ret_only_qnan__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(snan inf zero sub norm) half @ret_only_qnan__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    [[EXT:%.*]] = extractelement <4 x half> [[VEC]], i32 [[IDX]]
; CHECK-NEXT:    ret half [[EXT]]
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(qnan inf norm sub zero) half @ret_only_snan__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(qnan inf zero sub norm) half @ret_only_snan__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    [[EXT:%.*]] = extractelement <4 x half> [[VEC]], i32 [[IDX]]
; CHECK-NEXT:    ret half [[EXT]]
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(nan inf norm sub nzero) half @ret_only_pzero__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(nan inf nzero sub norm) half @ret_only_pzero__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    ret half 0xH0000
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(nan inf norm sub pzero) half @ret_only_nzero__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(nan inf pzero sub norm) half @ret_only_nzero__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    ret half 0xH8000
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(nan inf norm sub) half @ret_only_zero__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(nan inf sub norm) half @ret_only_zero__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    [[EXT:%.*]] = extractelement <4 x half> [[VEC]], i32 [[IDX]]
; CHECK-NEXT:    ret half [[EXT]]
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(nan pinf norm sub zero) half @ret_only_ninf__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(nan pinf zero sub norm) half @ret_only_ninf__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    ret half 0xHFC00
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(nan ninf norm sub zero) half @ret_only_pinf__extractelement_unknown(<4 x half> %vec, i32 %idx) {
; CHECK-LABEL: define nofpclass(nan ninf zero sub norm) half @ret_only_pinf__extractelement_unknown(
; CHECK-SAME: <4 x half> [[VEC:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    ret half 0xH7C00
;
  %ext = extractelement <4 x half> %vec, i32 %idx
  ret half %ext
}

define nofpclass(nan) half @ret_no_nan__extractelement_select_unknown_or_nan(i1 %cond, <4 x half> %unknown, i32 %idx) {
; CHECK-LABEL: define nofpclass(nan) half @ret_no_nan__extractelement_select_unknown_or_nan(
; CHECK-SAME: i1 [[COND:%.*]], <4 x half> [[UNKNOWN:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    [[NAN:%.*]] = call <4 x half> @returns_nan()
; CHECK-NEXT:    [[EXT:%.*]] = extractelement <4 x half> [[UNKNOWN]], i32 [[IDX]]
; CHECK-NEXT:    ret half [[EXT]]
;
  %nan = call <4 x half> @returns_nan()
  %select = select i1 %cond, <4 x half> %nan, <4 x half> %unknown
  %ext = extractelement <4 x half> %select, i32 %idx
  ret half %ext
}

define nofpclass(nan) half @ret_no_nan__extractelement_vselect_unknown_or_nan(<4 x i1> %cond, <4 x half> %unknown, i32 %idx) {
; CHECK-LABEL: define nofpclass(nan) half @ret_no_nan__extractelement_vselect_unknown_or_nan(
; CHECK-SAME: <4 x i1> [[COND:%.*]], <4 x half> [[UNKNOWN:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    [[NAN:%.*]] = call <4 x half> @returns_nan()
; CHECK-NEXT:    [[EXT:%.*]] = extractelement <4 x half> [[UNKNOWN]], i32 [[IDX]]
; CHECK-NEXT:    ret half [[EXT]]
;
  %nan = call <4 x half> @returns_nan()
  %select = select <4 x i1> %cond, <4 x half> %nan, <4 x half> %unknown
  %ext = extractelement <4 x half> %select, i32 %idx
  ret half %ext
}

define nofpclass(inf) half @ret_no_nan__extractelement_vselect_unknown_or_inf(<4 x i1> %cond, <4 x half> %unknown, i32 %idx) {
; CHECK-LABEL: define nofpclass(inf) half @ret_no_nan__extractelement_vselect_unknown_or_inf(
; CHECK-SAME: <4 x i1> [[COND:%.*]], <4 x half> [[UNKNOWN:%.*]], i32 [[IDX:%.*]]) {
; CHECK-NEXT:    [[INF:%.*]] = call <4 x half> @returns_inf()
; CHECK-NEXT:    [[EXT:%.*]] = extractelement <4 x half> [[UNKNOWN]], i32 [[IDX]]
; CHECK-NEXT:    ret half [[EXT]]
;
  %inf = call <4 x half> @returns_inf()
  %select = select <4 x i1> %cond, <4 x half> %unknown, <4 x half> %inf
  %ext = extractelement <4 x half> %select, i32 %idx
  ret half %ext
}
