xref: /llvm-project/llvm/test/CodeGen/RISCV/prefer-w-inst.mir (revision dbaa1893c9afe6a245860efb8d68875ba4fd6794)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
2# RUN: llc %s -mtriple=riscv64 -run-pass=riscv-opt-w-instrs -verify-machineinstrs \
3# RUN:   -mattr=+m -o - | FileCheck %s -check-prefixes=NO-PREFER-W-INST
4# RUN: llc %s -mtriple=riscv64 -run-pass=riscv-opt-w-instrs -verify-machineinstrs \
5# RUN:   -mattr=+m,+prefer-w-inst -o - | FileCheck %s -check-prefixes=PREFER-W-INST
6
7---
8name: addi
9body:             |
10  bb.0.entry:
11    liveins: $x10, $x11
12    ; NO-PREFER-W-INST-LABEL: name: addi
13    ; NO-PREFER-W-INST: liveins: $x10, $x11
14    ; NO-PREFER-W-INST-NEXT: {{  $}}
15    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
16    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
17    ; NO-PREFER-W-INST-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[COPY]], 1
18    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[ADDI]], 1
19    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
20    ; NO-PREFER-W-INST-NEXT: PseudoRET
21    ;
22    ; PREFER-W-INST-LABEL: name: addi
23    ; PREFER-W-INST: liveins: $x10, $x11
24    ; PREFER-W-INST-NEXT: {{  $}}
25    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
26    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
27    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 1
28    ; PREFER-W-INST-NEXT: [[ADDIW1:%[0-9]+]]:gpr = ADDIW [[ADDIW]], 1
29    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW1]]
30    ; PREFER-W-INST-NEXT: PseudoRET
31    %1:gpr = COPY $x10
32    %2:gpr = COPY $x11
33    %3:gpr = ADDI %1, 1
34    %4:gpr = ADDIW %3, 1
35    $x10 = COPY %4
36    PseudoRET
37...
38
39---
40name: add
41body:             |
42  bb.0.entry:
43    liveins: $x10, $x11
44    ; NO-PREFER-W-INST-LABEL: name: add
45    ; NO-PREFER-W-INST: liveins: $x10, $x11
46    ; NO-PREFER-W-INST-NEXT: {{  $}}
47    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
48    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
49    ; NO-PREFER-W-INST-NEXT: [[ADD:%[0-9]+]]:gpr = ADD [[COPY]], [[COPY1]]
50    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[ADD]], 1
51    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
52    ; NO-PREFER-W-INST-NEXT: PseudoRET
53    ;
54    ; PREFER-W-INST-LABEL: name: add
55    ; PREFER-W-INST: liveins: $x10, $x11
56    ; PREFER-W-INST-NEXT: {{  $}}
57    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
58    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
59    ; PREFER-W-INST-NEXT: [[ADDW:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY1]]
60    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[ADDW]], 1
61    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
62    ; PREFER-W-INST-NEXT: PseudoRET
63    %1:gpr = COPY $x10
64    %2:gpr = COPY $x11
65    %3:gpr = ADD %1, %2
66    %4:gpr = ADDIW %3, 1
67    $x10 = COPY %4
68    PseudoRET
69...
70
71---
72name: sub
73body:             |
74  bb.0.entry:
75    liveins: $x10, $x11
76    ; NO-PREFER-W-INST-LABEL: name: sub
77    ; NO-PREFER-W-INST: liveins: $x10, $x11
78    ; NO-PREFER-W-INST-NEXT: {{  $}}
79    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
80    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
81    ; NO-PREFER-W-INST-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY]], [[COPY1]]
82    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SUB]], 1
83    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
84    ; NO-PREFER-W-INST-NEXT: PseudoRET
85    ;
86    ; PREFER-W-INST-LABEL: name: sub
87    ; PREFER-W-INST: liveins: $x10, $x11
88    ; PREFER-W-INST-NEXT: {{  $}}
89    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
90    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
91    ; PREFER-W-INST-NEXT: [[SUBW:%[0-9]+]]:gpr = SUBW [[COPY]], [[COPY1]]
92    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SUBW]], 1
93    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
94    ; PREFER-W-INST-NEXT: PseudoRET
95    %1:gpr = COPY $x10
96    %2:gpr = COPY $x11
97    %3:gpr = SUB %1, %2
98    %4:gpr = ADDIW %3, 1
99    $x10 = COPY %4
100    PseudoRET
101...
102
103---
104name: mul
105body:             |
106  bb.0.entry:
107    liveins: $x10, $x11
108    ; NO-PREFER-W-INST-LABEL: name: mul
109    ; NO-PREFER-W-INST: liveins: $x10, $x11
110    ; NO-PREFER-W-INST-NEXT: {{  $}}
111    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
112    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
113    ; NO-PREFER-W-INST-NEXT: [[MUL:%[0-9]+]]:gpr = MUL [[COPY]], [[COPY1]]
114    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[MUL]], 1
115    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
116    ; NO-PREFER-W-INST-NEXT: PseudoRET
117    ;
118    ; PREFER-W-INST-LABEL: name: mul
119    ; PREFER-W-INST: liveins: $x10, $x11
120    ; PREFER-W-INST-NEXT: {{  $}}
121    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
122    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
123    ; PREFER-W-INST-NEXT: [[MULW:%[0-9]+]]:gpr = MULW [[COPY]], [[COPY1]]
124    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[MULW]], 1
125    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
126    ; PREFER-W-INST-NEXT: PseudoRET
127    %1:gpr = COPY $x10
128    %2:gpr = COPY $x11
129    %3:gpr = MUL %1, %2
130    %4:gpr = ADDIW %3, 1
131    $x10 = COPY %4
132    PseudoRET
133...
134
135
136---
137name: slli_31
138body:             |
139  bb.0.entry:
140    liveins: $x10, $x11
141    ; NO-PREFER-W-INST-LABEL: name: slli_31
142    ; NO-PREFER-W-INST: liveins: $x10, $x11
143    ; NO-PREFER-W-INST-NEXT: {{  $}}
144    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
145    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
146    ; NO-PREFER-W-INST-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 31
147    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLI]], 1
148    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
149    ; NO-PREFER-W-INST-NEXT: PseudoRET
150    ;
151    ; PREFER-W-INST-LABEL: name: slli_31
152    ; PREFER-W-INST: liveins: $x10, $x11
153    ; PREFER-W-INST-NEXT: {{  $}}
154    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
155    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
156    ; PREFER-W-INST-NEXT: [[SLLIW:%[0-9]+]]:gpr = SLLIW [[COPY]], 31
157    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLIW]], 1
158    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
159    ; PREFER-W-INST-NEXT: PseudoRET
160    %1:gpr = COPY $x10
161    %2:gpr = COPY $x11
162    %3:gpr = SLLI %1, 31
163    %4:gpr = ADDIW %3, 1
164    $x10 = COPY %4
165    PseudoRET
166...
167
168---
169name: slli_32
170body:             |
171  bb.0.entry:
172    liveins: $x10, $x11
173    ; NO-PREFER-W-INST-LABEL: name: slli_32
174    ; NO-PREFER-W-INST: liveins: $x10, $x11
175    ; NO-PREFER-W-INST-NEXT: {{  $}}
176    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
177    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
178    ; NO-PREFER-W-INST-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 32
179    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLI]], 1
180    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
181    ; NO-PREFER-W-INST-NEXT: PseudoRET
182    ;
183    ; PREFER-W-INST-LABEL: name: slli_32
184    ; PREFER-W-INST: liveins: $x10, $x11
185    ; PREFER-W-INST-NEXT: {{  $}}
186    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
187    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
188    ; PREFER-W-INST-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 32
189    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLI]], 1
190    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
191    ; PREFER-W-INST-NEXT: PseudoRET
192    %1:gpr = COPY $x10
193    %2:gpr = COPY $x11
194    %3:gpr = SLLI %1, 32
195    %4:gpr = ADDIW %3, 1
196    $x10 = COPY %4
197    PseudoRET
198...
199
200---
201name: ld
202body:             |
203  bb.0.entry:
204    liveins: $x10, $x11
205    ; NO-PREFER-W-INST-LABEL: name: ld
206    ; NO-PREFER-W-INST: liveins: $x10, $x11
207    ; NO-PREFER-W-INST-NEXT: {{  $}}
208    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
209    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
210    ; NO-PREFER-W-INST-NEXT: [[LD:%[0-9]+]]:gpr = LD [[COPY]], 0
211    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LD]], 1
212    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
213    ; NO-PREFER-W-INST-NEXT: PseudoRET
214    ;
215    ; PREFER-W-INST-LABEL: name: ld
216    ; PREFER-W-INST: liveins: $x10, $x11
217    ; PREFER-W-INST-NEXT: {{  $}}
218    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
219    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
220    ; PREFER-W-INST-NEXT: [[LW:%[0-9]+]]:gpr = LW [[COPY]], 0
221    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LW]], 1
222    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
223    ; PREFER-W-INST-NEXT: PseudoRET
224    %1:gpr = COPY $x10
225    %2:gpr = COPY $x11
226    %3:gpr = LD %1, 0
227    %4:gpr = ADDIW %3, 1
228    $x10 = COPY %4
229    PseudoRET
230...
231
232---
233name: lwu
234body:             |
235  bb.0.entry:
236    liveins: $x10, $x11
237    ; NO-PREFER-W-INST-LABEL: name: lwu
238    ; NO-PREFER-W-INST: liveins: $x10, $x11
239    ; NO-PREFER-W-INST-NEXT: {{  $}}
240    ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
241    ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
242    ; NO-PREFER-W-INST-NEXT: [[LWU:%[0-9]+]]:gpr = LWU [[COPY]], 0
243    ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LWU]], 1
244    ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
245    ; NO-PREFER-W-INST-NEXT: PseudoRET
246    ;
247    ; PREFER-W-INST-LABEL: name: lwu
248    ; PREFER-W-INST: liveins: $x10, $x11
249    ; PREFER-W-INST-NEXT: {{  $}}
250    ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10
251    ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11
252    ; PREFER-W-INST-NEXT: [[LW:%[0-9]+]]:gpr = LW [[COPY]], 0
253    ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LW]], 1
254    ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]]
255    ; PREFER-W-INST-NEXT: PseudoRET
256    %1:gpr = COPY $x10
257    %2:gpr = COPY $x11
258    %3:gpr = LWU %1, 0
259    %4:gpr = ADDIW %3, 1
260    $x10 = COPY %4
261    PseudoRET
262...
263