@@ -61,36 +61,18 @@ define i8 @test_bitreverse_i8(i8 %a) nounwind {
61
61
;
62
62
; GFNISSE-LABEL: test_bitreverse_i8:
63
63
; GFNISSE: # %bb.0:
64
- ; GFNISSE-NEXT: rolb $4, %dil
65
- ; GFNISSE-NEXT: movl %edi, %eax
66
- ; GFNISSE-NEXT: andb $51, %al
67
- ; GFNISSE-NEXT: shlb $2, %al
68
- ; GFNISSE-NEXT: shrb $2, %dil
69
- ; GFNISSE-NEXT: andb $51, %dil
70
- ; GFNISSE-NEXT: orb %dil, %al
71
- ; GFNISSE-NEXT: movl %eax, %ecx
72
- ; GFNISSE-NEXT: andb $85, %cl
73
- ; GFNISSE-NEXT: addb %cl, %cl
74
- ; GFNISSE-NEXT: shrb %al
75
- ; GFNISSE-NEXT: andb $85, %al
76
- ; GFNISSE-NEXT: orb %cl, %al
64
+ ; GFNISSE-NEXT: movd %edi, %xmm0
65
+ ; GFNISSE-NEXT: gf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
66
+ ; GFNISSE-NEXT: movd %xmm0, %eax
67
+ ; GFNISSE-NEXT: # kill: def $al killed $al killed $eax
77
68
; GFNISSE-NEXT: retq
78
69
;
79
70
; GFNIAVX-LABEL: test_bitreverse_i8:
80
71
; GFNIAVX: # %bb.0:
81
- ; GFNIAVX-NEXT: rolb $4, %dil
82
- ; GFNIAVX-NEXT: movl %edi, %eax
83
- ; GFNIAVX-NEXT: andb $51, %al
84
- ; GFNIAVX-NEXT: shlb $2, %al
85
- ; GFNIAVX-NEXT: shrb $2, %dil
86
- ; GFNIAVX-NEXT: andb $51, %dil
87
- ; GFNIAVX-NEXT: orb %dil, %al
88
- ; GFNIAVX-NEXT: movl %eax, %ecx
89
- ; GFNIAVX-NEXT: andb $85, %cl
90
- ; GFNIAVX-NEXT: addb %cl, %cl
91
- ; GFNIAVX-NEXT: shrb %al
92
- ; GFNIAVX-NEXT: andb $85, %al
93
- ; GFNIAVX-NEXT: orb %cl, %al
72
+ ; GFNIAVX-NEXT: vmovd %edi, %xmm0
73
+ ; GFNIAVX-NEXT: vgf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
74
+ ; GFNIAVX-NEXT: vmovd %xmm0, %eax
75
+ ; GFNIAVX-NEXT: # kill: def $al killed $al killed $eax
94
76
; GFNIAVX-NEXT: retq
95
77
%b = call i8 @llvm.bitreverse.i8 (i8 %a )
96
78
ret i8 %b
@@ -153,47 +135,19 @@ define i16 @test_bitreverse_i16(i16 %a) nounwind {
153
135
;
154
136
; GFNISSE-LABEL: test_bitreverse_i16:
155
137
; GFNISSE: # %bb.0:
156
- ; GFNISSE-NEXT: # kill: def $edi killed $edi def $rdi
157
- ; GFNISSE-NEXT: rolw $8, %di
158
- ; GFNISSE-NEXT: movl %edi, %eax
159
- ; GFNISSE-NEXT: andl $3855, %eax # imm = 0xF0F
160
- ; GFNISSE-NEXT: shll $4, %eax
161
- ; GFNISSE-NEXT: shrl $4, %edi
162
- ; GFNISSE-NEXT: andl $3855, %edi # imm = 0xF0F
163
- ; GFNISSE-NEXT: orl %eax, %edi
164
- ; GFNISSE-NEXT: movl %edi, %eax
165
- ; GFNISSE-NEXT: andl $13107, %eax # imm = 0x3333
166
- ; GFNISSE-NEXT: shrl $2, %edi
167
- ; GFNISSE-NEXT: andl $13107, %edi # imm = 0x3333
168
- ; GFNISSE-NEXT: leal (%rdi,%rax,4), %eax
169
- ; GFNISSE-NEXT: movl %eax, %ecx
170
- ; GFNISSE-NEXT: andl $21845, %ecx # imm = 0x5555
171
- ; GFNISSE-NEXT: shrl %eax
172
- ; GFNISSE-NEXT: andl $21845, %eax # imm = 0x5555
173
- ; GFNISSE-NEXT: leal (%rax,%rcx,2), %eax
138
+ ; GFNISSE-NEXT: movd %edi, %xmm0
139
+ ; GFNISSE-NEXT: gf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
140
+ ; GFNISSE-NEXT: movd %xmm0, %eax
141
+ ; GFNISSE-NEXT: rolw $8, %ax
174
142
; GFNISSE-NEXT: # kill: def $ax killed $ax killed $eax
175
143
; GFNISSE-NEXT: retq
176
144
;
177
145
; GFNIAVX-LABEL: test_bitreverse_i16:
178
146
; GFNIAVX: # %bb.0:
179
- ; GFNIAVX-NEXT: # kill: def $edi killed $edi def $rdi
180
- ; GFNIAVX-NEXT: rolw $8, %di
181
- ; GFNIAVX-NEXT: movl %edi, %eax
182
- ; GFNIAVX-NEXT: andl $3855, %eax # imm = 0xF0F
183
- ; GFNIAVX-NEXT: shll $4, %eax
184
- ; GFNIAVX-NEXT: shrl $4, %edi
185
- ; GFNIAVX-NEXT: andl $3855, %edi # imm = 0xF0F
186
- ; GFNIAVX-NEXT: orl %eax, %edi
187
- ; GFNIAVX-NEXT: movl %edi, %eax
188
- ; GFNIAVX-NEXT: andl $13107, %eax # imm = 0x3333
189
- ; GFNIAVX-NEXT: shrl $2, %edi
190
- ; GFNIAVX-NEXT: andl $13107, %edi # imm = 0x3333
191
- ; GFNIAVX-NEXT: leal (%rdi,%rax,4), %eax
192
- ; GFNIAVX-NEXT: movl %eax, %ecx
193
- ; GFNIAVX-NEXT: andl $21845, %ecx # imm = 0x5555
194
- ; GFNIAVX-NEXT: shrl %eax
195
- ; GFNIAVX-NEXT: andl $21845, %eax # imm = 0x5555
196
- ; GFNIAVX-NEXT: leal (%rax,%rcx,2), %eax
147
+ ; GFNIAVX-NEXT: vmovd %edi, %xmm0
148
+ ; GFNIAVX-NEXT: vgf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
149
+ ; GFNIAVX-NEXT: vmovd %xmm0, %eax
150
+ ; GFNIAVX-NEXT: rolw $8, %ax
197
151
; GFNIAVX-NEXT: # kill: def $ax killed $ax killed $eax
198
152
; GFNIAVX-NEXT: retq
199
153
%b = call i16 @llvm.bitreverse.i16 (i16 %a )
0 commit comments