Skip to content

Commit 26cff6e

Browse files
committed
[GISel] Tests for G_AND fold
1 parent 8d28e58 commit 26cff6e

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -o - -mtriple=aarch64-unknown-unknown -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s | FileCheck %s
3+
4+
---
5+
name: and_trunc
6+
body: |
7+
bb.0:
8+
liveins: $w0, $w1
9+
; CHECK-LABEL: name: and_trunc
10+
; CHECK: liveins: $w0, $w1
11+
; CHECK-NEXT: {{ $}}
12+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
13+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
14+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
15+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
16+
; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[TRUNC1]]
17+
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[AND]](s16)
18+
; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
19+
%0:_(s32) = COPY $w0
20+
%1:_(s32) = COPY $w1
21+
%2:_(s16) = G_TRUNC %0
22+
%3:_(s16) = G_TRUNC %1
23+
%4:_(s16) = G_AND %2, %3
24+
%5:_(s32) = G_ANYEXT %4
25+
$w0 = COPY %5
26+
...
27+
---
28+
name: and_trunc_multiuse_1
29+
body: |
30+
bb.0:
31+
liveins: $w0, $w1, $x2
32+
; CHECK-LABEL: name: and_trunc_multiuse_1
33+
; CHECK: liveins: $w0, $w1, $x2
34+
; CHECK-NEXT: {{ $}}
35+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
36+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
37+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2
38+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
39+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
40+
; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[COPY2]](p0) :: (store (s16))
41+
; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[TRUNC1]]
42+
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[AND]](s16)
43+
; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
44+
%0:_(s32) = COPY $w0
45+
%1:_(s32) = COPY $w1
46+
%5:_(p0) = COPY $x2
47+
%2:_(s16) = G_TRUNC %0
48+
%3:_(s16) = G_TRUNC %1
49+
G_STORE %2, %5 :: (store (s16))
50+
%4:_(s16) = G_AND %2, %3
51+
%6:_(s32) = G_ANYEXT %4
52+
$w0 = COPY %6
53+
...
54+
---
55+
name: and_trunc_multiuse_2
56+
body: |
57+
bb.0:
58+
liveins: $w0, $w1, $x2
59+
; CHECK-LABEL: name: and_trunc_multiuse_2
60+
; CHECK: liveins: $w0, $w1, $x2
61+
; CHECK-NEXT: {{ $}}
62+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
63+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
64+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2
65+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
66+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
67+
; CHECK-NEXT: G_STORE [[TRUNC]](s16), [[COPY2]](p0) :: (store (s16))
68+
; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[TRUNC1]]
69+
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[AND]](s16)
70+
; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
71+
%0:_(s32) = COPY $w0
72+
%1:_(s32) = COPY $w1
73+
%5:_(p0) = COPY $x2
74+
%2:_(s16) = G_TRUNC %0
75+
%3:_(s16) = G_TRUNC %1
76+
G_STORE %2, %5 :: (store (s16))
77+
%4:_(s16) = G_AND %2, %3
78+
%6:_(s32) = G_ANYEXT %4
79+
$w0 = COPY %6
80+
...
81+
---
82+
name: and_trunc_vector
83+
body: |
84+
bb.0:
85+
liveins: $q0, $q1
86+
; CHECK-LABEL: name: and_trunc_vector
87+
; CHECK: liveins: $q0, $q1
88+
; CHECK-NEXT: {{ $}}
89+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
90+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1
91+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[COPY]](<4 x s32>)
92+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[COPY1]](<4 x s32>)
93+
; CHECK-NEXT: [[AND:%[0-9]+]]:_(<4 x s16>) = G_AND [[TRUNC]], [[TRUNC1]]
94+
; CHECK-NEXT: $x0 = COPY [[AND]](<4 x s16>)
95+
%0:_(<4 x s32>) = COPY $q0
96+
%1:_(<4 x s32>) = COPY $q1
97+
%2:_(<4 x s16>) = G_TRUNC %0
98+
%3:_(<4 x s16>) = G_TRUNC %1
99+
%4:_(<4 x s16>) = G_AND %2, %3
100+
$x0 = COPY %4
101+
...
102+
---
103+
name: and_trunc_vector_multiuse
104+
body: |
105+
bb.0:
106+
liveins: $q0, $q1, $x0
107+
; CHECK-LABEL: name: and_trunc_vector_multiuse
108+
; CHECK: liveins: $q0, $q1, $x0
109+
; CHECK-NEXT: {{ $}}
110+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0
111+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1
112+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(p0) = COPY $x2
113+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[COPY]](<4 x s32>)
114+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<4 x s16>) = G_TRUNC [[COPY1]](<4 x s32>)
115+
; CHECK-NEXT: G_STORE [[TRUNC]](<4 x s16>), [[COPY2]](p0) :: (store (<4 x s16>))
116+
; CHECK-NEXT: [[AND:%[0-9]+]]:_(<4 x s16>) = G_AND [[TRUNC]], [[TRUNC1]]
117+
; CHECK-NEXT: $x0 = COPY [[AND]](<4 x s16>)
118+
%0:_(<4 x s32>) = COPY $q0
119+
%1:_(<4 x s32>) = COPY $q1
120+
%5:_(p0) = COPY $x2
121+
%2:_(<4 x s16>) = G_TRUNC %0
122+
%3:_(<4 x s16>) = G_TRUNC %1
123+
G_STORE %2, %5 :: (store (<4 x s16>))
124+
%4:_(<4 x s16>) = G_AND %2, %3
125+
$x0 = COPY %4
126+
...
127+
---
128+
name: and_trunc_freeze
129+
body: |
130+
bb.0:
131+
liveins: $w0, $w1
132+
; CHECK-LABEL: name: and_trunc_freeze
133+
; CHECK: liveins: $w0, $w1
134+
; CHECK-NEXT: {{ $}}
135+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
136+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
137+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
138+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
139+
; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s16) = G_FREEZE [[TRUNC]]
140+
; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[FREEZE]], [[TRUNC1]]
141+
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[AND]](s16)
142+
; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
143+
%0:_(s32) = COPY $w0
144+
%1:_(s32) = COPY $w1
145+
%2:_(s16) = G_TRUNC %0
146+
%3:_(s16) = G_TRUNC %1
147+
%6:_(s16) = G_FREEZE %2
148+
%4:_(s16) = G_AND %6, %3
149+
%5:_(s32) = G_ANYEXT %4
150+
$w0 = COPY %5
151+
...
152+
---
153+
name: and_trunc_freeze_both
154+
body: |
155+
bb.0:
156+
liveins: $w0, $w1
157+
; CHECK-LABEL: name: and_trunc_freeze_both
158+
; CHECK: liveins: $w0, $w1
159+
; CHECK-NEXT: {{ $}}
160+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
161+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
162+
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
163+
; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
164+
; CHECK-NEXT: [[FREEZE:%[0-9]+]]:_(s16) = G_FREEZE [[TRUNC]]
165+
; CHECK-NEXT: [[FREEZE1:%[0-9]+]]:_(s16) = G_FREEZE [[TRUNC1]]
166+
; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[FREEZE]], [[FREEZE1]]
167+
; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[AND]](s16)
168+
; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
169+
%0:_(s32) = COPY $w0
170+
%1:_(s32) = COPY $w1
171+
%2:_(s16) = G_TRUNC %0
172+
%3:_(s16) = G_TRUNC %1
173+
%6:_(s16) = G_FREEZE %2
174+
%7:_(s16) = G_FREEZE %3
175+
%4:_(s16) = G_AND %6, %7
176+
%5:_(s32) = G_ANYEXT %4
177+
$w0 = COPY %5

0 commit comments

Comments
 (0)