1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2
- ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=X64,SDAG-X64
3
- ; RUN: llc < %s -mtriple=x86_64-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=X64,FASTISEL-X64
4
- ; RUN: llc < %s -mtriple=x86_64-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X64,GISEL-X64
2
+ ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefixes=SDAG-X64
3
+ ; RUN: llc < %s -mtriple=x86_64-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=FASTISEL-X64
4
+ ; RUN: llc < %s -mtriple=x86_64-- -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X64
5
+ ; RUN: llc < %s -mtriple=i686-- -mattr=-x87 | FileCheck %s --check-prefixes=SDAG-X86
6
+ ; RUN: llc < %s -mtriple=i686-- -mattr=-x87 -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=FASTISEL-X86
7
+ ; RUN: llc < %s -mtriple=i686-- -mattr=-x87 -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X86
8
+
5
9
define float @test_float_abs (float %arg ) {
6
10
; SDAG-X64-LABEL: test_float_abs:
7
11
; SDAG-X64: # %bb.0:
@@ -19,6 +23,24 @@ define float @test_float_abs(float %arg) {
19
23
; GISEL-X64-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
20
24
; GISEL-X64-NEXT: movd %eax, %xmm0
21
25
; GISEL-X64-NEXT: retq
26
+ ;
27
+ ; SDAG-X86-LABEL: test_float_abs:
28
+ ; SDAG-X86: # %bb.0:
29
+ ; SDAG-X86-NEXT: movl $2147483647, %eax # imm = 0x7FFFFFFF
30
+ ; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %eax
31
+ ; SDAG-X86-NEXT: retl
32
+ ;
33
+ ; FASTISEL-X86-LABEL: test_float_abs:
34
+ ; FASTISEL-X86: # %bb.0:
35
+ ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
36
+ ; FASTISEL-X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
37
+ ; FASTISEL-X86-NEXT: retl
38
+ ;
39
+ ; GISEL-X86-LABEL: test_float_abs:
40
+ ; GISEL-X86: # %bb.0:
41
+ ; GISEL-X86-NEXT: movl $2147483647, %eax # imm = 0x7FFFFFFF
42
+ ; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax
43
+ ; GISEL-X86-NEXT: retl
22
44
%abs = tail call float @llvm.fabs.f32 (float %arg )
23
45
ret float %abs
24
46
}
@@ -41,16 +63,28 @@ define double @test_double_abs(double %arg) {
41
63
; GISEL-X64-NEXT: andq %rax, %rcx
42
64
; GISEL-X64-NEXT: movq %rcx, %xmm0
43
65
; GISEL-X64-NEXT: retq
66
+ ;
67
+ ; SDAG-X86-LABEL: test_double_abs:
68
+ ; SDAG-X86: # %bb.0:
69
+ ; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
70
+ ; SDAG-X86-NEXT: movl $2147483647, %edx # imm = 0x7FFFFFFF
71
+ ; SDAG-X86-NEXT: andl {{[0-9]+}}(%esp), %edx
72
+ ; SDAG-X86-NEXT: retl
73
+ ;
74
+ ; FASTISEL-X86-LABEL: test_double_abs:
75
+ ; FASTISEL-X86: # %bb.0:
76
+ ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edx
77
+ ; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax
78
+ ; FASTISEL-X86-NEXT: andl $2147483647, %edx # imm = 0x7FFFFFFF
79
+ ; FASTISEL-X86-NEXT: retl
80
+ ;
81
+ ; GISEL-X86-LABEL: test_double_abs:
82
+ ; GISEL-X86: # %bb.0:
83
+ ; GISEL-X86-NEXT: movl $-1, %eax
84
+ ; GISEL-X86-NEXT: movl $2147483647, %edx # imm = 0x7FFFFFFF
85
+ ; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %eax
86
+ ; GISEL-X86-NEXT: andl {{[0-9]+}}(%esp), %edx
87
+ ; GISEL-X86-NEXT: retl
44
88
%abs = tail call double @llvm.fabs.f64 (double %arg )
45
89
ret double %abs
46
90
}
47
-
48
- define x86_fp80 @test_x86_fp80_abs (x86_fp80 %arg ) {
49
- ; X64-LABEL: test_x86_fp80_abs:
50
- ; X64: # %bb.0:
51
- ; X64-NEXT: fldt {{[0-9]+}}(%rsp)
52
- ; X64-NEXT: fabs
53
- ; X64-NEXT: retq
54
- %abs = tail call x86_fp80 @llvm.fabs.f80 (x86_fp80 %arg )
55
- ret x86_fp80 %abs
56
- }
0 commit comments