xref: /llvm-project/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/select-rv64.mir (revision 8ad4df8327e617c7ef1a727df61e4600ef13ed85)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=riscv64 -run-pass=instruction-select %s -o - \
3# RUN: | FileCheck %s
4
5---
6name:            select_s32
7legalized:       true
8regBankSelected: true
9tracksRegLiveness: true
10body:            |
11  bb.0:
12    liveins: $x10, $x11, $x12
13
14    ; CHECK-LABEL: name: select_s32
15    ; CHECK: liveins: $x10, $x11, $x12
16    ; CHECK-NEXT: {{  $}}
17    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
18    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
19    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
20    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY]], $x0, 1, [[COPY1]], [[COPY2]]
21    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
22    ; CHECK-NEXT: PseudoRET implicit $x10
23    %0:gprb(s64) = COPY $x10
24    %1:gprb(s64) = COPY $x11
25    %2:gprb(s64) = COPY $x12
26    %3:gprb(s32) = G_TRUNC %1
27    %4:gprb(s32) = G_TRUNC %2
28    %5:gprb(s32) = G_SELECT %0, %3, %4
29    %6:gprb(s64) = G_ANYEXT %5
30    $x10 = COPY %6(s64)
31    PseudoRET implicit $x10
32
33...
34---
35name:            select_s64
36legalized:       true
37regBankSelected: true
38tracksRegLiveness: true
39body:            |
40  bb.0:
41    liveins: $x10, $x11, $x12
42
43    ; CHECK-LABEL: name: select_s64
44    ; CHECK: liveins: $x10, $x11, $x12
45    ; CHECK-NEXT: {{  $}}
46    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
47    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
48    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
49    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY]], $x0, 1, [[COPY1]], [[COPY2]]
50    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
51    ; CHECK-NEXT: PseudoRET implicit $x10
52    %0:gprb(s64) = COPY $x10
53    %1:gprb(s64) = COPY $x11
54    %2:gprb(s64) = COPY $x12
55    %3:gprb(s64) = G_SELECT %0, %1, %2
56    $x10 = COPY %3(s64)
57    PseudoRET implicit $x10
58
59...
60---
61name:            select_p0
62legalized:       true
63regBankSelected: true
64tracksRegLiveness: true
65body:            |
66  bb.0:
67    liveins: $x10, $x11, $x12
68
69    ; CHECK-LABEL: name: select_p0
70    ; CHECK: liveins: $x10, $x11, $x12
71    ; CHECK-NEXT: {{  $}}
72    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
73    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
74    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
75    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY]], $x0, 1, [[COPY1]], [[COPY2]]
76    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
77    ; CHECK-NEXT: PseudoRET implicit $x10
78    %0:gprb(s64) = COPY $x10
79    %1:gprb(p0) = COPY $x11
80    %2:gprb(p0) = COPY $x12
81    %3:gprb(p0) = G_SELECT %0, %1, %2
82    $x10 = COPY %3(p0)
83    PseudoRET implicit $x10
84
85...
86---
87name:            select_icmp_ult
88legalized:       true
89regBankSelected: true
90tracksRegLiveness: true
91body:            |
92  bb.0:
93    liveins: $x10, $x11, $x12, $x13, $x14
94
95    ; CHECK-LABEL: name: select_icmp_ult
96    ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14
97    ; CHECK-NEXT: {{  $}}
98    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
99    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
100    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
101    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x13
102    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY2]], [[COPY3]], 4, [[COPY]], [[COPY1]]
103    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
104    ; CHECK-NEXT: PseudoRET implicit $x10
105    %0:gprb(s64) = COPY $x10
106    %1:gprb(s64) = COPY $x11
107    %2:gprb(s64) = COPY $x12
108    %3:gprb(s64) = COPY $x13
109    %4:gprb(s64) = COPY $x14
110    %5:gprb(s64) = G_ICMP intpred(ult), %2, %3
111    %6:gprb(s64) = G_SELECT %5, %0, %1
112    $x10 = COPY %6(s64)
113    PseudoRET implicit $x10
114
115...
116---
117name:            select_icmp_ugt
118legalized:       true
119regBankSelected: true
120tracksRegLiveness: true
121body:            |
122  bb.0:
123    liveins: $x10, $x11, $x12, $x13, $x14
124
125    ; CHECK-LABEL: name: select_icmp_ugt
126    ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14
127    ; CHECK-NEXT: {{  $}}
128    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
129    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
130    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
131    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x13
132    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY3]], [[COPY2]], 4, [[COPY]], [[COPY1]]
133    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
134    ; CHECK-NEXT: PseudoRET implicit $x10
135    %0:gprb(s64) = COPY $x10
136    %1:gprb(s64) = COPY $x11
137    %2:gprb(s64) = COPY $x12
138    %3:gprb(s64) = COPY $x13
139    %4:gprb(s64) = COPY $x14
140    %5:gprb(s64) = G_ICMP intpred(ugt), %2, %3
141    %6:gprb(s64) = G_SELECT %5, %0, %1
142    $x10 = COPY %6(s64)
143    PseudoRET implicit $x10
144
145...
146---
147name:            select_icmp_sgtneg1
148legalized:       true
149regBankSelected: true
150tracksRegLiveness: true
151body:            |
152  bb.0:
153    liveins: $x10, $x11, $x12, $x13, $x14
154
155    ; CHECK-LABEL: name: select_icmp_sgtneg1
156    ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14
157    ; CHECK-NEXT: {{  $}}
158    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
159    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
160    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
161    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY2]], $x0, 3, [[COPY]], [[COPY1]]
162    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
163    ; CHECK-NEXT: PseudoRET implicit $x10
164    %0:gprb(s64) = COPY $x10
165    %1:gprb(s64) = COPY $x11
166    %2:gprb(s64) = COPY $x12
167    %3:gprb(s64) = COPY $x13
168    %4:gprb(s64) = COPY $x14
169    %5:gprb(s64) = G_CONSTANT i64 -1
170    %6:gprb(s64) = G_ICMP intpred(sgt), %2, %5
171    %7:gprb(s64) = G_SELECT %6, %0, %1
172    $x10 = COPY %7(s64)
173    PseudoRET implicit $x10
174
175...
176---
177name:            select_icmp_slt1
178legalized:       true
179regBankSelected: true
180tracksRegLiveness: true
181body:            |
182  bb.0:
183    liveins: $x10, $x11, $x12, $x13, $x14
184
185    ; CHECK-LABEL: name: select_icmp_slt1
186    ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14
187    ; CHECK-NEXT: {{  $}}
188    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
189    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
190    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
191    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR $x0, [[COPY2]], 3, [[COPY]], [[COPY1]]
192    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
193    ; CHECK-NEXT: PseudoRET implicit $x10
194    %0:gprb(s64) = COPY $x10
195    %1:gprb(s64) = COPY $x11
196    %2:gprb(s64) = COPY $x12
197    %3:gprb(s64) = COPY $x13
198    %4:gprb(s64) = COPY $x14
199    %5:gprb(s64) = G_CONSTANT i64 1
200    %6:gprb(s64) = G_ICMP intpred(slt), %2, %5
201    %7:gprb(s64) = G_SELECT %6, %0, %1
202    $x10 = COPY %7(s64)
203    PseudoRET implicit $x10
204
205...
206