@@ -24,14 +24,12 @@ define i16 @test_bswap_i16(i16 %a) nounwind {
24
24
25
25
define i32 @test_bswap_i32 (i32 %a ) nounwind {
26
26
; XTENSA-LABEL: test_bswap_i32:
27
- ; XTENSA: movi a8, 24
28
- ; XTENSA-NEXT: ssr a8
29
- ; XTENSA-NEXT: srl a8, a2
30
- ; XTENSA-NEXT: srli a9, a2, 8
31
- ; XTENSA-NEXT: l32r a10, .LCPI1_0
32
- ; XTENSA-NEXT: and a9, a9, a10
33
- ; XTENSA-NEXT: or a8, a9, a8
34
- ; XTENSA-NEXT: and a9, a2, a10
27
+ ; XTENSA: srli a8, a2, 8
28
+ ; XTENSA-NEXT: l32r a9, .LCPI1_0
29
+ ; XTENSA-NEXT: and a8, a8, a9
30
+ ; XTENSA-NEXT: extui a10, a2, 24, 8
31
+ ; XTENSA-NEXT: or a8, a8, a10
32
+ ; XTENSA-NEXT: and a9, a2, a9
35
33
; XTENSA-NEXT: slli a9, a9, 8
36
34
; XTENSA-NEXT: slli a10, a2, 24
37
35
; XTENSA-NEXT: or a9, a10, a9
@@ -43,28 +41,25 @@ define i32 @test_bswap_i32(i32 %a) nounwind {
43
41
44
42
define i64 @test_bswap_i64 (i64 %a ) nounwind {
45
43
; XTENSA-LABEL: test_bswap_i64:
46
- ; XTENSA: movi a9, 24
47
- ; XTENSA-NEXT: ssr a9
48
- ; XTENSA-NEXT: srl a8, a3
49
- ; XTENSA-NEXT: srli a10, a3, 8
50
- ; XTENSA-NEXT: l32r a11, .LCPI2_0
51
- ; XTENSA-NEXT: and a10, a10, a11
52
- ; XTENSA-NEXT: or a8, a10, a8
53
- ; XTENSA-NEXT: and a10, a3, a11
44
+ ; XTENSA: srli a8, a3, 8
45
+ ; XTENSA-NEXT: l32r a9, .LCPI2_0
46
+ ; XTENSA-NEXT: and a8, a8, a9
47
+ ; XTENSA-NEXT: extui a10, a3, 24, 8
48
+ ; XTENSA-NEXT: or a8, a8, a10
49
+ ; XTENSA-NEXT: and a10, a3, a9
54
50
; XTENSA-NEXT: slli a10, a10, 8
55
- ; XTENSA-NEXT: slli a7 , a3, 24
56
- ; XTENSA-NEXT: or a10, a7 , a10
51
+ ; XTENSA-NEXT: slli a11 , a3, 24
52
+ ; XTENSA-NEXT: or a10, a11 , a10
57
53
; XTENSA-NEXT: or a8, a10, a8
58
- ; XTENSA-NEXT: ssr a9
59
- ; XTENSA-NEXT: srl a9, a2
60
54
; XTENSA-NEXT: srli a10, a2, 8
61
- ; XTENSA-NEXT: and a10, a10, a11
62
- ; XTENSA-NEXT: or a9, a10, a9
63
- ; XTENSA-NEXT: and a10, a2, a11
64
- ; XTENSA-NEXT: slli a10, a10, 8
55
+ ; XTENSA-NEXT: and a10, a10, a9
56
+ ; XTENSA-NEXT: extui a11, a2, 24, 8
57
+ ; XTENSA-NEXT: or a10, a10, a11
58
+ ; XTENSA-NEXT: and a9, a2, a9
59
+ ; XTENSA-NEXT: slli a9, a9, 8
65
60
; XTENSA-NEXT: slli a11, a2, 24
66
- ; XTENSA-NEXT: or a10 , a11, a10
67
- ; XTENSA-NEXT: or a3, a10, a9
61
+ ; XTENSA-NEXT: or a9 , a11, a9
62
+ ; XTENSA-NEXT: or a3, a9, a10
68
63
; XTENSA-NEXT: or a2, a8, a8
69
64
; XTENSA-NEXT: ret
70
65
%tmp = call i64 @llvm.bswap.i64 (i64 %a )
@@ -129,14 +124,12 @@ define i16 @test_bitreverse_i16(i16 %a) nounwind {
129
124
130
125
define i32 @test_bitreverse_i32 (i32 %a ) nounwind {
131
126
; XTENSA-LABEL: test_bitreverse_i32:
132
- ; XTENSA: movi a8, 24
133
- ; XTENSA-NEXT: ssr a8
134
- ; XTENSA-NEXT: srl a8, a2
135
- ; XTENSA-NEXT: srli a9, a2, 8
136
- ; XTENSA-NEXT: l32r a10, .LCPI5_0
137
- ; XTENSA-NEXT: and a9, a9, a10
138
- ; XTENSA-NEXT: or a8, a9, a8
139
- ; XTENSA-NEXT: and a9, a2, a10
127
+ ; XTENSA: srli a8, a2, 8
128
+ ; XTENSA-NEXT: l32r a9, .LCPI5_0
129
+ ; XTENSA-NEXT: and a8, a8, a9
130
+ ; XTENSA-NEXT: extui a10, a2, 24, 8
131
+ ; XTENSA-NEXT: or a8, a8, a10
132
+ ; XTENSA-NEXT: and a9, a2, a9
140
133
; XTENSA-NEXT: slli a9, a9, 8
141
134
; XTENSA-NEXT: slli a10, a2, 24
142
135
; XTENSA-NEXT: or a9, a10, a9
@@ -166,59 +159,56 @@ define i32 @test_bitreverse_i32(i32 %a) nounwind {
166
159
167
160
define i64 @test_bitreverse_i64 (i64 %a ) nounwind {
168
161
; XTENSA-LABEL: test_bitreverse_i64:
169
- ; XTENSA: movi a10, 24
170
- ; XTENSA-NEXT: ssr a10
171
- ; XTENSA-NEXT: srl a8, a3
172
- ; XTENSA-NEXT: srli a11, a3, 8
162
+ ; XTENSA: srli a8, a3, 8
173
163
; XTENSA-NEXT: l32r a9, .LCPI6_0
174
- ; XTENSA-NEXT: and a11, a11, a9
175
- ; XTENSA-NEXT: or a8, a11, a8
176
- ; XTENSA-NEXT: and a11, a3, a9
177
- ; XTENSA-NEXT: slli a11, a11, 8
178
- ; XTENSA-NEXT: slli a7, a3, 24
179
- ; XTENSA-NEXT: or a11, a7, a11
180
- ; XTENSA-NEXT: or a8, a11, a8
181
- ; XTENSA-NEXT: srli a7, a8, 4
164
+ ; XTENSA-NEXT: and a8, a8, a9
165
+ ; XTENSA-NEXT: extui a10, a3, 24, 8
166
+ ; XTENSA-NEXT: or a8, a8, a10
167
+ ; XTENSA-NEXT: and a10, a3, a9
168
+ ; XTENSA-NEXT: slli a10, a10, 8
169
+ ; XTENSA-NEXT: slli a11, a3, 24
170
+ ; XTENSA-NEXT: or a10, a11, a10
171
+ ; XTENSA-NEXT: or a8, a10, a8
172
+ ; XTENSA-NEXT: srli a10, a8, 4
182
173
; XTENSA-NEXT: l32r a11, .LCPI6_1
183
- ; XTENSA-NEXT: and a7, a7 , a11
174
+ ; XTENSA-NEXT: and a10, a10 , a11
184
175
; XTENSA-NEXT: and a8, a8, a11
185
176
; XTENSA-NEXT: slli a8, a8, 4
186
- ; XTENSA-NEXT: or a8, a7 , a8
187
- ; XTENSA-NEXT: srli a7 , a8, 2
188
- ; XTENSA-NEXT: l32r a6 , .LCPI6_2
189
- ; XTENSA-NEXT: and a7, a7, a6
190
- ; XTENSA-NEXT: and a8, a8, a6
177
+ ; XTENSA-NEXT: or a8, a10 , a8
178
+ ; XTENSA-NEXT: srli a10 , a8, 2
179
+ ; XTENSA-NEXT: l32r a7 , .LCPI6_2
180
+ ; XTENSA-NEXT: and a10, a10, a7
181
+ ; XTENSA-NEXT: and a8, a8, a7
191
182
; XTENSA-NEXT: slli a8, a8, 2
192
- ; XTENSA-NEXT: or a8, a7 , a8
193
- ; XTENSA-NEXT: srli a7 , a8, 1
194
- ; XTENSA-NEXT: l32r a5 , .LCPI6_3
195
- ; XTENSA-NEXT: and a7, a7, a5
196
- ; XTENSA-NEXT: and a8, a8, a5
183
+ ; XTENSA-NEXT: or a8, a10 , a8
184
+ ; XTENSA-NEXT: srli a10 , a8, 1
185
+ ; XTENSA-NEXT: l32r a6 , .LCPI6_3
186
+ ; XTENSA-NEXT: and a10, a10, a6
187
+ ; XTENSA-NEXT: and a8, a8, a6
197
188
; XTENSA-NEXT: slli a8, a8, 1
198
- ; XTENSA-NEXT: or a8, a7, a8
199
- ; XTENSA-NEXT: ssr a10
200
- ; XTENSA-NEXT: srl a10, a2
201
- ; XTENSA-NEXT: srli a7, a2, 8
202
- ; XTENSA-NEXT: and a7, a7, a9
203
- ; XTENSA-NEXT: or a10, a7, a10
189
+ ; XTENSA-NEXT: or a8, a10, a8
190
+ ; XTENSA-NEXT: srli a10, a2, 8
191
+ ; XTENSA-NEXT: and a10, a10, a9
192
+ ; XTENSA-NEXT: extui a5, a2, 24, 8
193
+ ; XTENSA-NEXT: or a10, a10, a5
204
194
; XTENSA-NEXT: and a9, a2, a9
205
195
; XTENSA-NEXT: slli a9, a9, 8
206
- ; XTENSA-NEXT: slli a7 , a2, 24
207
- ; XTENSA-NEXT: or a9, a7 , a9
196
+ ; XTENSA-NEXT: slli a5 , a2, 24
197
+ ; XTENSA-NEXT: or a9, a5 , a9
208
198
; XTENSA-NEXT: or a9, a9, a10
209
199
; XTENSA-NEXT: srli a10, a9, 4
210
200
; XTENSA-NEXT: and a10, a10, a11
211
201
; XTENSA-NEXT: and a9, a9, a11
212
202
; XTENSA-NEXT: slli a9, a9, 4
213
203
; XTENSA-NEXT: or a9, a10, a9
214
204
; XTENSA-NEXT: srli a10, a9, 2
215
- ; XTENSA-NEXT: and a10, a10, a6
216
- ; XTENSA-NEXT: and a9, a9, a6
205
+ ; XTENSA-NEXT: and a10, a10, a7
206
+ ; XTENSA-NEXT: and a9, a9, a7
217
207
; XTENSA-NEXT: slli a9, a9, 2
218
208
; XTENSA-NEXT: or a9, a10, a9
219
209
; XTENSA-NEXT: srli a10, a9, 1
220
- ; XTENSA-NEXT: and a10, a10, a5
221
- ; XTENSA-NEXT: and a9, a9, a5
210
+ ; XTENSA-NEXT: and a10, a10, a6
211
+ ; XTENSA-NEXT: and a9, a9, a6
222
212
; XTENSA-NEXT: slli a9, a9, 1
223
213
; XTENSA-NEXT: or a3, a10, a9
224
214
; XTENSA-NEXT: or a2, a8, a8
0 commit comments