[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / postlegalizer-combiner-constant-fold.mir
blobd600bff8e08a91a9523bab8fcc2b19f87440c50e
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s
4 ---
5 name:            add
6 alignment:       4
7 legalized:       true
8 liveins:
9   - { reg: '$w0' }
10 body:             |
11   bb.1.entry:
12     liveins: $x0
14     ; CHECK-LABEL: name: add
15     ; CHECK: liveins: $x0
16     ; CHECK-NEXT: {{  $}}
17     ; CHECK-NEXT: %res:_(s64) = G_CONSTANT i64 42
18     ; CHECK-NEXT: $x0 = COPY %res(s64)
19     ; CHECK-NEXT: RET_ReallyLR implicit $x0
20     %a:_(s64) = G_CONSTANT i64 40
21     %b:_(s64) = G_CONSTANT i64 2
22     %res:_(s64) = G_ADD %a, %b
23     $x0 = COPY %res(s64)
24     RET_ReallyLR implicit $x0
26 ...
27 ---
28 name:            sub
29 alignment:       4
30 legalized:       true
31 liveins:
32   - { reg: '$w0' }
33 body:             |
34   bb.1.entry:
35     liveins: $x0
37     ; CHECK-LABEL: name: sub
38     ; CHECK: liveins: $x0
39     ; CHECK-NEXT: {{  $}}
40     ; CHECK-NEXT: %res:_(s64) = G_CONSTANT i64 38
41     ; CHECK-NEXT: $x0 = COPY %res(s64)
42     ; CHECK-NEXT: RET_ReallyLR implicit $x0
43     %a:_(s64) = G_CONSTANT i64 40
44     %b:_(s64) = G_CONSTANT i64 2
45     %res:_(s64) = G_SUB %a, %b
46     $x0 = COPY %res(s64)
47     RET_ReallyLR implicit $x0
49 ...
50 ---
51 name:            mul
52 alignment:       4
53 legalized:       true
54 liveins:
55   - { reg: '$w0' }
56 body:             |
57   bb.1.entry:
58     liveins: $x0
60     ; CHECK-LABEL: name: mul
61     ; CHECK: liveins: $x0
62     ; CHECK-NEXT: {{  $}}
63     ; CHECK-NEXT: %res:_(s64) = G_CONSTANT i64 80
64     ; CHECK-NEXT: $x0 = COPY %res(s64)
65     ; CHECK-NEXT: RET_ReallyLR implicit $x0
66     %a:_(s64) = G_CONSTANT i64 40
67     %b:_(s64) = G_CONSTANT i64 2
68     %res:_(s64) = G_MUL %a, %b
69     $x0 = COPY %res(s64)
70     RET_ReallyLR implicit $x0
72 ...
73 ---
74 name:            and
75 alignment:       4
76 legalized:       true
77 liveins:
78   - { reg: '$w0' }
79 body:             |
80   bb.1.entry:
81     liveins: $x0
83     ; CHECK-LABEL: name: and
84     ; CHECK: liveins: $x0
85     ; CHECK-NEXT: {{  $}}
86     ; CHECK-NEXT: %res:_(s64) = G_CONSTANT i64 0
87     ; CHECK-NEXT: $x0 = COPY %res(s64)
88     ; CHECK-NEXT: RET_ReallyLR implicit $x0
89     %a:_(s64) = G_CONSTANT i64 40
90     %b:_(s64) = G_CONSTANT i64 2
91     %res:_(s64) = G_AND %a, %b
92     $x0 = COPY %res(s64)
93     RET_ReallyLR implicit $x0
95 ...
96 ---
97 name:            or
98 alignment:       4
99 legalized:       true
100 liveins:
101   - { reg: '$w0' }
102 body:             |
103   bb.1.entry:
104     liveins: $x0
106     ; CHECK-LABEL: name: or
107     ; CHECK: liveins: $x0
108     ; CHECK-NEXT: {{  $}}
109     ; CHECK-NEXT: %res:_(s64) = G_CONSTANT i64 62
110     ; CHECK-NEXT: $x0 = COPY %res(s64)
111     ; CHECK-NEXT: RET_ReallyLR implicit $x0
112     %a:_(s64) = G_CONSTANT i64 42
113     %b:_(s64) = G_CONSTANT i64 22
114     %res:_(s64) = G_OR %a, %b
115     $x0 = COPY %res(s64)
116     RET_ReallyLR implicit $x0
120 name:            xor
121 alignment:       4
122 legalized:       true
123 liveins:
124   - { reg: '$w0' }
125 body:             |
126   bb.1.entry:
127     liveins: $x0
129     ; CHECK-LABEL: name: xor
130     ; CHECK: liveins: $x0
131     ; CHECK-NEXT: {{  $}}
132     ; CHECK-NEXT: %res:_(s64) = G_CONSTANT i64 12
133     ; CHECK-NEXT: $x0 = COPY %res(s64)
134     ; CHECK-NEXT: RET_ReallyLR implicit $x0
135     %a:_(s64) = G_CONSTANT i64 8
136     %b:_(s64) = G_CONSTANT i64 4
137     %res:_(s64) = G_XOR %a, %b
138     $x0 = COPY %res(s64)
139     RET_ReallyLR implicit $x0
143 name:            fadd
144 legalized:       true
145 liveins:
146   - { reg: '$d0' }
147 body:             |
148   bb.1.entry:
149     liveins: $d0
151     ; CHECK-LABEL: name: fadd
152     ; CHECK: liveins: $d0
153     ; CHECK-NEXT: {{  $}}
154     ; CHECK-NEXT: %res:_(s64) = G_FCONSTANT double 4.200000e+01
155     ; CHECK-NEXT: $d0 = COPY %res(s64)
156     ; CHECK-NEXT: RET_ReallyLR implicit $d0
157     %a:_(s64) = G_FCONSTANT double 40.0
158     %b:_(s64) = G_FCONSTANT double 2.0
159     %res:_(s64) = G_FADD %a, %b
160     $d0 = COPY %res(s64)
161     RET_ReallyLR implicit $d0
165 name:            fsub
166 legalized:       true
167 liveins:
168   - { reg: '$d0' }
169 body:             |
170   bb.1.entry:
171     liveins: $d0
173     ; CHECK-LABEL: name: fsub
174     ; CHECK: liveins: $d0
175     ; CHECK-NEXT: {{  $}}
176     ; CHECK-NEXT: %res:_(s64) = G_FCONSTANT double 3.800000e+01
177     ; CHECK-NEXT: $d0 = COPY %res(s64)
178     ; CHECK-NEXT: RET_ReallyLR implicit $d0
179     %a:_(s64) = G_FCONSTANT double 40.0
180     %b:_(s64) = G_FCONSTANT double 2.0
181     %res:_(s64) = G_FSUB %a, %b
182     $d0 = COPY %res(s64)
183     RET_ReallyLR implicit $d0
187 name:            fmul
188 legalized:       true
189 liveins:
190   - { reg: '$d0' }
191 body:             |
192   bb.1.entry:
193     liveins: $d0
195     ; CHECK-LABEL: name: fmul
196     ; CHECK: liveins: $d0
197     ; CHECK-NEXT: {{  $}}
198     ; CHECK-NEXT: %res:_(s64) = G_FCONSTANT double 8.000000e+01
199     ; CHECK-NEXT: $d0 = COPY %res(s64)
200     ; CHECK-NEXT: RET_ReallyLR implicit $d0
201     %a:_(s64) = G_FCONSTANT double 40.0
202     %b:_(s64) = G_FCONSTANT double 2.0
203     %res:_(s64) = G_FMUL %a, %b
204     $d0 = COPY %res(s64)
205     RET_ReallyLR implicit $d0
209 name:            fdiv
210 legalized:       true
211 liveins:
212   - { reg: '$d0' }
213 body:             |
214   bb.1.entry:
215     liveins: $d0
217     ; CHECK-LABEL: name: fdiv
218     ; CHECK: liveins: $d0
219     ; CHECK-NEXT: {{  $}}
220     ; CHECK-NEXT: %res:_(s64) = G_FCONSTANT double 2.000000e+01
221     ; CHECK-NEXT: $d0 = COPY %res(s64)
222     ; CHECK-NEXT: RET_ReallyLR implicit $d0
223     %a:_(s64) = G_FCONSTANT double 40.0
224     %b:_(s64) = G_FCONSTANT double 2.0
225     %res:_(s64) = G_FDIV %a, %b
226     $d0 = COPY %res(s64)
227     RET_ReallyLR implicit $d0
231 name:            fadd32
232 legalized:       true
233 liveins:
234   - { reg: '$s0' }
235 body:             |
236   bb.1.entry:
237     liveins: $s0
239     ; CHECK-LABEL: name: fadd32
240     ; CHECK: liveins: $s0
241     ; CHECK-NEXT: {{  $}}
242     ; CHECK-NEXT: %res:_(s32) = G_FCONSTANT float 4.200000e+01
243     ; CHECK-NEXT: $s0 = COPY %res(s32)
244     ; CHECK-NEXT: RET_ReallyLR implicit $s0
245     %a:_(s32) = G_FCONSTANT float 40.0
246     %b:_(s32) = G_FCONSTANT float 2.0
247     %res:_(s32) = G_FADD %a, %b
248     $s0 = COPY %res(s32)
249     RET_ReallyLR implicit $s0