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

define float @fadd_undef_op0(float %x) {
; CHECK-LABEL: @fadd_undef_op0(
; CHECK-NEXT:    ret float +qnan
;
  %r = fadd float undef, %x
  ret float %r
}

define float @fadd_poison_op0(float %x) {
; CHECK-LABEL: @fadd_poison_op0(
; CHECK-NEXT:    ret float poison
;
  %r = fadd float poison, %x
  ret float %r
}

define float @fadd_undef_op1(float %x) {
; CHECK-LABEL: @fadd_undef_op1(
; CHECK-NEXT:    ret float +qnan
;
  %r = fadd float %x, undef
  ret float %r
}

define float @fadd_poison_op1(float %x) {
; CHECK-LABEL: @fadd_poison_op1(
; CHECK-NEXT:    ret float poison
;
  %r = fadd float %x, poison
  ret float %r
}

define float @fsub_undef_op0(float %x) {
; CHECK-LABEL: @fsub_undef_op0(
; CHECK-NEXT:    ret float +qnan
;
  %r = fsub float undef, %x
  ret float %r
}

define float @fsub_poison_op0(float %x) {
; CHECK-LABEL: @fsub_poison_op0(
; CHECK-NEXT:    ret float poison
;
  %r = fsub float poison, %x
  ret float %r
}

define float @fsub_undef_op1(float %x) {
; CHECK-LABEL: @fsub_undef_op1(
; CHECK-NEXT:    ret float +qnan
;
  %r = fsub float %x, undef
  ret float %r
}

define float @fsub_poison_op1(float %x) {
; CHECK-LABEL: @fsub_poison_op1(
; CHECK-NEXT:    ret float poison
;
  %r = fsub float %x, poison
  ret float %r
}

define float @fmul_undef_op0(float %x) {
; CHECK-LABEL: @fmul_undef_op0(
; CHECK-NEXT:    ret float +qnan
;
  %r = fmul float undef, %x
  ret float %r
}

define float @fmul_poison_op0(float %x) {
; CHECK-LABEL: @fmul_poison_op0(
; CHECK-NEXT:    ret float poison
;
  %r = fmul float poison, %x
  ret float %r
}

define float @fmul_undef_op1(float %x) {
; CHECK-LABEL: @fmul_undef_op1(
; CHECK-NEXT:    ret float +qnan
;
  %r = fmul float %x, undef
  ret float %r
}

define float @fmul_poison_op1(float %x) {
; CHECK-LABEL: @fmul_poison_op1(
; CHECK-NEXT:    ret float poison
;
  %r = fmul float %x, poison
  ret float %r
}

define float @fdiv_undef_op0(float %x) {
; CHECK-LABEL: @fdiv_undef_op0(
; CHECK-NEXT:    ret float +qnan
;
  %r = fdiv float undef, %x
  ret float %r
}

define float @fdiv_poison_op0(float %x) {
; CHECK-LABEL: @fdiv_poison_op0(
; CHECK-NEXT:    ret float poison
;
  %r = fdiv float poison, %x
  ret float %r
}

define float @fdiv_undef_op1(float %x) {
; CHECK-LABEL: @fdiv_undef_op1(
; CHECK-NEXT:    ret float +qnan
;
  %r = fdiv float %x, undef
  ret float %r
}

define float @fdiv_poison_op1(float %x) {
; CHECK-LABEL: @fdiv_poison_op1(
; CHECK-NEXT:    ret float poison
;
  %r = fdiv float %x, poison
  ret float %r
}

define float @frem_undef_op0(float %x) {
; CHECK-LABEL: @frem_undef_op0(
; CHECK-NEXT:    ret float +qnan
;
  %r = frem float undef, %x
  ret float %r
}

define float @frem_poison_op0(float %x) {
; CHECK-LABEL: @frem_poison_op0(
; CHECK-NEXT:    ret float poison
;
  %r = frem float poison, %x
  ret float %r
}

define float @frem_undef_op1(float %x) {
; CHECK-LABEL: @frem_undef_op1(
; CHECK-NEXT:    ret float +qnan
;
  %r = frem float %x, undef
  ret float %r
}

define float @frem_poison_op1(float %x) {
; CHECK-LABEL: @frem_poison_op1(
; CHECK-NEXT:    ret float poison
;
  %r = frem float %x, poison
  ret float %r
}

; Repeat all tests with fast-math-flags. Alternate 'nnan' and 'fast' for more coverage.

define float @fadd_undef_op0_nnan(float %x) {
; CHECK-LABEL: @fadd_undef_op0_nnan(
; CHECK-NEXT:    ret float poison
;
  %r = fadd nnan float undef, %x
  ret float %r
}

define float @fadd_undef_op1_fast(float %x) {
; CHECK-LABEL: @fadd_undef_op1_fast(
; CHECK-NEXT:    ret float poison
;
  %r = fadd fast float %x, undef
  ret float %r
}

define float @fsub_undef_op0_fast(float %x) {
; CHECK-LABEL: @fsub_undef_op0_fast(
; CHECK-NEXT:    ret float poison
;
  %r = fsub fast float undef, %x
  ret float %r
}

define float @fsub_undef_op1_nnan(float %x) {
; CHECK-LABEL: @fsub_undef_op1_nnan(
; CHECK-NEXT:    ret float poison
;
  %r = fsub nnan float %x, undef
  ret float %r
}

define float @fmul_undef_op0_nnan(float %x) {
; CHECK-LABEL: @fmul_undef_op0_nnan(
; CHECK-NEXT:    ret float poison
;
  %r = fmul nnan float undef, %x
  ret float %r
}

define float @fmul_undef_op1_fast(float %x) {
; CHECK-LABEL: @fmul_undef_op1_fast(
; CHECK-NEXT:    ret float poison
;
  %r = fmul fast float %x, undef
  ret float %r
}

define float @fdiv_undef_op0_fast(float %x) {
; CHECK-LABEL: @fdiv_undef_op0_fast(
; CHECK-NEXT:    ret float poison
;
  %r = fdiv fast float undef, %x
  ret float %r
}

define float @fdiv_undef_op1_nnan(float %x) {
; CHECK-LABEL: @fdiv_undef_op1_nnan(
; CHECK-NEXT:    ret float poison
;
  %r = fdiv nnan float %x, undef
  ret float %r
}

define float @frem_undef_op0_nnan(float %x) {
; CHECK-LABEL: @frem_undef_op0_nnan(
; CHECK-NEXT:    ret float poison
;
  %r = frem nnan float undef, %x
  ret float %r
}

define float @frem_undef_op1_fast(float %x) {
; CHECK-LABEL: @frem_undef_op1_fast(
; CHECK-NEXT:    ret float poison
;
  %r = frem fast float %x, undef
  ret float %r
}

define double @fdiv_ninf_nan_op0(double %x) {
; CHECK-LABEL: @fdiv_ninf_nan_op0(
; CHECK-NEXT:    ret double -qnan
;
  %r = fdiv ninf double -qnan, %x
  ret double %r
}

define double @fadd_ninf_nan_op1(double %x) {
; CHECK-LABEL: @fadd_ninf_nan_op1(
; CHECK-NEXT:    ret double +qnan
;
  %r = fadd ninf double %x, +qnan
  ret double %r
}

define double @fdiv_ninf_inf_op0(double %x) {
; CHECK-LABEL: @fdiv_ninf_inf_op0(
; CHECK-NEXT:    ret double poison
;
  %r = fdiv ninf double +inf, %x
  ret double %r
}

define double @fadd_ninf_inf_op1(double %x) {
; CHECK-LABEL: @fadd_ninf_inf_op1(
; CHECK-NEXT:    ret double poison
;
  %r = fadd ninf double %x, -inf
  ret double %r
}

define double @fsub_nnan_inf_op0(double %x) {
; CHECK-LABEL: @fsub_nnan_inf_op0(
; CHECK-NEXT:    ret double +inf
;
  %r = fsub nnan double +inf, %x
  ret double %r
}

; This can't simplify - the result is infinity, but the sign is unknown.

define double @fmul_nnan_inf_op1(double %x) {
; CHECK-LABEL: @fmul_nnan_inf_op1(
; CHECK-NEXT:    [[R:%.*]] = fmul nnan double [[X:%.*]], -inf
; CHECK-NEXT:    ret double [[R]]
;
  %r = fmul nnan double %x, -inf
  ret double %r
}

define float @sqrt_poison() {
; CHECK-LABEL: @sqrt_poison(
; CHECK-NEXT:    ret float poison
;
  %sqrt = call float @llvm.sqrt(float poison)
  ret float %sqrt
}

define <2 x float> @sqrt_poison_fixed_vec() {
; CHECK-LABEL: @sqrt_poison_fixed_vec(
; CHECK-NEXT:    ret <2 x float> poison
;
  %sqrt = call <2 x float> @llvm.sqrt(<2 x float> poison)
  ret <2 x float> %sqrt
}

define <2 x float> @sqrt_poison_elt_fixed_vec() {
; CHECK-LABEL: @sqrt_poison_elt_fixed_vec(
; CHECK-NEXT:    ret <2 x float> <float 1.000000e+00, float poison>
;
  %sqrt = call <2 x float> @llvm.sqrt(<2 x float> <float 1.0, float poison>)
  ret <2 x float> %sqrt
}

define <vscale x 2 x float> @sqrt_poison_scalable_vec() {
; CHECK-LABEL: @sqrt_poison_scalable_vec(
; CHECK-NEXT:    ret <vscale x 2 x float> poison
;
  %sqrt = call <vscale x 2 x float> @llvm.sqrt(<vscale x 2 x float> poison)
  ret <vscale x 2 x float> %sqrt
}

define float @sqrt_nnan_nan() {
; CHECK-LABEL: @sqrt_nnan_nan(
; CHECK-NEXT:    [[SQRT:%.*]] = call nnan float @llvm.sqrt.f32(float +qnan)
; CHECK-NEXT:    ret float [[SQRT]]
;
  %sqrt = call nnan float @llvm.sqrt(float +qnan)
  ret float %sqrt
}

define float @sqrt_ninf_inf() {
; CHECK-LABEL: @sqrt_ninf_inf(
; CHECK-NEXT:    [[SQRT:%.*]] = call ninf float @llvm.sqrt.f32(float -inf)
; CHECK-NEXT:    ret float [[SQRT]]
;
  %sqrt = call ninf float @llvm.sqrt(float -inf)
  ret float %sqrt
}
