forked from OSchip/llvm-project
[InstCombine] add tests for fneg-of-select with FMF; NFC
This commit is contained in:
parent
f6fd1c1438
commit
2d3593e668
|
@ -674,6 +674,58 @@ define float @select_fneg_false_nsz(float %x, float %y, i1 %b) {
|
|||
ret float %r
|
||||
}
|
||||
|
||||
define float @select_common_op_fneg_true(float %x, i1 %b) {
|
||||
; CHECK-LABEL: @select_common_op_fneg_true(
|
||||
; CHECK-NEXT: [[X_NEG:%.*]] = fneg nnan ninf nsz float [[X:%.*]]
|
||||
; CHECK-NEXT: [[R:%.*]] = select nnan ninf i1 [[B:%.*]], float [[X_NEG]], float [[X]]
|
||||
; CHECK-NEXT: ret float [[R]]
|
||||
;
|
||||
%nx = fneg float %x
|
||||
%s = select i1 %b, float %x, float %nx
|
||||
%r = fneg nsz ninf nnan float %s
|
||||
ret float %r
|
||||
}
|
||||
|
||||
define float @select_common_op_fneg_false(float %x, i1 %b) {
|
||||
; CHECK-LABEL: @select_common_op_fneg_false(
|
||||
; CHECK-NEXT: [[X_NEG:%.*]] = fneg nnan ninf nsz float [[X:%.*]]
|
||||
; CHECK-NEXT: [[R:%.*]] = select nnan ninf i1 [[B:%.*]], float [[X_NEG]], float [[X]]
|
||||
; CHECK-NEXT: ret float [[R]]
|
||||
;
|
||||
%nx = fneg float %x
|
||||
%s = select i1 %b, float %x, float %nx
|
||||
%r = fneg nsz ninf nnan float %s
|
||||
ret float %r
|
||||
}
|
||||
|
||||
define float @fabs(float %a) {
|
||||
; CHECK-LABEL: @fabs(
|
||||
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt float [[A:%.*]], 0.000000e+00
|
||||
; CHECK-NEXT: [[A_NEG:%.*]] = fneg nnan ninf nsz float [[A]]
|
||||
; CHECK-NEXT: [[FNEG1:%.*]] = select nnan ninf i1 [[CMP]], float [[A]], float [[A_NEG]]
|
||||
; CHECK-NEXT: ret float [[FNEG1]]
|
||||
;
|
||||
%fneg = fneg float %a
|
||||
%cmp = fcmp ogt float %a, %fneg
|
||||
%sel = select i1 %cmp, float %fneg, float %a
|
||||
%fneg1 = fneg nnan ninf nsz float %sel
|
||||
ret float %fneg1
|
||||
}
|
||||
|
||||
define float @fnabs(float %a) {
|
||||
; CHECK-LABEL: @fnabs(
|
||||
; CHECK-NEXT: [[CMP:%.*]] = fcmp olt float [[A:%.*]], 0.000000e+00
|
||||
; CHECK-NEXT: [[A_NEG:%.*]] = fneg fast float [[A]]
|
||||
; CHECK-NEXT: [[FNEG1:%.*]] = select reassoc nnan ninf arcp contract afn i1 [[CMP]], float [[A]], float [[A_NEG]]
|
||||
; CHECK-NEXT: ret float [[FNEG1]]
|
||||
;
|
||||
%fneg = fneg float %a
|
||||
%cmp = fcmp olt float %a, %fneg
|
||||
%sel = select i1 %cmp, float %fneg, float %a
|
||||
%fneg1 = fneg fast float %sel
|
||||
ret float %fneg1
|
||||
}
|
||||
|
||||
define float @select_fneg_both(float %x, float %y, i1 %b) {
|
||||
; CHECK-LABEL: @select_fneg_both(
|
||||
; CHECK-NEXT: [[S_V:%.*]] = select i1 [[B:%.*]], float [[X:%.*]], float [[Y:%.*]]
|
||||
|
|
Loading…
Reference in New Issue