xref: /llvm-project/llvm/test/CodeGen/AArch64/GlobalISel/combine-commute-fp-const-lhs.mir (revision e2c91091e537a54f1469610ab407e7c9561e7ffc)
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---
4name:            fadd
5tracksRegLiveness: true
6body:             |
7  bb.1:
8    liveins: $s0
9
10    ; CHECK-LABEL: name: fadd
11    ; CHECK: liveins: $s0
12    ; CHECK-NEXT: {{  $}}
13    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
14    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 1.000000e+00
15    ; CHECK-NEXT: %add:_(s32) = G_FADD [[COPY]], %cst
16    ; CHECK-NEXT: $s0 = COPY %add(s32)
17    ; CHECK-NEXT: RET_ReallyLR
18    %0:_(s32) = COPY $s0
19    %cst:_(s32) = G_FCONSTANT float 1.000000e+00
20    %add:_(s32) = G_FADD %cst, %0
21    $s0 = COPY %add
22    RET_ReallyLR
23
24...
25---
26name:            fmul
27tracksRegLiveness: true
28body:             |
29  bb.1:
30    liveins: $s0
31
32    ; CHECK-LABEL: name: fmul
33    ; CHECK: liveins: $s0
34    ; CHECK-NEXT: {{  $}}
35    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
36    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00
37    ; CHECK-NEXT: %mul:_(s32) = G_FMUL [[COPY]], %cst
38    ; CHECK-NEXT: $s0 = COPY %mul(s32)
39    ; CHECK-NEXT: RET_ReallyLR
40    %0:_(s32) = COPY $s0
41    %cst:_(s32) = G_FCONSTANT float 2.000000e+00
42    %mul:_(s32) = G_FMUL %cst, %0
43    $s0 = COPY %mul
44    RET_ReallyLR
45...
46---
47name:            fmul_vector
48tracksRegLiveness: true
49body:             |
50  bb.1:
51    liveins: $s0
52
53    ; CHECK-LABEL: name: fmul_vector
54    ; CHECK: liveins: $s0
55    ; CHECK-NEXT: {{  $}}
56    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
57    ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00
58    ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32)
59    ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL [[COPY]], %cst
60    ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>)
61    ; CHECK-NEXT: RET_ReallyLR
62    %0:_(<4 x s32>) = COPY $q0
63    %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00
64    %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar, %cst_scalar, %cst_scalar, %cst_scalar
65    %mul:_(<4 x s32>) = G_FMUL %cst, %0
66    $q0 = COPY %mul
67    RET_ReallyLR
68...
69---
70name:            fmul_splat_with_undef
71tracksRegLiveness: true
72body:             |
73  bb.1:
74    liveins: $q0
75
76    ; CHECK-LABEL: name: fmul_splat_with_undef
77    ; CHECK: liveins: $q0
78    ; CHECK-NEXT: {{  $}}
79    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
80    ; CHECK-NEXT: %undef:_(s32) = G_IMPLICIT_DEF
81    ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00
82    ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %undef(s32), %undef(s32), %cst_scalar(s32), %cst_scalar(s32)
83    ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL [[COPY]], %cst
84    ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>)
85    ; CHECK-NEXT: RET_ReallyLR
86    %0:_(<4 x s32>) = COPY $q0
87    %undef:_(s32) = G_IMPLICIT_DEF
88    %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00
89    %cst:_(<4 x s32>) = G_BUILD_VECTOR %undef, %undef, %cst_scalar, %cst_scalar
90    %mul:_(<4 x s32>) = G_FMUL %cst, %0
91    $q0 = COPY %mul
92    RET_ReallyLR
93...
94---
95name:            fmul_vector_nonsplat
96tracksRegLiveness: true
97body:             |
98  bb.1:
99    liveins: $s0
100
101    ; CHECK-LABEL: name: fmul_vector_nonsplat
102    ; CHECK: liveins: $s0
103    ; CHECK-NEXT: {{  $}}
104    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
105    ; CHECK-NEXT: %scalar:_(s32) = COPY $s0
106    ; CHECK-NEXT: %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00
107    ; CHECK-NEXT: %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar(s32), %cst_scalar(s32), %cst_scalar(s32), %scalar(s32)
108    ; CHECK-NEXT: %mul:_(<4 x s32>) = G_FMUL %cst, [[COPY]]
109    ; CHECK-NEXT: $q0 = COPY %mul(<4 x s32>)
110    ; CHECK-NEXT: RET_ReallyLR
111    %0:_(<4 x s32>) = COPY $q0
112    %scalar:_(s32) = COPY $s0
113    %cst_scalar:_(s32) = G_FCONSTANT float 2.000000e+00
114    %cst:_(<4 x s32>) = G_BUILD_VECTOR %cst_scalar, %cst_scalar, %cst_scalar, %scalar
115    %mul:_(<4 x s32>) = G_FMUL %cst, %0
116    $q0 = COPY %mul
117    RET_ReallyLR
118...
119---
120name:            fminnum
121tracksRegLiveness: true
122body:             |
123  bb.1:
124    liveins: $s0
125
126    ; CHECK-LABEL: name: fminnum
127    ; CHECK: liveins: $s0
128    ; CHECK-NEXT: {{  $}}
129    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
130    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00
131    ; CHECK-NEXT: %min:_(s32) = G_FMINNUM [[COPY]], %cst
132    ; CHECK-NEXT: $s0 = COPY %min(s32)
133    ; CHECK-NEXT: RET_ReallyLR
134    %0:_(s32) = COPY $s0
135    %cst:_(s32) = G_FCONSTANT float 2.000000e+00
136    %min:_(s32) = G_FMINNUM %cst, %0
137    $s0 = COPY %min
138    RET_ReallyLR
139...
140---
141name:            fmaxnum
142tracksRegLiveness: true
143body:             |
144  bb.1:
145    liveins: $s0
146
147    ; CHECK-LABEL: name: fmaxnum
148    ; CHECK: liveins: $s0
149    ; CHECK-NEXT: {{  $}}
150    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
151    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00
152    ; CHECK-NEXT: %max:_(s32) = G_FMAXNUM [[COPY]], %cst
153    ; CHECK-NEXT: $s0 = COPY %max(s32)
154    ; CHECK-NEXT: RET_ReallyLR
155    %0:_(s32) = COPY $s0
156    %cst:_(s32) = G_FCONSTANT float 2.000000e+00
157    %max:_(s32) = G_FMAXNUM %cst, %0
158    $s0 = COPY %max
159    RET_ReallyLR
160...
161---
162name:            fminnum_ieee
163tracksRegLiveness: true
164body:             |
165  bb.1:
166    liveins: $s0
167
168    ; CHECK-LABEL: name: fminnum_ieee
169    ; CHECK: liveins: $s0
170    ; CHECK-NEXT: {{  $}}
171    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
172    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00
173    ; CHECK-NEXT: %min:_(s32) = G_FMINNUM_IEEE [[COPY]], %cst
174    ; CHECK-NEXT: $s0 = COPY %min(s32)
175    ; CHECK-NEXT: RET_ReallyLR
176    %0:_(s32) = COPY $s0
177    %cst:_(s32) = G_FCONSTANT float 2.000000e+00
178    %min:_(s32) = G_FMINNUM_IEEE %cst, %0
179    $s0 = COPY %min
180    RET_ReallyLR
181...
182---
183name:            fmaxnum_ieee
184tracksRegLiveness: true
185body:             |
186  bb.1:
187    liveins: $s0
188
189    ; CHECK-LABEL: name: fmaxnum_ieee
190    ; CHECK: liveins: $s0
191    ; CHECK-NEXT: {{  $}}
192    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
193    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00
194    ; CHECK-NEXT: %max:_(s32) = G_FMAXNUM_IEEE [[COPY]], %cst
195    ; CHECK-NEXT: $s0 = COPY %max(s32)
196    ; CHECK-NEXT: RET_ReallyLR
197    %0:_(s32) = COPY $s0
198    %cst:_(s32) = G_FCONSTANT float 2.000000e+00
199    %max:_(s32) = G_FMAXNUM_IEEE %cst, %0
200    $s0 = COPY %max
201    RET_ReallyLR
202...
203---
204name:            fminimum
205tracksRegLiveness: true
206body:             |
207  bb.1:
208    liveins: $s0
209
210    ; CHECK-LABEL: name: fminimum
211    ; CHECK: liveins: $s0
212    ; CHECK-NEXT: {{  $}}
213    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
214    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00
215    ; CHECK-NEXT: %min:_(s32) = G_FMINIMUM [[COPY]], %cst
216    ; CHECK-NEXT: $s0 = COPY %min(s32)
217    ; CHECK-NEXT: RET_ReallyLR
218    %0:_(s32) = COPY $s0
219    %cst:_(s32) = G_FCONSTANT float 2.000000e+00
220    %min:_(s32) = G_FMINIMUM %cst, %0
221    $s0 = COPY %min
222    RET_ReallyLR
223...
224---
225name:            fmaximum
226tracksRegLiveness: true
227body:             |
228  bb.1:
229    liveins: $s0
230
231    ; CHECK-LABEL: name: fmaximum
232    ; CHECK: liveins: $s0
233    ; CHECK-NEXT: {{  $}}
234    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0
235    ; CHECK-NEXT: %cst:_(s32) = G_FCONSTANT float 2.000000e+00
236    ; CHECK-NEXT: %max:_(s32) = G_FMAXIMUM [[COPY]], %cst
237    ; CHECK-NEXT: $s0 = COPY %max(s32)
238    ; CHECK-NEXT: RET_ReallyLR
239    %0:_(s32) = COPY $s0
240    %cst:_(s32) = G_FCONSTANT float 2.000000e+00
241    %max:_(s32) = G_FMAXIMUM %cst, %0
242    $s0 = COPY %max
243    RET_ReallyLR
244...
245