@@ -115,18 +115,17 @@ define i7 @bitreverse_i7(i7 %x) {
115
115
; RV64-NEXT: slli a2, a0, 4
116
116
; RV64-NEXT: andi a2, a2, 32
117
117
; RV64-NEXT: or a1, a1, a2
118
- ; RV64-NEXT: li a2, 2
119
- ; RV64-NEXT: slli a3, a0, 2
120
- ; RV64-NEXT: andi a3, a3, 16
118
+ ; RV64-NEXT: slli a2, a0, 2
119
+ ; RV64-NEXT: andi a2, a2, 16
121
120
; RV64-NEXT: andi a0, a0, 127
122
- ; RV64-NEXT: andi a4 , a0, 8
123
- ; RV64-NEXT: or a3, a3, a4
124
- ; RV64-NEXT: or a1, a1, a3
125
- ; RV64-NEXT: srli a3 , a0, 2
126
- ; RV64-NEXT: andi a3, a3 , 4
127
- ; RV64-NEXT: srli a4 , a0, 4
128
- ; RV64-NEXT: and a2, a4, a2
129
- ; RV64-NEXT: or a2, a3, a2
121
+ ; RV64-NEXT: andi a3 , a0, 8
122
+ ; RV64-NEXT: or a2, a2, a3
123
+ ; RV64-NEXT: or a1, a1, a2
124
+ ; RV64-NEXT: srli a2 , a0, 2
125
+ ; RV64-NEXT: andi a2, a2 , 4
126
+ ; RV64-NEXT: srli a3 , a0, 4
127
+ ; RV64-NEXT: andi a3, a3, 2
128
+ ; RV64-NEXT: or a2, a2, a3
130
129
; RV64-NEXT: or a1, a1, a2
131
130
; RV64-NEXT: srli a0, a0, 6
132
131
; RV64-NEXT: or a0, a1, a0
@@ -172,39 +171,36 @@ define i24 @bitreverse_i24(i24 %x) {
172
171
;
173
172
; RV64-LABEL: bitreverse_i24:
174
173
; RV64: # %bb.0:
175
- ; RV64-NEXT: lui a1, 4096
176
- ; RV64-NEXT: addiw a1, a1, -1
177
- ; RV64-NEXT: slli a2, a0, 16
178
- ; RV64-NEXT: and a0, a0, a1
174
+ ; RV64-NEXT: slli a1, a0, 16
175
+ ; RV64-NEXT: lui a2, 4096
176
+ ; RV64-NEXT: addiw a2, a2, -1
177
+ ; RV64-NEXT: and a0, a0, a2
179
178
; RV64-NEXT: srli a0, a0, 16
180
- ; RV64-NEXT: or a0, a0, a2
181
- ; RV64-NEXT: lui a2, 65521
182
- ; RV64-NEXT: addiw a2, a2, -241
183
- ; RV64-NEXT: slli a2, a2, 4
184
- ; RV64-NEXT: and a3, a2, a1
179
+ ; RV64-NEXT: or a0, a0, a1
180
+ ; RV64-NEXT: lui a1, 1048335
181
+ ; RV64-NEXT: addiw a1, a1, 240
182
+ ; RV64-NEXT: and a3, a1, a2
185
183
; RV64-NEXT: and a3, a0, a3
186
184
; RV64-NEXT: srli a3, a3, 4
187
185
; RV64-NEXT: slli a0, a0, 4
188
- ; RV64-NEXT: and a0, a0, a2
186
+ ; RV64-NEXT: and a0, a0, a1
189
187
; RV64-NEXT: or a0, a3, a0
190
- ; RV64-NEXT: lui a2, 261939
191
- ; RV64-NEXT: addiw a2, a2, 819
192
- ; RV64-NEXT: slli a2, a2, 2
193
- ; RV64-NEXT: and a3, a2, a1
188
+ ; RV64-NEXT: lui a1, 1047757
189
+ ; RV64-NEXT: addiw a1, a1, -820
190
+ ; RV64-NEXT: and a3, a1, a2
194
191
; RV64-NEXT: and a3, a0, a3
195
192
; RV64-NEXT: srli a3, a3, 2
196
193
; RV64-NEXT: slli a0, a0, 2
197
- ; RV64-NEXT: and a0, a0, a2
194
+ ; RV64-NEXT: and a0, a0, a1
198
195
; RV64-NEXT: or a0, a3, a0
199
- ; RV64-NEXT: lui a2, 523605
200
- ; RV64-NEXT: addiw a2, a2, 1365
201
- ; RV64-NEXT: slli a2, a2, 1
202
- ; RV64-NEXT: and a1, a2, a1
203
- ; RV64-NEXT: and a1, a0, a1
204
- ; RV64-NEXT: srli a1, a1, 1
196
+ ; RV64-NEXT: lui a1, 1047211
197
+ ; RV64-NEXT: addiw a1, a1, -1366
198
+ ; RV64-NEXT: and a2, a1, a2
199
+ ; RV64-NEXT: and a2, a0, a2
200
+ ; RV64-NEXT: srli a2, a2, 1
205
201
; RV64-NEXT: slli a0, a0, 1
206
- ; RV64-NEXT: and a0, a0, a2
207
- ; RV64-NEXT: or a0, a1 , a0
202
+ ; RV64-NEXT: and a0, a0, a1
203
+ ; RV64-NEXT: or a0, a2 , a0
208
204
; RV64-NEXT: ret
209
205
%rev = call i24 @llvm.bitreverse.i24 (i24 %x )
210
206
ret i24 %rev
0 commit comments