forked from OSchip/llvm-project
[NFC][InstSimplify] Precommit new unary fneg test
llvm-svn: 361060
This commit is contained in:
parent
e78ac9cc72
commit
bebc7d6a4e
|
@ -28,6 +28,18 @@ define float @fsub_-0_-0_x(float %a) {
|
||||||
ret float %ret
|
ret float %ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; fsub -0.0, (fneg X) ==> X
|
||||||
|
define float @fneg_x(float %a) {
|
||||||
|
; CHECK-LABEL: @fneg_x(
|
||||||
|
; CHECK-NEXT: %t1 = fneg float %a
|
||||||
|
; CHECK-NEXT: %ret = fsub float -0.000000e+00, %t1
|
||||||
|
; CHECK-NEXT: ret float %ret
|
||||||
|
;
|
||||||
|
%t1 = fneg float %a
|
||||||
|
%ret = fsub float -0.0, %t1
|
||||||
|
ret float %ret
|
||||||
|
}
|
||||||
|
|
||||||
define <2 x float> @fsub_-0_-0_x_vec(<2 x float> %a) {
|
define <2 x float> @fsub_-0_-0_x_vec(<2 x float> %a) {
|
||||||
; CHECK-LABEL: @fsub_-0_-0_x_vec(
|
; CHECK-LABEL: @fsub_-0_-0_x_vec(
|
||||||
; CHECK-NEXT: ret <2 x float> [[A:%.*]]
|
; CHECK-NEXT: ret <2 x float> [[A:%.*]]
|
||||||
|
@ -37,6 +49,17 @@ define <2 x float> @fsub_-0_-0_x_vec(<2 x float> %a) {
|
||||||
ret <2 x float> %ret
|
ret <2 x float> %ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define <2 x float> @fneg_x_vec(<2 x float> %a) {
|
||||||
|
; CHECK-LABEL: @fneg_x_vec(
|
||||||
|
; CHECK-NEXT: %t1 = fneg <2 x float> %a
|
||||||
|
; CHECK-NEXT: %ret = fsub <2 x float> <float -0.000000e+00, float -0.000000e+00>, %t1
|
||||||
|
; CHECK-NEXT: ret <2 x float> %ret
|
||||||
|
;
|
||||||
|
%t1 = fneg <2 x float> %a
|
||||||
|
%ret = fsub <2 x float> <float -0.0, float -0.0>, %t1
|
||||||
|
ret <2 x float> %ret
|
||||||
|
}
|
||||||
|
|
||||||
define <2 x float> @fsub_-0_-0_x_vec_undef_elts(<2 x float> %a) {
|
define <2 x float> @fsub_-0_-0_x_vec_undef_elts(<2 x float> %a) {
|
||||||
; CHECK-LABEL: @fsub_-0_-0_x_vec_undef_elts(
|
; CHECK-LABEL: @fsub_-0_-0_x_vec_undef_elts(
|
||||||
; CHECK-NEXT: ret <2 x float> [[A:%.*]]
|
; CHECK-NEXT: ret <2 x float> [[A:%.*]]
|
||||||
|
@ -46,6 +69,17 @@ define <2 x float> @fsub_-0_-0_x_vec_undef_elts(<2 x float> %a) {
|
||||||
ret <2 x float> %ret
|
ret <2 x float> %ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define <2 x float> @fneg_x_vec_undef_elts(<2 x float> %a) {
|
||||||
|
; CHECK-LABEL: @fneg_x_vec_undef_elts(
|
||||||
|
; CHECK-NEXT: %t1 = fneg <2 x float> %a
|
||||||
|
; CHECK-NEXT: %ret = fsub <2 x float> <float -0.000000e+00, float undef>, %t1
|
||||||
|
; CHECK-NEXT: ret <2 x float> %ret
|
||||||
|
;
|
||||||
|
%t1 = fneg <2 x float> %a
|
||||||
|
%ret = fsub <2 x float> <float -0.0, float undef>, %t1
|
||||||
|
ret <2 x float> %ret
|
||||||
|
}
|
||||||
|
|
||||||
; fsub -0.0, (fsub 0.0, X) != X
|
; fsub -0.0, (fsub 0.0, X) != X
|
||||||
define float @fsub_-0_0_x(float %a) {
|
define float @fsub_-0_0_x(float %a) {
|
||||||
; CHECK-LABEL: @fsub_-0_0_x(
|
; CHECK-LABEL: @fsub_-0_0_x(
|
||||||
|
|
|
@ -255,8 +255,8 @@ define i1 @nnan_fsub(double %arg0, double %arg1) {
|
||||||
ret i1 %tmp
|
ret i1 %tmp
|
||||||
}
|
}
|
||||||
|
|
||||||
define i1 @nnan_fneg() {
|
define i1 @nnan_binary_fneg() {
|
||||||
; CHECK-LABEL: @nnan_fneg(
|
; CHECK-LABEL: @nnan_binary_fneg(
|
||||||
; CHECK-NEXT: [[NNAN:%.*]] = call nnan double @func()
|
; CHECK-NEXT: [[NNAN:%.*]] = call nnan double @func()
|
||||||
; CHECK-NEXT: [[OP:%.*]] = fsub double -0.000000e+00, [[NNAN]]
|
; CHECK-NEXT: [[OP:%.*]] = fsub double -0.000000e+00, [[NNAN]]
|
||||||
; CHECK-NEXT: [[TMP:%.*]] = fcmp ord double [[OP]], [[OP]]
|
; CHECK-NEXT: [[TMP:%.*]] = fcmp ord double [[OP]], [[OP]]
|
||||||
|
@ -268,6 +268,19 @@ define i1 @nnan_fneg() {
|
||||||
ret i1 %tmp
|
ret i1 %tmp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define i1 @nnan_unary_fneg() {
|
||||||
|
; CHECK-LABEL: @nnan_unary_fneg(
|
||||||
|
; CHECK-NEXT: [[NNAN:%.*]] = call nnan double @func()
|
||||||
|
; CHECK-NEXT: [[OP:%.*]] = fneg double [[NNAN]]
|
||||||
|
; CHECK-NEXT: [[TMP:%.*]] = fcmp ord double [[OP]], [[OP]]
|
||||||
|
; CHECK-NEXT: ret i1 [[TMP]]
|
||||||
|
;
|
||||||
|
%nnan = call nnan double @func()
|
||||||
|
%op = fneg double %nnan
|
||||||
|
%tmp = fcmp ord double %op, %op
|
||||||
|
ret i1 %tmp
|
||||||
|
}
|
||||||
|
|
||||||
define i1 @sitofp(i32 %arg0) {
|
define i1 @sitofp(i32 %arg0) {
|
||||||
; CHECK-LABEL: @sitofp(
|
; CHECK-LABEL: @sitofp(
|
||||||
; CHECK-NEXT: ret i1 false
|
; CHECK-NEXT: ret i1 false
|
||||||
|
|
Loading…
Reference in New Issue