1 ; RUN: llc < %s -O0 -fast-isel-abort -mtriple=arm64-apple-darwin | FileCheck %s
3 define zeroext i1 @fcmp_float1(float %a) nounwind ssp {
7 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, eq
8 %cmp = fcmp une float %a, 0.000000e+00
12 define zeroext i1 @fcmp_float2(float %a, float %b) nounwind ssp {
16 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, eq
17 %cmp = fcmp une float %a, %b
21 define zeroext i1 @fcmp_double1(double %a) nounwind ssp {
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
30 define zeroext i1 @fcmp_double2(double %a, double %b) nounwind ssp {
32 ; CHECK: @fcmp_double2
34 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, eq
35 %cmp = fcmp une double %a, %b
39 ; Check each fcmp condition
40 define float @fcmp_oeq(float %a, float %b) nounwind ssp {
43 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, ne
44 %cmp = fcmp oeq float %a, %b
45 %conv = uitofp i1 %cmp to float
49 define float @fcmp_ogt(float %a, float %b) nounwind ssp {
52 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, le
53 %cmp = fcmp ogt float %a, %b
54 %conv = uitofp i1 %cmp to float
58 define float @fcmp_oge(float %a, float %b) nounwind ssp {
61 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, lt
62 %cmp = fcmp oge float %a, %b
63 %conv = uitofp i1 %cmp to float
67 define float @fcmp_olt(float %a, float %b) nounwind ssp {
70 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, pl
71 %cmp = fcmp olt float %a, %b
72 %conv = uitofp i1 %cmp to float
76 define float @fcmp_ole(float %a, float %b) nounwind ssp {
79 ; CHECK: csinc w{{[0-9]+}}, wzr, wzr, hi
80 %cmp = fcmp ole float %a, %b
81 %conv = uitofp i1 %cmp to float
85 define float @fcmp_ord(float %a, float %b) nounwind ssp {
88 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, vs
89 %cmp = fcmp ord float %a, %b
90 %conv = uitofp i1 %cmp to float
94 define float @fcmp_uno(float %a, float %b) nounwind ssp {
97 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, vc
98 %cmp = fcmp uno float %a, %b
99 %conv = uitofp i1 %cmp to float
103 define float @fcmp_ugt(float %a, float %b) nounwind ssp {
106 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, ls
107 %cmp = fcmp ugt float %a, %b
108 %conv = uitofp i1 %cmp to float
112 define float @fcmp_uge(float %a, float %b) nounwind ssp {
115 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, mi
116 %cmp = fcmp uge float %a, %b
117 %conv = uitofp i1 %cmp to float
121 define float @fcmp_ult(float %a, float %b) nounwind ssp {
124 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, ge
125 %cmp = fcmp ult float %a, %b
126 %conv = uitofp i1 %cmp to float
130 define float @fcmp_ule(float %a, float %b) nounwind ssp {
133 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, gt
134 %cmp = fcmp ule float %a, %b
135 %conv = uitofp i1 %cmp to float
139 define float @fcmp_une(float %a, float %b) nounwind ssp {
142 ; CHECK: csinc {{w[0-9]+}}, wzr, wzr, eq
143 %cmp = fcmp une float %a, %b
144 %conv = uitofp i1 %cmp to float