[ARM64] Set default CPU to generic instead of cyclone.
[oota-llvm.git] / test / CodeGen / ARM64 / fast-isel-fcmp.ll
1 ; RUN: llc < %s -O0 -fast-isel-abort -mtriple=arm64-apple-darwin | FileCheck %s
2
3 define zeroext i1 @fcmp_float1(float %a) nounwind ssp {
4 entry:
5 ; CHECK: @fcmp_float1
6 ; CHECK: fcmp s0, #0.0
7 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, eq
8   %cmp = fcmp une float %a, 0.000000e+00
9   ret i1 %cmp
10 }
11
12 define zeroext i1 @fcmp_float2(float %a, float %b) nounwind ssp {
13 entry:
14 ; CHECK: @fcmp_float2
15 ; CHECK: fcmp s0, s1
16 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, eq
17   %cmp = fcmp une float %a, %b
18   ret i1 %cmp
19 }
20
21 define zeroext i1 @fcmp_double1(double %a) nounwind ssp {
22 entry:
23 ; CHECK: @fcmp_double1
24 ; CHECK: fcmp d0, #0.0
25 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, eq
26   %cmp = fcmp une double %a, 0.000000e+00
27   ret i1 %cmp
28 }
29
30 define zeroext i1 @fcmp_double2(double %a, double %b) nounwind ssp {
31 entry:
32 ; CHECK: @fcmp_double2
33 ; CHECK: fcmp d0, d1
34 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, eq
35   %cmp = fcmp une double %a, %b
36   ret i1 %cmp
37 }
38
39 ; Check each fcmp condition
40 define float @fcmp_oeq(float %a, float %b) nounwind ssp {
41 ; CHECK: @fcmp_oeq
42 ; CHECK: fcmp s0, s1
43 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, ne
44   %cmp = fcmp oeq float %a, %b
45   %conv = uitofp i1 %cmp to float
46   ret float %conv
47 }
48
49 define float @fcmp_ogt(float %a, float %b) nounwind ssp {
50 ; CHECK: @fcmp_ogt
51 ; CHECK: fcmp s0, s1
52 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, le
53   %cmp = fcmp ogt float %a, %b
54   %conv = uitofp i1 %cmp to float
55   ret float %conv
56 }
57
58 define float @fcmp_oge(float %a, float %b) nounwind ssp {
59 ; CHECK: @fcmp_oge
60 ; CHECK: fcmp s0, s1
61 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, lt
62   %cmp = fcmp oge float %a, %b
63   %conv = uitofp i1 %cmp to float
64   ret float %conv
65 }
66
67 define float @fcmp_olt(float %a, float %b) nounwind ssp {
68 ; CHECK: @fcmp_olt
69 ; CHECK: fcmp s0, s1
70 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, pl
71   %cmp = fcmp olt float %a, %b
72   %conv = uitofp i1 %cmp to float
73   ret float %conv
74 }
75
76 define float @fcmp_ole(float %a, float %b) nounwind ssp {
77 ; CHECK: @fcmp_ole
78 ; CHECK: fcmp s0, s1
79 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, hi
80   %cmp = fcmp ole float %a, %b
81   %conv = uitofp i1 %cmp to float
82   ret float %conv
83 }
84
85 define float @fcmp_ord(float %a, float %b) nounwind ssp {
86 ; CHECK: @fcmp_ord
87 ; CHECK: fcmp s0, s1
88 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, vs
89   %cmp = fcmp ord float %a, %b
90   %conv = uitofp i1 %cmp to float
91   ret float %conv
92 }
93
94 define float @fcmp_uno(float %a, float %b) nounwind ssp {
95 ; CHECK: @fcmp_uno
96 ; CHECK: fcmp s0, s1
97 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, vc
98   %cmp = fcmp uno float %a, %b
99   %conv = uitofp i1 %cmp to float
100   ret float %conv
101 }
102
103 define float @fcmp_ugt(float %a, float %b) nounwind ssp {
104 ; CHECK: @fcmp_ugt
105 ; CHECK: fcmp s0, s1
106 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, ls
107   %cmp = fcmp ugt float %a, %b
108   %conv = uitofp i1 %cmp to float
109   ret float %conv
110 }
111
112 define float @fcmp_uge(float %a, float %b) nounwind ssp {
113 ; CHECK: @fcmp_uge
114 ; CHECK: fcmp s0, s1
115 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, mi
116   %cmp = fcmp uge float %a, %b
117   %conv = uitofp i1 %cmp to float
118   ret float %conv
119 }
120
121 define float @fcmp_ult(float %a, float %b) nounwind ssp {
122 ; CHECK: @fcmp_ult
123 ; CHECK: fcmp s0, s1
124 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, ge
125   %cmp = fcmp ult float %a, %b
126   %conv = uitofp i1 %cmp to float
127   ret float %conv
128 }
129
130 define float @fcmp_ule(float %a, float %b) nounwind ssp {
131 ; CHECK: @fcmp_ule
132 ; CHECK: fcmp s0, s1
133 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, gt
134   %cmp = fcmp ule float %a, %b
135   %conv = uitofp i1 %cmp to float
136   ret float %conv
137 }
138
139 define float @fcmp_une(float %a, float %b) nounwind ssp {
140 ; CHECK: @fcmp_une
141 ; CHECK: fcmp s0, s1
142 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, eq
143   %cmp = fcmp une float %a, %b
144   %conv = uitofp i1 %cmp to float
145   ret float %conv
146 }