xref: /llvm-project/llvm/test/CodeGen/RISCV/GlobalISel/instruction-select/select-rv32.mir (revision 133e50db31681b3becc75438d09b792a7fc28177)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=riscv32 -run-pass=instruction-select --simplify-mir \
3# RUN: -verify-machineinstrs %s -o - | FileCheck %s
4---
5name:            select_s32
6legalized:       true
7regBankSelected: true
8tracksRegLiveness: true
9body:            |
10  bb.0:
11    liveins: $x10, $x11, $x12
12
13    ; CHECK-LABEL: name: select_s32
14    ; CHECK: liveins: $x10, $x11, $x12
15    ; CHECK-NEXT: {{  $}}
16    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
17    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
18    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
19    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY]], $x0, 1, [[COPY1]], [[COPY2]]
20    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
21    ; CHECK-NEXT: PseudoRET implicit $x10
22    %0:gprb(s32) = COPY $x10
23    %1:gprb(s32) = COPY $x11
24    %2:gprb(s32) = COPY $x12
25    %3:gprb(s32) = G_SELECT %0, %1, %2
26    $x10 = COPY %3(s32)
27    PseudoRET implicit $x10
28
29...
30---
31name:            select_p0
32legalized:       true
33regBankSelected: true
34tracksRegLiveness: true
35body:            |
36  bb.0:
37    liveins: $x10, $x11, $x12
38
39    ; CHECK-LABEL: name: select_p0
40    ; CHECK: liveins: $x10, $x11, $x12
41    ; CHECK-NEXT: {{  $}}
42    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
43    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
44    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
45    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY]], $x0, 1, [[COPY1]], [[COPY2]]
46    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
47    ; CHECK-NEXT: PseudoRET implicit $x10
48    %0:gprb(s32) = COPY $x10
49    %1:gprb(p0) = COPY $x11
50    %2:gprb(p0) = COPY $x12
51    %3:gprb(p0) = G_SELECT %0, %1, %2
52    $x10 = COPY %3(p0)
53    PseudoRET implicit $x10
54
55...
56---
57name:            select_icmp_ult
58legalized:       true
59regBankSelected: true
60tracksRegLiveness: true
61body:            |
62  bb.0:
63    liveins: $x10, $x11, $x12, $x13, $x14
64
65    ; CHECK-LABEL: name: select_icmp_ult
66    ; CHECK: liveins: $x10, $x11, $x12, $x13, $x14
67    ; CHECK-NEXT: {{  $}}
68    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
69    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
70    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr = COPY $x12
71    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr = COPY $x13
72    ; CHECK-NEXT: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY2]], [[COPY3]], 4, [[COPY]], [[COPY1]]
73    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
74    ; CHECK-NEXT: PseudoRET implicit $x10
75    %0:gprb(s32) = COPY $x10
76    %1:gprb(s32) = COPY $x11
77    %2:gprb(s32) = COPY $x12
78    %3:gprb(s32) = COPY $x13
79    %4:gprb(s32) = COPY $x14
80    %5:gprb(s32) = G_ICMP intpred(ult), %2, %3
81    %6:gprb(s32) = G_SELECT %5, %0, %1
82    $x10 = COPY %6(s32)
83    PseudoRET implicit $x10
84
85...
86---
87name:            select_icmp_ugt
88legalized:       true
89regBankSelected: true
90tracksRegLiveness: true
91body:            |
92  bb.0:
93    liveins: $x10, $x11, $x12, $x13, $x14
94
95    ; CHECK-LABEL: name: select_icmp_ugt
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 [[COPY3]], [[COPY2]], 4, [[COPY]], [[COPY1]]
103    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
104    ; CHECK-NEXT: PseudoRET implicit $x10
105    %0:gprb(s32) = COPY $x10
106    %1:gprb(s32) = COPY $x11
107    %2:gprb(s32) = COPY $x12
108    %3:gprb(s32) = COPY $x13
109    %4:gprb(s32) = COPY $x14
110    %5:gprb(s32) = G_ICMP intpred(ugt), %2, %3
111    %6:gprb(s32) = G_SELECT %5, %0, %1
112    $x10 = COPY %6(s32)
113    PseudoRET implicit $x10
114
115...
116---
117name:            select_icmp_sgtneg1
118legalized:       true
119regBankSelected: true
120tracksRegLiveness: true
121body:            |
122  bb.0:
123    liveins: $x10, $x11, $x12, $x13, $x14
124
125    ; CHECK-LABEL: name: select_icmp_sgtneg1
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: [[Select_GPR_Using_CC_GPR:%[0-9]+]]:gpr = Select_GPR_Using_CC_GPR [[COPY2]], $x0, 3, [[COPY]], [[COPY1]]
132    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
133    ; CHECK-NEXT: PseudoRET implicit $x10
134    %0:gprb(s32) = COPY $x10
135    %1:gprb(s32) = COPY $x11
136    %2:gprb(s32) = COPY $x12
137    %3:gprb(s32) = COPY $x13
138    %4:gprb(s32) = COPY $x14
139    %5:gprb(s32) = G_CONSTANT i32 -1
140    %6:gprb(s32) = G_ICMP intpred(sgt), %2, %5
141    %7:gprb(s32) = G_SELECT %6, %0, %1
142    $x10 = COPY %7(s32)
143    PseudoRET implicit $x10
144
145...
146---
147name:            select_icmp_slt1
148legalized:       true
149regBankSelected: true
150tracksRegLiveness: true
151body:            |
152  bb.0:
153    liveins: $x10, $x11, $x12, $x13, $x14
154
155    ; CHECK-LABEL: name: select_icmp_slt1
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 $x0, [[COPY2]], 3, [[COPY]], [[COPY1]]
162    ; CHECK-NEXT: $x10 = COPY [[Select_GPR_Using_CC_GPR]]
163    ; CHECK-NEXT: PseudoRET implicit $x10
164    %0:gprb(s32) = COPY $x10
165    %1:gprb(s32) = COPY $x11
166    %2:gprb(s32) = COPY $x12
167    %3:gprb(s32) = COPY $x13
168    %4:gprb(s32) = COPY $x14
169    %5:gprb(s32) = G_CONSTANT i32 1
170    %6:gprb(s32) = G_ICMP intpred(slt), %2, %5
171    %7:gprb(s32) = G_SELECT %6, %0, %1
172    $x10 = COPY %7(s32)
173    PseudoRET implicit $x10
174
175...
176