Skip to content

Commit ee428cf

Browse files
committed
[AArch64] Add test for comparing
1 parent b5b34db commit ee428cf

File tree

1 file changed

+162
-0
lines changed

1 file changed

+162
-0
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -run-pass=aarch64-mi-peephole-opt -o - -mtriple=aarch64-unknown-linux -verify-machineinstrs %s | FileCheck %s
3+
4+
---
5+
name: transform_lsr_and_ldr_to_lsr_ldr2
6+
tracksRegLiveness: true
7+
body: |
8+
bb.0.entry:
9+
liveins: $x0, $x1, $x2
10+
; CHECK-LABEL: name: transform_lsr_and_ldr_to_lsr_ldr2
11+
; CHECK: liveins: $x0, $x1, $x2
12+
; CHECK-NEXT: {{ $}}
13+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x2
14+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
15+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x0
16+
; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64 = MADDXrrr [[COPY1]], [[COPY2]], $xzr
17+
; CHECK-NEXT: [[UBFMXri:%[0-9]+]]:gpr64 = UBFMXri killed [[MADDXrrr]], 56, 63
18+
; CHECK-NEXT: [[ANDXri:%[0-9]+]]:gpr64common = ANDXri killed [[UBFMXri]], 8069
19+
; CHECK-NEXT: [[LDRWroX:%[0-9]+]]:gpr32 = LDRWroX [[COPY]], killed [[ANDXri]], 0, 0
20+
; CHECK-NEXT: $w0 = COPY [[LDRWroX]]
21+
; CHECK-NEXT: RET_ReallyLR implicit $w0
22+
%2:gpr64common = COPY $x2
23+
%1:gpr64 = COPY $x1
24+
%0:gpr64 = COPY $x0
25+
%3:gpr64 = MADDXrrr %1, %0, $xzr
26+
%4:gpr64 = UBFMXri killed %3, 56, 63
27+
%5:gpr64common = ANDXri killed %4, 8069
28+
%6:gpr32 = LDRWroX %2, killed %5, 0, 0
29+
$w0 = COPY %6
30+
RET_ReallyLR implicit $w0
31+
...
32+
---
33+
name: transform_lsl1_and_ldr_to_lsr1_ldr2
34+
tracksRegLiveness: true
35+
body: |
36+
bb.0.entry:
37+
liveins: $x0, $x1, $x2
38+
; CHECK-LABEL: name: transform_lsl1_and_ldr_to_lsr1_ldr2
39+
; CHECK: liveins: $x0, $x1, $x2
40+
; CHECK-NEXT: {{ $}}
41+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x2
42+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
43+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x0
44+
; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64 = MADDXrrr [[COPY1]], [[COPY2]], $xzr
45+
; CHECK-NEXT: [[UBFMXri:%[0-9]+]]:gpr64 = UBFMXri killed [[MADDXrrr]], 63, 62
46+
; CHECK-NEXT: [[ANDXri:%[0-9]+]]:gpr64common = ANDXri killed [[UBFMXri]], 8125
47+
; CHECK-NEXT: [[LDRWroX:%[0-9]+]]:gpr32 = LDRWroX [[COPY]], killed [[ANDXri]], 0, 0
48+
; CHECK-NEXT: $w0 = COPY [[LDRWroX]]
49+
; CHECK-NEXT: RET_ReallyLR implicit $w0
50+
%2:gpr64common = COPY $x2
51+
%1:gpr64 = COPY $x1
52+
%0:gpr64 = COPY $x0
53+
%3:gpr64 = MADDXrrr %1, %0, $xzr
54+
%4:gpr64 = UBFMXri killed %3, 63, 62
55+
%5:gpr64common = ANDXri killed %4, 8125
56+
%6:gpr32 = LDRWroX %2, killed %5, 0, 0
57+
$w0 = COPY %6
58+
RET_ReallyLR implicit $w0
59+
...
60+
---
61+
name: donot_transform_and_ldr
62+
tracksRegLiveness: true
63+
body: |
64+
bb.0.entry:
65+
liveins: $x0, $x1, $x2
66+
; CHECK-LABEL: name: donot_transform_and_ldr
67+
; CHECK: liveins: $x0, $x1, $x2
68+
; CHECK-NEXT: {{ $}}
69+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x2
70+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
71+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x0
72+
; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64 = MADDXrrr [[COPY1]], [[COPY2]], $xzr
73+
; CHECK-NEXT: [[ANDXri:%[0-9]+]]:gpr64common = ANDXri killed [[MADDXrrr]], 8125
74+
; CHECK-NEXT: [[LDRWroX:%[0-9]+]]:gpr32 = LDRWroX [[COPY]], killed [[ANDXri]], 0, 0
75+
; CHECK-NEXT: $w0 = COPY [[LDRWroX]]
76+
; CHECK-NEXT: RET_ReallyLR implicit $w0
77+
%2:gpr64common = COPY $x2
78+
%1:gpr64 = COPY $x1
79+
%0:gpr64 = COPY $x0
80+
%3:gpr64 = MADDXrrr %1, %0, $xzr
81+
%4:gpr64common = ANDXri killed %3, 8125
82+
%5:gpr32 = LDRWroX %2, killed %4, 0, 0
83+
$w0 = COPY %5
84+
RET_ReallyLR implicit $w0
85+
...
86+
---
87+
name: donot_transform_if_not_lsl
88+
tracksRegLiveness: true
89+
body: |
90+
bb.0.entry:
91+
liveins: $x0, $x1, $x2
92+
; CHECK-LABEL: name: donot_transform_if_not_lsl
93+
; CHECK: liveins: $x0, $x1, $x2
94+
; CHECK-NEXT: {{ $}}
95+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x2
96+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
97+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x0
98+
; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64 = MADDXrrr [[COPY1]], [[COPY2]], $xzr
99+
; CHECK-NEXT: [[UBFMXri:%[0-9]+]]:gpr64 = UBFMXri killed [[MADDXrrr]], 64, 62
100+
; CHECK-NEXT: [[ANDXri:%[0-9]+]]:gpr64common = ANDXri killed [[UBFMXri]], 8125
101+
; CHECK-NEXT: [[LDRWroX:%[0-9]+]]:gpr32 = LDRWroX [[COPY]], killed [[ANDXri]], 0, 0
102+
; CHECK-NEXT: $w0 = COPY [[LDRWroX]]
103+
; CHECK-NEXT: RET_ReallyLR implicit $w0
104+
%2:gpr64common = COPY $x2
105+
%1:gpr64 = COPY $x1
106+
%0:gpr64 = COPY $x0
107+
%3:gpr64 = MADDXrrr %1, %0, $xzr
108+
%4:gpr64 = UBFMXri killed %3, 64, 62
109+
%5:gpr64common = ANDXri killed %4, 8125
110+
%6:gpr32 = LDRWroX %2, killed %5, 0, 0
111+
$w0 = COPY %6
112+
RET_ReallyLR implicit $w0
113+
...
114+
---
115+
name: donot_transform_if_not_lsr
116+
tracksRegLiveness: true
117+
body: |
118+
bb.0.entry:
119+
liveins: $x0, $x1, $x2
120+
; CHECK-LABEL: name: donot_transform_if_not_lsr
121+
; CHECK: liveins: $x0, $x1, $x2
122+
; CHECK-NEXT: {{ $}}
123+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x2
124+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1
125+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64 = COPY $x0
126+
; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64 = MADDXrrr [[COPY1]], [[COPY2]], $xzr
127+
; CHECK-NEXT: [[UBFMXri:%[0-9]+]]:gpr64 = UBFMXri killed [[MADDXrrr]], 62, 62
128+
; CHECK-NEXT: [[ANDXri:%[0-9]+]]:gpr64common = ANDXri killed [[UBFMXri]], 8069
129+
; CHECK-NEXT: [[LDRWroX:%[0-9]+]]:gpr32 = LDRWroX [[COPY]], killed [[ANDXri]], 0, 0
130+
; CHECK-NEXT: $w0 = COPY [[LDRWroX]]
131+
; CHECK-NEXT: RET_ReallyLR implicit $w0
132+
%2:gpr64common = COPY $x2
133+
%1:gpr64 = COPY $x1
134+
%0:gpr64 = COPY $x0
135+
%3:gpr64 = MADDXrrr %1, %0, $xzr
136+
%4:gpr64 = UBFMXri killed %3, 62, 62
137+
%5:gpr64common = ANDXri killed %4, 8069
138+
%6:gpr32 = LDRWroX %2, killed %5, 0, 0
139+
$w0 = COPY %6
140+
RET_ReallyLR implicit $w0
141+
...
142+
---
143+
name: donot_transform_if_not_exist_and_and_lsl
144+
tracksRegLiveness: true
145+
body: |
146+
bb.0.entry:
147+
liveins: $x0, $x2
148+
; CHECK-LABEL: name: donot_transform_if_not_exist_and_and_lsl
149+
; CHECK: liveins: $x0, $x2
150+
; CHECK-NEXT: {{ $}}
151+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64common = COPY $x2
152+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x0
153+
; CHECK-NEXT: [[UBFMXri:%[0-9]+]]:gpr64 = UBFMXri [[COPY1]], 61, 60
154+
; CHECK-NEXT: [[LDRWroX:%[0-9]+]]:gpr32 = LDRWroX [[COPY]], killed [[UBFMXri]], 0, 0
155+
; CHECK-NEXT: $w0 = COPY [[LDRWroX]]
156+
; CHECK-NEXT: RET_ReallyLR implicit $w0
157+
%2:gpr64common = COPY $x2
158+
%0:gpr64 = COPY $x0
159+
%3:gpr64 = UBFMXri %0, 61, 60
160+
%4:gpr32 = LDRWroX %2, killed %3, 0, 0
161+
$w0 = COPY %4
162+
RET_ReallyLR implicit $w0

0 commit comments

Comments
 (0)