-
Notifications
You must be signed in to change notification settings - Fork 10.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert r237247 - [AArch64] Codegen VMAX/VMIN.. as it is causing failu…
…res in SPEC2000/2006 llvm-svn: 237256
- Loading branch information
1 parent
d0a7ff2
commit 780a3b3
Showing
3 changed files
with
44 additions
and
94 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,55 +1,34 @@ | ||
; RUN: llc -march=arm64 -enable-no-nans-fp-math < %s | FileCheck %s | ||
; RUN: llc -march=arm64 < %s | FileCheck %s --check-prefix=CHECK-SAFE | ||
|
||
define double @test_direct(float %in) #1 { | ||
; CHECK-LABEL: test_direct: | ||
; CHECK-SAFE-LABEL: test_direct: | ||
%cmp = fcmp olt float %in, 0.000000e+00 | ||
%longer = fpext float %in to double | ||
%val = select i1 %cmp, double 0.000000e+00, double %longer | ||
ret double %val | ||
|
||
; CHECK: fmax | ||
; CHECK-SAFE: fmax | ||
} | ||
|
||
define double @test_cross(float %in) #1 { | ||
; CHECK-LABEL: test_cross: | ||
; CHECK-SAFE-LABEL: test_cross: | ||
%cmp = fcmp ult float %in, 0.000000e+00 | ||
%longer = fpext float %in to double | ||
%val = select i1 %cmp, double %longer, double 0.000000e+00 | ||
ret double %val | ||
|
||
; CHECK: fmin | ||
; CHECK-SAFE: fmin | ||
} | ||
|
||
; Same as previous, but with ordered comparison; | ||
; can't be converted in safe-math mode. | ||
define double @test_cross_fail_nan(float %in) #1 { | ||
; CHECK-LABEL: test_cross_fail_nan: | ||
; CHECK-SAFE-LABEL: test_cross_fail_nan: | ||
%cmp = fcmp olt float %in, 0.000000e+00 | ||
%longer = fpext float %in to double | ||
%val = select i1 %cmp, double %longer, double 0.000000e+00 | ||
ret double %val | ||
|
||
; CHECK: fmin | ||
; CHECK-SAFE: fcsel d0, d1, d0, mi | ||
} | ||
|
||
; This isn't a min or a max, but passes the first condition for swapping the | ||
; results. Make sure they're put back before we resort to the normal fcsel. | ||
define float @test_cross_fail(float %lhs, float %rhs) { | ||
; CHECK-LABEL: test_cross_fail: | ||
; CHECK-SAFE-LABEL: test_cross_fail: | ||
%tst = fcmp une float %lhs, %rhs | ||
%res = select i1 %tst, float %rhs, float %lhs | ||
ret float %res | ||
|
||
; The register allocator would have to decide to be deliberately obtuse before | ||
; other register were used. | ||
; CHECK: fcsel s0, s1, s0, ne | ||
; CHECK-SAFE: fcsel s0, s1, s0, ne | ||
} | ||
} |