[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / AArch64 / early-ifcvt-same-value.mir
blob16d5dfc78f564b156a2479f4eed696c849083f7c
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=early-ifcvt -stress-early-ifcvt -verify-machineinstrs %s -o - | FileCheck %s
3 # RUN: llc -mtriple=aarch64-- -passes=early-ifcvt -stress-early-ifcvt %s -o - | FileCheck %s
5 ---
6 name:            fmov0
7 tracksRegLiveness: true
8 registers:
9   - { id: 0, class: fpr32, preferred-register: '' }
10   - { id: 1, class: fpr32, preferred-register: '' }
11   - { id: 2, class: fpr32, preferred-register: '' }
12   - { id: 3, class: fpr32, preferred-register: '' }
13   - { id: 4, class: fpr32, preferred-register: '' }
14   - { id: 5, class: gpr32common, preferred-register: '' }
15   - { id: 6, class: gpr32, preferred-register: '' }
16   - { id: 7, class: fpr32, preferred-register: '' }
17   - { id: 8, class: fpr32, preferred-register: '' }
18 liveins:
19   - { reg: '$s1', virtual-reg: '%4' }
20   - { reg: '$w0', virtual-reg: '%5' }
21 body:             |
22   ; CHECK-LABEL: name: fmov0
23   ; CHECK: bb.0.entry:
24   ; CHECK:   liveins: $s1, $w0
25   ; CHECK:   [[COPY:%[0-9]+]]:gpr32common = COPY $w0
26   ; CHECK:   [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
27   ; CHECK:   [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY]], 1, 0, implicit-def $nzcv
28   ; CHECK:   [[FMOVS0_:%[0-9]+]]:fpr32 = FMOVS0
29   ; CHECK:   [[FMOVS0_1:%[0-9]+]]:fpr32 = FMOVS0
30   ; CHECK:   [[COPY2:%[0-9]+]]:fpr32 = COPY [[FMOVS0_]]
31   ; CHECK:   $s0 = COPY [[COPY2]]
32   ; CHECK:   RET_ReallyLR implicit $s0
33   bb.0.entry:
34     successors: %bb.1, %bb.2
35     liveins: $s1, $w0
37     %5:gpr32common = COPY $w0
38     %4:fpr32 = COPY $s1
39     %6:gpr32 = SUBSWri %5, 1, 0, implicit-def $nzcv
40     Bcc 1, %bb.2, implicit $nzcv
41     B %bb.1
43   bb.1:
44     successors: %bb.3
46     %0:fpr32 = FMOVS0
47     B %bb.3
49   bb.2:
50     successors: %bb.3
52     %1:fpr32 = FMOVS0
54   bb.3:
55     %2:fpr32 = PHI %1, %bb.2, %0, %bb.1
56     $s0 = COPY %2
57     RET_ReallyLR implicit $s0
59 ...
60 ---
61 name:            fmov0_extrapred
62 tracksRegLiveness: true
63 registers:
64   - { id: 0, class: fpr32, preferred-register: '' }
65   - { id: 1, class: fpr32, preferred-register: '' }
66   - { id: 2, class: fpr32, preferred-register: '' }
67   - { id: 3, class: fpr32, preferred-register: '' }
68   - { id: 4, class: fpr32, preferred-register: '' }
69   - { id: 5, class: gpr32common, preferred-register: '' }
70   - { id: 6, class: gpr32, preferred-register: '' }
71   - { id: 7, class: fpr32, preferred-register: '' }
72   - { id: 8, class: fpr32, preferred-register: '' }
73 liveins:
74   - { reg: '$s1', virtual-reg: '%4' }
75   - { reg: '$w0', virtual-reg: '%5' }
76 body:             |
77   ; CHECK-LABEL: name: fmov0_extrapred
78   ; CHECK: bb.0.entry:
79   ; CHECK:   successors: %bb.4(0x80000000)
80   ; CHECK:   liveins: $s1, $w0
81   ; CHECK:   [[COPY:%[0-9]+]]:gpr32common = COPY $w0
82   ; CHECK:   [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
83   ; CHECK:   [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY]], 1, 0, implicit-def $nzcv
84   ; CHECK:   [[FMOVS0_:%[0-9]+]]:fpr32 = FMOVS0
85   ; CHECK:   [[FMOVS0_1:%[0-9]+]]:fpr32 = FMOVS0
86   ; CHECK:   B %bb.4
87   ; CHECK: bb.1:
88   ; CHECK:   successors: %bb.4(0x80000000)
89   ; CHECK:   [[DEF:%[0-9]+]]:fpr32 = IMPLICIT_DEF
90   ; CHECK:   B %bb.4
91   ; CHECK: bb.4:
92   ; CHECK:   [[PHI:%[0-9]+]]:fpr32 = PHI [[FMOVS0_]], %bb.0, [[DEF]], %bb.1
93   ; CHECK:   $s0 = COPY [[PHI]]
94   ; CHECK:   RET_ReallyLR implicit $s0
95   bb.0.entry:
96     successors: %bb.1, %bb.2
97     liveins: $s1, $w0
99     %5:gpr32common = COPY $w0
100     %4:fpr32 = COPY $s1
101     %6:gpr32 = SUBSWri %5, 1, 0, implicit-def $nzcv
102     Bcc 1, %bb.2, implicit $nzcv
103     B %bb.1
105   bb.4:
106     successors: %bb.3
108     ; Make sure we also handle the case when there are extra predecessors on
109     ; the tail block.
110     %3:fpr32 = IMPLICIT_DEF
111     B %bb.3
113   bb.1:
114     successors: %bb.3
116     %0:fpr32 = FMOVS0
117     B %bb.3
119   bb.2:
120     successors: %bb.3
122     %1:fpr32 = FMOVS0
124   bb.3:
125     %2:fpr32 = PHI %1, %bb.2, %0, %bb.1, %3, %bb.4
126     $s0 = COPY %2
127     RET_ReallyLR implicit $s0
131 name:            copy_physreg
132 tracksRegLiveness: true
133 registers:
134   - { id: 0, class: fpr32, preferred-register: '' }
135   - { id: 1, class: fpr32, preferred-register: '' }
136   - { id: 2, class: fpr32, preferred-register: '' }
137   - { id: 3, class: fpr32, preferred-register: '' }
138   - { id: 4, class: fpr32, preferred-register: '' }
139   - { id: 5, class: gpr32common, preferred-register: '' }
140   - { id: 6, class: gpr32, preferred-register: '' }
141   - { id: 7, class: fpr32, preferred-register: '' }
142   - { id: 8, class: fpr32, preferred-register: '' }
143   - { id: 9, class: fpr32, preferred-register: '' }
144   - { id: 10, class: fpr32, preferred-register: '' }
145 liveins:
146   - { reg: '$s1', virtual-reg: '%4' }
147   - { reg: '$w0', virtual-reg: '%5' }
148 body:             |
149   ; CHECK-LABEL: name: copy_physreg
150   ; CHECK: bb.0.entry:
151   ; CHECK:   liveins: $s1, $w0
152   ; CHECK:   [[COPY:%[0-9]+]]:gpr32common = COPY $w0
153   ; CHECK:   [[COPY1:%[0-9]+]]:fpr32 = COPY $s1
154   ; CHECK:   [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY]], 1, 0, implicit-def $nzcv
155   ; CHECK:   [[DEF:%[0-9]+]]:fpr32 = IMPLICIT_DEF implicit-def $s1
156   ; CHECK:   [[COPY2:%[0-9]+]]:fpr32 = COPY $s1
157   ; CHECK:   [[DEF1:%[0-9]+]]:fpr32 = IMPLICIT_DEF implicit-def $s1
158   ; CHECK:   [[COPY3:%[0-9]+]]:fpr32 = COPY $s1
159   ; CHECK:   [[FCSELSrrr:%[0-9]+]]:fpr32 = FCSELSrrr [[COPY2]], [[COPY3]], 1, implicit $nzcv
160   ; CHECK:   $s0 = COPY [[FCSELSrrr]]
161   ; CHECK:   RET_ReallyLR implicit $s0
162   bb.0.entry:
163     successors: %bb.1, %bb.2
164     liveins: $s1, $w0
166     %5:gpr32common = COPY $w0
167     %4:fpr32 = COPY $s1
168     %6:gpr32 = SUBSWri %5, 1, 0, implicit-def $nzcv
169     Bcc 1, %bb.2, implicit $nzcv
170     B %bb.1
172   bb.1:
173     successors: %bb.3
175     %9:fpr32 = IMPLICIT_DEF implicit-def $s1
176     %0:fpr32 = COPY $s1
177     B %bb.3
179   bb.2:
180     successors: %bb.3
182     %10:fpr32 = IMPLICIT_DEF implicit-def $s1
183     %1:fpr32 = COPY $s1
185   bb.3:
186     %2:fpr32 = PHI %1, %bb.2, %0, %bb.1
187     $s0 = COPY %2
188     RET_ReallyLR implicit $s0
192 name:            same_def_different_operand
193 tracksRegLiveness: true
194 registers:
195   - { id: 0, class: fpr32, preferred-register: '' }
196   - { id: 1, class: fpr32, preferred-register: '' }
197   - { id: 2, class: gpr64common, preferred-register: '' }
198   - { id: 3, class: fpr32, preferred-register: '' }
199   - { id: 4, class: fpr32, preferred-register: '' }
200   - { id: 5, class: gpr32common, preferred-register: '' }
201   - { id: 6, class: gpr32, preferred-register: '' }
202   - { id: 7, class: fpr32, preferred-register: '' }
203   - { id: 8, class: fpr32, preferred-register: '' }
204   - { id: 9, class: gpr64common, preferred-register: '' }
205   - { id: 10, class: gpr64, preferred-register: '' }
206   - { id: 11, class: gpr64common, preferred-register: '' }
207 liveins:
208   - { reg: '$s1', virtual-reg: '%4' }
209   - { reg: '$w0', virtual-reg: '%5' }
210   - { reg: '$x2', virtual-reg: '%9' }
211 body:             |
212   ; CHECK-LABEL: name: same_def_different_operand
213   ; CHECK: bb.0.entry:
214   ; CHECK:   liveins: $s1, $w0, $x2
215   ; CHECK:   [[COPY:%[0-9]+]]:gpr64common = COPY $x0
216   ; CHECK:   early-clobber %11:gpr64common, %10:gpr64 = LDRXpre [[COPY]], 16
217   ; CHECK:   [[COPY1:%[0-9]+]]:gpr32common = COPY $w0
218   ; CHECK:   [[COPY2:%[0-9]+]]:fpr32 = COPY $s1
219   ; CHECK:   [[SUBSWri:%[0-9]+]]:gpr32 = SUBSWri [[COPY1]], 1, 0, implicit-def $nzcv
220   ; CHECK:   [[CSELXr:%[0-9]+]]:gpr64common = CSELXr %11, %10, 1, implicit $nzcv
221   ; CHECK:   $x2 = COPY [[CSELXr]]
222   ; CHECK:   RET_ReallyLR implicit $x2
223   bb.0.entry:
224     successors: %bb.1, %bb.2
225     liveins: $s1, $w0, $x2
227     %9:gpr64common = COPY $x0
228     early-clobber %11:gpr64common, %10:gpr64 = LDRXpre %9:gpr64common, 16
230     %5:gpr32common = COPY $w0
231     %4:fpr32 = COPY $s1
232     %6:gpr32 = SUBSWri %5, 1, 0, implicit-def $nzcv
233     Bcc 1, %bb.2, implicit $nzcv
234     B %bb.1
236   bb.1:
237     successors: %bb.3
239     B %bb.3
241   bb.2:
242     successors: %bb.3
244     B %bb.3
246   bb.3:
247     %2:gpr64common = PHI %11, %bb.2, %10, %bb.1
248     $x2 = COPY %2
249     RET_ReallyLR implicit $x2