xref: /llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/select-neon-vector-fcmp.mir (revision 27a8735a444fb311838f06f8d0d5b10ca9b541f6)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=aarch64 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
3
4...
5---
6name:            fcmeq
7alignment:       4
8legalized:       true
9regBankSelected: true
10body:             |
11  bb.0:
12    ; CHECK-LABEL: name: fcmeq
13    ; CHECK: %lhs:fpr128 = COPY $q0
14    ; CHECK: %rhs:fpr128 = COPY $q1
15    ; CHECK: %fcmp:fpr128 = nofpexcept FCMEQv2f64 %lhs, %rhs
16    ; CHECK: $q0 = COPY %fcmp
17    ; CHECK: RET_ReallyLR implicit $q0
18    %lhs:fpr(<2 x s64>) = COPY $q0
19    %rhs:fpr(<2 x s64>) = COPY $q1
20    %fcmp:fpr(<2 x s64>) = G_FCMEQ %lhs, %rhs(<2 x s64>)
21    $q0 = COPY %fcmp(<2 x s64>)
22    RET_ReallyLR implicit $q0
23
24...
25---
26name:            fcmge
27alignment:       4
28legalized:       true
29regBankSelected: true
30body:             |
31  bb.0:
32    ; CHECK-LABEL: name: fcmge
33    ; CHECK: %lhs:fpr128 = COPY $q0
34    ; CHECK: %rhs:fpr128 = COPY $q1
35    ; CHECK: %fcmp:fpr128 = nofpexcept FCMGEv2f64 %lhs, %rhs
36    ; CHECK: $q0 = COPY %fcmp
37    ; CHECK: RET_ReallyLR implicit $q0
38    %lhs:fpr(<2 x s64>) = COPY $q0
39    %rhs:fpr(<2 x s64>) = COPY $q1
40    %fcmp:fpr(<2 x s64>) = G_FCMGE %lhs, %rhs(<2 x s64>)
41    $q0 = COPY %fcmp(<2 x s64>)
42    RET_ReallyLR implicit $q0
43
44...
45---
46name:            fcmgt
47alignment:       4
48legalized:       true
49regBankSelected: true
50body:             |
51  bb.0:
52    ; CHECK-LABEL: name: fcmgt
53    ; CHECK: %lhs:fpr128 = COPY $q0
54    ; CHECK: %rhs:fpr128 = COPY $q1
55    ; CHECK: %fcmp:fpr128 = nofpexcept FCMGTv2f64 %lhs, %rhs
56    ; CHECK: $q0 = COPY %fcmp
57    ; CHECK: RET_ReallyLR implicit $q0
58    %lhs:fpr(<2 x s64>) = COPY $q0
59    %rhs:fpr(<2 x s64>) = COPY $q1
60    %fcmp:fpr(<2 x s64>) = G_FCMGT %lhs, %rhs(<2 x s64>)
61    $q0 = COPY %fcmp(<2 x s64>)
62    RET_ReallyLR implicit $q0
63
64...
65---
66name:            fcmeqz
67alignment:       4
68legalized:       true
69regBankSelected: true
70body:             |
71  bb.0:
72    ; CHECK-LABEL: name: fcmeqz
73    ; CHECK: %lhs:fpr128 = COPY $q0
74    ; CHECK: %fcmp:fpr128 = nofpexcept FCMEQv2i64rz %lhs
75    ; CHECK: $q0 = COPY %fcmp
76    ; CHECK: RET_ReallyLR implicit $q0
77    %lhs:fpr(<2 x s64>) = COPY $q0
78    %zero:gpr(s64) = G_CONSTANT i64 0
79    %zero_vec:fpr(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)
80    %fcmp:fpr(<2 x s64>) = G_FCMEQZ %lhs
81    $q0 = COPY %fcmp(<2 x s64>)
82    RET_ReallyLR implicit $q0
83
84...
85---
86name:            fcmgez
87alignment:       4
88legalized:       true
89regBankSelected: true
90body:             |
91  bb.0:
92    ; CHECK-LABEL: name: fcmgez
93    ; CHECK: %lhs:fpr128 = COPY $q0
94    ; CHECK: %fcmp:fpr128 = nofpexcept FCMGEv2i64rz %lhs
95    ; CHECK: $q0 = COPY %fcmp
96    ; CHECK: RET_ReallyLR implicit $q0
97    %lhs:fpr(<2 x s64>) = COPY $q0
98    %zero:gpr(s64) = G_CONSTANT i64 0
99    %zero_vec:fpr(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)
100    %fcmp:fpr(<2 x s64>) = G_FCMGEZ %lhs
101    $q0 = COPY %fcmp(<2 x s64>)
102    RET_ReallyLR implicit $q0
103
104...
105---
106name:            fcmgtz
107alignment:       4
108legalized:       true
109regBankSelected: true
110body:             |
111  bb.0:
112    ; CHECK-LABEL: name: fcmgtz
113    ; CHECK: %lhs:fpr128 = COPY $q0
114    ; CHECK: %fcmp:fpr128 = nofpexcept FCMGTv2i64rz %lhs
115    ; CHECK: $q0 = COPY %fcmp
116    ; CHECK: RET_ReallyLR implicit $q0
117    %lhs:fpr(<2 x s64>) = COPY $q0
118    %zero:gpr(s64) = G_CONSTANT i64 0
119    %zero_vec:fpr(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)
120    %fcmp:fpr(<2 x s64>) = G_FCMGTZ %lhs
121    $q0 = COPY %fcmp(<2 x s64>)
122    RET_ReallyLR implicit $q0
123
124...
125---
126name:            fcmlez
127alignment:       4
128legalized:       true
129regBankSelected: true
130body:             |
131  bb.0:
132    ; CHECK-LABEL: name: fcmlez
133    ; CHECK: %lhs:fpr128 = COPY $q0
134    ; CHECK: %fcmp:fpr128 = nofpexcept FCMLEv2i64rz %lhs
135    ; CHECK: $q0 = COPY %fcmp
136    ; CHECK: RET_ReallyLR implicit $q0
137    %lhs:fpr(<2 x s64>) = COPY $q0
138    %zero:gpr(s64) = G_CONSTANT i64 0
139    %zero_vec:fpr(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)
140    %fcmp:fpr(<2 x s64>) = G_FCMLEZ %lhs
141    $q0 = COPY %fcmp(<2 x s64>)
142    RET_ReallyLR implicit $q0
143
144...
145---
146name:            fcmltz
147alignment:       4
148legalized:       true
149regBankSelected: true
150body:             |
151  bb.0:
152    ; CHECK-LABEL: name: fcmltz
153    ; CHECK: %lhs:fpr128 = COPY $q0
154    ; CHECK: %fcmp:fpr128 = nofpexcept FCMLTv2i64rz %lhs
155    ; CHECK: $q0 = COPY %fcmp
156    ; CHECK: RET_ReallyLR implicit $q0
157    %lhs:fpr(<2 x s64>) = COPY $q0
158    %zero:gpr(s64) = G_CONSTANT i64 0
159    %zero_vec:fpr(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)
160    %fcmp:fpr(<2 x s64>) = G_FCMLTZ %lhs
161    $q0 = COPY %fcmp(<2 x s64>)
162    RET_ReallyLR implicit $q0
163