@@ -11,12 +11,13 @@ body: |
11
11
12
12
; CHECK-LABEL: name: bswap_s16
13
13
; CHECK: liveins: $w0
14
- ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
15
- ; CHECK: [[BSWAP:%[0-9]+]]:_(s32) = G_BSWAP [[COPY]]
16
- ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
17
- ; CHECK: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BSWAP]], [[C]](s64)
18
- ; CHECK: $w0 = COPY [[LSHR]](s32)
19
- ; CHECK: RET_ReallyLR implicit $w0
14
+ ; CHECK-NEXT: {{ $}}
15
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
16
+ ; CHECK-NEXT: [[BSWAP:%[0-9]+]]:_(s32) = G_BSWAP [[COPY]]
17
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
18
+ ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BSWAP]], [[C]](s64)
19
+ ; CHECK-NEXT: $w0 = COPY [[LSHR]](s32)
20
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
20
21
%1:_(s32) = COPY $w0
21
22
%0:_(s16) = G_TRUNC %1(s32)
22
23
%2:_(s16) = G_BSWAP %0
@@ -32,10 +33,11 @@ body: |
32
33
liveins: $w0
33
34
; CHECK-LABEL: name: bswap_s32_legal
34
35
; CHECK: liveins: $w0
35
- ; CHECK: %copy:_(s32) = COPY $w0
36
- ; CHECK: %bswap:_(s32) = G_BSWAP %copy
37
- ; CHECK: $w0 = COPY %bswap(s32)
38
- ; CHECK: RET_ReallyLR implicit $w0
36
+ ; CHECK-NEXT: {{ $}}
37
+ ; CHECK-NEXT: %copy:_(s32) = COPY $w0
38
+ ; CHECK-NEXT: %bswap:_(s32) = G_BSWAP %copy
39
+ ; CHECK-NEXT: $w0 = COPY %bswap(s32)
40
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
39
41
%copy:_(s32) = COPY $w0
40
42
%bswap:_(s32) = G_BSWAP %copy
41
43
$w0 = COPY %bswap(s32)
@@ -49,27 +51,65 @@ body: |
49
51
liveins: $x0
50
52
; CHECK-LABEL: name: bswap_s64_legal
51
53
; CHECK: liveins: $x0
52
- ; CHECK: %copy:_(s64) = COPY $x0
53
- ; CHECK: %bswap:_(s64) = G_BSWAP %copy
54
- ; CHECK: $x0 = COPY %bswap(s64)
55
- ; CHECK: RET_ReallyLR implicit $x0
54
+ ; CHECK-NEXT: {{ $}}
55
+ ; CHECK-NEXT: %copy:_(s64) = COPY $x0
56
+ ; CHECK-NEXT: %bswap:_(s64) = G_BSWAP %copy
57
+ ; CHECK-NEXT: $x0 = COPY %bswap(s64)
58
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
56
59
%copy:_(s64) = COPY $x0
57
60
%bswap:_(s64) = G_BSWAP %copy
58
61
$x0 = COPY %bswap(s64)
59
62
RET_ReallyLR implicit $x0
60
63
...
61
64
---
65
+ name : bswap_v4s16_legal
66
+ tracksRegLiveness : true
67
+ body : |
68
+ bb.0:
69
+ liveins: $d0
70
+ ; CHECK-LABEL: name: bswap_v4s16_legal
71
+ ; CHECK: liveins: $d0
72
+ ; CHECK-NEXT: {{ $}}
73
+ ; CHECK-NEXT: %copy:_(<4 x s16>) = COPY $d0
74
+ ; CHECK-NEXT: %bswap:_(<4 x s16>) = G_BSWAP %copy
75
+ ; CHECK-NEXT: $d0 = COPY %bswap(<4 x s16>)
76
+ ; CHECK-NEXT: RET_ReallyLR implicit $d0
77
+ %copy:_(<4 x s16>) = COPY $d0
78
+ %bswap:_(<4 x s16>) = G_BSWAP %copy
79
+ $d0 = COPY %bswap(<4 x s16>)
80
+ RET_ReallyLR implicit $d0
81
+ ...
82
+ ---
83
+ name : bswap_v8s16_legal
84
+ tracksRegLiveness : true
85
+ body : |
86
+ bb.0:
87
+ liveins: $q0
88
+ ; CHECK-LABEL: name: bswap_v8s16_legal
89
+ ; CHECK: liveins: $q0
90
+ ; CHECK-NEXT: {{ $}}
91
+ ; CHECK-NEXT: %copy:_(<8 x s16>) = COPY $q0
92
+ ; CHECK-NEXT: %bswap:_(<8 x s16>) = G_BSWAP %copy
93
+ ; CHECK-NEXT: $q0 = COPY %bswap(<8 x s16>)
94
+ ; CHECK-NEXT: RET_ReallyLR implicit $q0
95
+ %copy:_(<8 x s16>) = COPY $q0
96
+ %bswap:_(<8 x s16>) = G_BSWAP %copy
97
+ $q0 = COPY %bswap(<8 x s16>)
98
+ RET_ReallyLR implicit $q0
99
+ ...
100
+ ---
62
101
name : bswap_v4s32_legal
63
102
tracksRegLiveness : true
64
103
body : |
65
104
bb.0:
66
105
liveins: $q0
67
106
; CHECK-LABEL: name: bswap_v4s32_legal
68
107
; CHECK: liveins: $q0
69
- ; CHECK: %copy:_(<4 x s32>) = COPY $q0
70
- ; CHECK: %bswap:_(<4 x s32>) = G_BSWAP %copy
71
- ; CHECK: $q0 = COPY %bswap(<4 x s32>)
72
- ; CHECK: RET_ReallyLR implicit $q0
108
+ ; CHECK-NEXT: {{ $}}
109
+ ; CHECK-NEXT: %copy:_(<4 x s32>) = COPY $q0
110
+ ; CHECK-NEXT: %bswap:_(<4 x s32>) = G_BSWAP %copy
111
+ ; CHECK-NEXT: $q0 = COPY %bswap(<4 x s32>)
112
+ ; CHECK-NEXT: RET_ReallyLR implicit $q0
73
113
%copy:_(<4 x s32>) = COPY $q0
74
114
%bswap:_(<4 x s32>) = G_BSWAP %copy
75
115
$q0 = COPY %bswap(<4 x s32>)
@@ -83,10 +123,11 @@ body: |
83
123
liveins: $d0
84
124
; CHECK-LABEL: name: bswap_v2s32_legal
85
125
; CHECK: liveins: $d0
86
- ; CHECK: %copy:_(<2 x s32>) = COPY $d0
87
- ; CHECK: %bswap:_(<2 x s32>) = G_BSWAP %copy
88
- ; CHECK: $d0 = COPY %bswap(<2 x s32>)
89
- ; CHECK: RET_ReallyLR implicit $d0
126
+ ; CHECK-NEXT: {{ $}}
127
+ ; CHECK-NEXT: %copy:_(<2 x s32>) = COPY $d0
128
+ ; CHECK-NEXT: %bswap:_(<2 x s32>) = G_BSWAP %copy
129
+ ; CHECK-NEXT: $d0 = COPY %bswap(<2 x s32>)
130
+ ; CHECK-NEXT: RET_ReallyLR implicit $d0
90
131
%copy:_(<2 x s32>) = COPY $d0
91
132
%bswap:_(<2 x s32>) = G_BSWAP %copy
92
133
$d0 = COPY %bswap(<2 x s32>)
@@ -100,10 +141,11 @@ body: |
100
141
liveins: $q0
101
142
; CHECK-LABEL: name: bswap_v2s64_legal
102
143
; CHECK: liveins: $q0
103
- ; CHECK: %copy:_(<2 x s64>) = COPY $q0
104
- ; CHECK: %bswap:_(<2 x s64>) = G_BSWAP %copy
105
- ; CHECK: $q0 = COPY %bswap(<2 x s64>)
106
- ; CHECK: RET_ReallyLR implicit $q0
144
+ ; CHECK-NEXT: {{ $}}
145
+ ; CHECK-NEXT: %copy:_(<2 x s64>) = COPY $q0
146
+ ; CHECK-NEXT: %bswap:_(<2 x s64>) = G_BSWAP %copy
147
+ ; CHECK-NEXT: $q0 = COPY %bswap(<2 x s64>)
148
+ ; CHECK-NEXT: RET_ReallyLR implicit $q0
107
149
%copy:_(<2 x s64>) = COPY $q0
108
150
%bswap:_(<2 x s64>) = G_BSWAP %copy
109
151
$q0 = COPY %bswap(<2 x s64>)
@@ -134,3 +176,39 @@ body: |
134
176
$x0 = COPY %trunc(s64)
135
177
RET_ReallyLR implicit $x0
136
178
...
179
+ ---
180
+ name : bswap_v2s48
181
+ tracksRegLiveness : true
182
+ body : |
183
+ bb.0:
184
+ liveins: $q0, $x8
185
+ ; CHECK-LABEL: name: bswap_v2s48
186
+ ; CHECK: liveins: $q0, $x8
187
+ ; CHECK-NEXT: {{ $}}
188
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x8
189
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q0
190
+ ; CHECK-NEXT: [[BSWAP:%[0-9]+]]:_(<2 x s64>) = G_BSWAP [[COPY1]]
191
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
192
+ ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)
193
+ ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<2 x s64>) = G_LSHR [[BSWAP]], [[BUILD_VECTOR]](<2 x s64>)
194
+ ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[LSHR]](<2 x s64>)
195
+ ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 32
196
+ ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[C1]](s64)
197
+ ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
198
+ ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C2]](s64)
199
+ ; CHECK-NEXT: G_STORE [[UV]](s64), [[COPY]](p0) :: (store (s32), align 16)
200
+ ; CHECK-NEXT: G_STORE [[LSHR1]](s64), [[PTR_ADD]](p0) :: (store (s16) into unknown-address + 4, align 4)
201
+ ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 6
202
+ ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C3]](s64)
203
+ ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[C1]](s64)
204
+ ; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD1]], [[C2]](s64)
205
+ ; CHECK-NEXT: G_STORE [[UV1]](s64), [[PTR_ADD1]](p0) :: (store (s32) into unknown-address + 6, align 2)
206
+ ; CHECK-NEXT: G_STORE [[LSHR2]](s64), [[PTR_ADD2]](p0) :: (store (s16) into unknown-address + 10)
207
+ ; CHECK-NEXT: RET_ReallyLR
208
+ %1:_(p0) = COPY $x8
209
+ %2:_(<2 x s64>) = COPY $q0
210
+ %0:_(<2 x s48>) = G_TRUNC %2:_(<2 x s64>)
211
+ %bswap:_(<2 x s48>) = G_BSWAP %0
212
+ G_STORE %bswap:_(<2 x s48>), %1:_(p0) :: (store (<2 x s48>), align 16)
213
+ RET_ReallyLR
214
+ ...
0 commit comments