[RISCV] Match vcompress during shuffle lowering (#117748)
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / combine-const-fold-barrier-rhs.mir
blobc967e4f2ea5e8cdc193bae10f53abb710f4d98c1
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
2 # RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s
3 ---
4 name:            cfb_lhs
5 tracksRegLiveness: true
6 body:             |
7   bb.1:
8     liveins: $w0
10     ; CHECK-LABEL: name: cfb_lhs
11     ; CHECK: liveins: $w0
12     ; CHECK-NEXT: {{  $}}
13     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
14     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
15     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
16     ; CHECK-NEXT: %add:_(s32) = G_ADD [[COPY]], %cfb
17     ; CHECK-NEXT: $w0 = COPY %add(s32)
18     ; CHECK-NEXT: RET_ReallyLR
19     %0:_(s32) = COPY $w0
20     %cst:_(s32) = G_CONSTANT i32 1
21     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
22     %cst2:_(s32) = G_CONSTANT i32 2
23     %add:_(s32) = G_ADD %cfb, %0
24     $w0 = COPY %add
25     RET_ReallyLR
27 ...
28 ---
29 name:            cfb_lhs_cfb_already_rhs
30 tracksRegLiveness: true
31 body:             |
32   bb.1:
33     liveins: $w0
35     ; CHECK-LABEL: name: cfb_lhs_cfb_already_rhs
36     ; CHECK: liveins: $w0
37     ; CHECK-NEXT: {{  $}}
38     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
39     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
40     ; CHECK-NEXT: %cst2:_(s32) = G_CONSTANT i32 2
41     ; CHECK-NEXT: %cfb2:_(s32) = G_CONSTANT_FOLD_BARRIER %cst2
42     ; CHECK-NEXT: %add:_(s32) = G_ADD %cfb, %cfb2
43     ; CHECK-NEXT: $w0 = COPY %add(s32)
44     ; CHECK-NEXT: RET_ReallyLR
45     %0:_(s32) = COPY $w0
46     %cst:_(s32) = G_CONSTANT i32 1
47     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
48     %cst2:_(s32) = G_CONSTANT i32 2
49     %cfb2:_(s32) = G_CONSTANT_FOLD_BARRIER %cst2
50     %add:_(s32) = G_ADD %cfb, %cfb2
51     $w0 = COPY %add
52     RET_ReallyLR
54 ...
55 ---
56 name:            cfb_lhs_cst_on_rhs
57 alignment:       4
58 tracksRegLiveness: true
59 body:             |
60   bb.1:
61     liveins: $w0
63     ; CHECK-LABEL: name: cfb_lhs_cst_on_rhs
64     ; CHECK: liveins: $w0
65     ; CHECK-NEXT: {{  $}}
66     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
67     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
68     ; CHECK-NEXT: %cst2:_(s32) = G_CONSTANT i32 2
69     ; CHECK-NEXT: %add:_(s32) = G_ADD %cfb, %cst2
70     ; CHECK-NEXT: $w0 = COPY %add(s32)
71     ; CHECK-NEXT: RET_ReallyLR
72     %0:_(s32) = COPY $w0
73     %cst:_(s32) = G_CONSTANT i32 1
74     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
75     %cst2:_(s32) = G_CONSTANT i32 2
76     %add:_(s32) = G_ADD %cfb, %cst2
77     $w0 = COPY %add
78     RET_ReallyLR
80 ...
81 ---
82 name:            cfb_lhs_smulo
83 tracksRegLiveness: true
84 body:             |
85   bb.1:
86     liveins: $w0
88     ; CHECK-LABEL: name: cfb_lhs_smulo
89     ; CHECK: liveins: $w0
90     ; CHECK-NEXT: {{  $}}
91     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
92     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
93     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
94     ; CHECK-NEXT: %mul:_(s32), %overflow:_(s1) = G_SMULO [[COPY]], %cfb
95     ; CHECK-NEXT: %ret:_(s32) = G_ANYEXT %overflow(s1)
96     ; CHECK-NEXT: $w0 = COPY %ret(s32)
97     ; CHECK-NEXT: RET_ReallyLR
98     %0:_(s32) = COPY $w0
99     %cst:_(s32) = G_CONSTANT i32 1
100     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
101     %mul:_(s32), %overflow:_(s1) = G_SMULO %cfb, %0
102     %ret:_(s32) = G_ANYEXT %overflow
103     $w0 = COPY %ret
104     RET_ReallyLR
108 name:            cfb_lhs_cfb_already_rhs_smulo
109 tracksRegLiveness: true
110 body:             |
111   bb.1:
112     liveins: $w0
114     ; CHECK-LABEL: name: cfb_lhs_cfb_already_rhs_smulo
115     ; CHECK: liveins: $w0
116     ; CHECK-NEXT: {{  $}}
117     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
118     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
119     ; CHECK-NEXT: %cst2:_(s32) = G_CONSTANT i32 6
120     ; CHECK-NEXT: %cfb2:_(s32) = G_CONSTANT_FOLD_BARRIER %cst2
121     ; CHECK-NEXT: %mul:_(s32), %overflow:_(s1) = G_SMULO %cfb, %cfb2
122     ; CHECK-NEXT: %ret:_(s32) = G_ANYEXT %overflow(s1)
123     ; CHECK-NEXT: $w0 = COPY %ret(s32)
124     ; CHECK-NEXT: RET_ReallyLR
125     %0:_(s32) = COPY $w0
126     %cst:_(s32) = G_CONSTANT i32 1
127     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
128     %cst2:_(s32) = G_CONSTANT i32 6
129     %cfb2:_(s32) = G_CONSTANT_FOLD_BARRIER %cst2
130     %mul:_(s32), %overflow:_(s1) = G_SMULO %cfb, %cfb2
131     %ret:_(s32) = G_ANYEXT %overflow
132     $w0 = COPY %ret
133     RET_ReallyLR
137 name:            cfb_lhs_cst_on_rhs_smulo
138 alignment:       4
139 tracksRegLiveness: true
140 body:             |
141   bb.1:
142     liveins: $w0
144     ; CHECK-LABEL: name: cfb_lhs_cst_on_rhs_smulo
145     ; CHECK: liveins: $w0
146     ; CHECK-NEXT: {{  $}}
147     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
148     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
149     ; CHECK-NEXT: %cst2:_(s32) = G_CONSTANT i32 6
150     ; CHECK-NEXT: %mul:_(s32), %overflow:_(s1) = G_SMULO %cfb, %cst2
151     ; CHECK-NEXT: %ret:_(s32) = G_ANYEXT %overflow(s1)
152     ; CHECK-NEXT: $w0 = COPY %ret(s32)
153     ; CHECK-NEXT: RET_ReallyLR
154     %0:_(s32) = COPY $w0
155     %cst:_(s32) = G_CONSTANT i32 1
156     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
157     %cst2:_(s32) = G_CONSTANT i32 6
158     %mul:_(s32), %overflow:_(s1) = G_SMULO %cfb, %cst2
159     %ret:_(s32) = G_ANYEXT %overflow
160     $w0 = COPY %ret
161     RET_ReallyLR
165 name:            cfb_lhs_umulfixsat
166 tracksRegLiveness: true
167 body:             |
168   bb.1:
169     liveins: $w0
171     ; CHECK-LABEL: name: cfb_lhs_umulfixsat
172     ; CHECK: liveins: $w0
173     ; CHECK-NEXT: {{  $}}
174     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
175     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
176     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
177     ; CHECK-NEXT: %mul:_(s32) = G_UMULFIXSAT [[COPY]], %cfb, 7
178     ; CHECK-NEXT: $w0 = COPY %mul(s32)
179     ; CHECK-NEXT: RET_ReallyLR
180     %0:_(s32) = COPY $w0
181     %cst:_(s32) = G_CONSTANT i32 1
182     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
183     %mul:_(s32) = G_UMULFIXSAT %cfb, %0, 7
184     $w0 = COPY %mul
185     RET_ReallyLR
189 name:            cfb_lhs_cfb_already_rhs_umulfixsat
190 tracksRegLiveness: true
191 body:             |
192   bb.1:
193     liveins: $w0
195     ; CHECK-LABEL: name: cfb_lhs_cfb_already_rhs_umulfixsat
196     ; CHECK: liveins: $w0
197     ; CHECK-NEXT: {{  $}}
198     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
199     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
200     ; CHECK-NEXT: %cst2:_(s32) = G_CONSTANT i32 2
201     ; CHECK-NEXT: %cfb2:_(s32) = G_CONSTANT_FOLD_BARRIER %cst2
202     ; CHECK-NEXT: %add:_(s32) = G_UMULFIXSAT %cfb, %cfb2, 7
203     ; CHECK-NEXT: $w0 = COPY %add(s32)
204     ; CHECK-NEXT: RET_ReallyLR
205     %0:_(s32) = COPY $w0
206     %cst:_(s32) = G_CONSTANT i32 1
207     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
208     %cst2:_(s32) = G_CONSTANT i32 2
209     %cfb2:_(s32) = G_CONSTANT_FOLD_BARRIER %cst2
210     %add:_(s32) = G_UMULFIXSAT %cfb, %cfb2, 7
211     $w0 = COPY %add
212     RET_ReallyLR
216 name:            cfb_lhs_cst_on_rhs_umulfixsat
217 alignment:       4
218 tracksRegLiveness: true
219 body:             |
220   bb.1:
221     liveins: $w0
223     ; CHECK-LABEL: name: cfb_lhs_cst_on_rhs_umulfixsat
224     ; CHECK: liveins: $w0
225     ; CHECK-NEXT: {{  $}}
226     ; CHECK-NEXT: %cst:_(s32) = G_CONSTANT i32 1
227     ; CHECK-NEXT: %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
228     ; CHECK-NEXT: %cst2:_(s32) = G_CONSTANT i32 2
229     ; CHECK-NEXT: %add:_(s32) = G_UMULFIXSAT %cfb, %cst2, 7
230     ; CHECK-NEXT: $w0 = COPY %add(s32)
231     ; CHECK-NEXT: RET_ReallyLR
232     %0:_(s32) = COPY $w0
233     %cst:_(s32) = G_CONSTANT i32 1
234     %cfb:_(s32) = G_CONSTANT_FOLD_BARRIER %cst
235     %cst2:_(s32) = G_CONSTANT i32 2
236     %add:_(s32) = G_UMULFIXSAT %cfb, %cst2, 7
237     $w0 = COPY %add
238     RET_ReallyLR