@@ -274,57 +274,13 @@ define i32 @test_bitreverse_i32(i32 %a) nounwind {
274
274
; GFNISSE-NEXT: leal (%rax,%rcx,2), %eax
275
275
; GFNISSE-NEXT: retq
276
276
;
277
- ; GFNIAVX1-LABEL: test_bitreverse_i32:
278
- ; GFNIAVX1: # %bb.0:
279
- ; GFNIAVX1-NEXT: # kill: def $edi killed $edi def $rdi
280
- ; GFNIAVX1-NEXT: bswapl %edi
281
- ; GFNIAVX1-NEXT: movl %edi, %eax
282
- ; GFNIAVX1-NEXT: andl $252645135, %eax # imm = 0xF0F0F0F
283
- ; GFNIAVX1-NEXT: shll $4, %eax
284
- ; GFNIAVX1-NEXT: shrl $4, %edi
285
- ; GFNIAVX1-NEXT: andl $252645135, %edi # imm = 0xF0F0F0F
286
- ; GFNIAVX1-NEXT: orl %eax, %edi
287
- ; GFNIAVX1-NEXT: movl %edi, %eax
288
- ; GFNIAVX1-NEXT: andl $858993459, %eax # imm = 0x33333333
289
- ; GFNIAVX1-NEXT: shrl $2, %edi
290
- ; GFNIAVX1-NEXT: andl $858993459, %edi # imm = 0x33333333
291
- ; GFNIAVX1-NEXT: leal (%rdi,%rax,4), %eax
292
- ; GFNIAVX1-NEXT: movl %eax, %ecx
293
- ; GFNIAVX1-NEXT: andl $1431655765, %ecx # imm = 0x55555555
294
- ; GFNIAVX1-NEXT: shrl %eax
295
- ; GFNIAVX1-NEXT: andl $1431655765, %eax # imm = 0x55555555
296
- ; GFNIAVX1-NEXT: leal (%rax,%rcx,2), %eax
297
- ; GFNIAVX1-NEXT: retq
298
- ;
299
- ; GFNIAVX2-LABEL: test_bitreverse_i32:
300
- ; GFNIAVX2: # %bb.0:
301
- ; GFNIAVX2-NEXT: # kill: def $edi killed $edi def $rdi
302
- ; GFNIAVX2-NEXT: bswapl %edi
303
- ; GFNIAVX2-NEXT: movl %edi, %eax
304
- ; GFNIAVX2-NEXT: andl $252645135, %eax # imm = 0xF0F0F0F
305
- ; GFNIAVX2-NEXT: shll $4, %eax
306
- ; GFNIAVX2-NEXT: shrl $4, %edi
307
- ; GFNIAVX2-NEXT: andl $252645135, %edi # imm = 0xF0F0F0F
308
- ; GFNIAVX2-NEXT: orl %eax, %edi
309
- ; GFNIAVX2-NEXT: movl %edi, %eax
310
- ; GFNIAVX2-NEXT: andl $858993459, %eax # imm = 0x33333333
311
- ; GFNIAVX2-NEXT: shrl $2, %edi
312
- ; GFNIAVX2-NEXT: andl $858993459, %edi # imm = 0x33333333
313
- ; GFNIAVX2-NEXT: leal (%rdi,%rax,4), %eax
314
- ; GFNIAVX2-NEXT: movl %eax, %ecx
315
- ; GFNIAVX2-NEXT: andl $1431655765, %ecx # imm = 0x55555555
316
- ; GFNIAVX2-NEXT: shrl %eax
317
- ; GFNIAVX2-NEXT: andl $1431655765, %eax # imm = 0x55555555
318
- ; GFNIAVX2-NEXT: leal (%rax,%rcx,2), %eax
319
- ; GFNIAVX2-NEXT: retq
320
- ;
321
- ; GFNIAVX512-LABEL: test_bitreverse_i32:
322
- ; GFNIAVX512: # %bb.0:
323
- ; GFNIAVX512-NEXT: vmovd %edi, %xmm0
324
- ; GFNIAVX512-NEXT: vgf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
325
- ; GFNIAVX512-NEXT: vmovd %xmm0, %eax
326
- ; GFNIAVX512-NEXT: bswapl %eax
327
- ; GFNIAVX512-NEXT: retq
277
+ ; GFNIAVX-LABEL: test_bitreverse_i32:
278
+ ; GFNIAVX: # %bb.0:
279
+ ; GFNIAVX-NEXT: vmovd %edi, %xmm0
280
+ ; GFNIAVX-NEXT: vgf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
281
+ ; GFNIAVX-NEXT: vmovd %xmm0, %eax
282
+ ; GFNIAVX-NEXT: bswapl %eax
283
+ ; GFNIAVX-NEXT: retq
328
284
%b = call i32 @llvm.bitreverse.i32 (i32 %a )
329
285
ret i32 %b
330
286
}
@@ -409,61 +365,13 @@ define i64 @test_bitreverse_i64(i64 %a) nounwind {
409
365
; GFNISSE-NEXT: leaq (%rax,%rdx,2), %rax
410
366
; GFNISSE-NEXT: retq
411
367
;
412
- ; GFNIAVX1-LABEL: test_bitreverse_i64:
413
- ; GFNIAVX1: # %bb.0:
414
- ; GFNIAVX1-NEXT: bswapq %rdi
415
- ; GFNIAVX1-NEXT: movq %rdi, %rax
416
- ; GFNIAVX1-NEXT: shrq $4, %rax
417
- ; GFNIAVX1-NEXT: movabsq $1085102592571150095, %rcx # imm = 0xF0F0F0F0F0F0F0F
418
- ; GFNIAVX1-NEXT: andq %rcx, %rax
419
- ; GFNIAVX1-NEXT: andq %rcx, %rdi
420
- ; GFNIAVX1-NEXT: shlq $4, %rdi
421
- ; GFNIAVX1-NEXT: orq %rax, %rdi
422
- ; GFNIAVX1-NEXT: movabsq $3689348814741910323, %rax # imm = 0x3333333333333333
423
- ; GFNIAVX1-NEXT: movq %rdi, %rcx
424
- ; GFNIAVX1-NEXT: andq %rax, %rcx
425
- ; GFNIAVX1-NEXT: shrq $2, %rdi
426
- ; GFNIAVX1-NEXT: andq %rax, %rdi
427
- ; GFNIAVX1-NEXT: leaq (%rdi,%rcx,4), %rax
428
- ; GFNIAVX1-NEXT: movabsq $6148914691236517205, %rcx # imm = 0x5555555555555555
429
- ; GFNIAVX1-NEXT: movq %rax, %rdx
430
- ; GFNIAVX1-NEXT: andq %rcx, %rdx
431
- ; GFNIAVX1-NEXT: shrq %rax
432
- ; GFNIAVX1-NEXT: andq %rcx, %rax
433
- ; GFNIAVX1-NEXT: leaq (%rax,%rdx,2), %rax
434
- ; GFNIAVX1-NEXT: retq
435
- ;
436
- ; GFNIAVX2-LABEL: test_bitreverse_i64:
437
- ; GFNIAVX2: # %bb.0:
438
- ; GFNIAVX2-NEXT: bswapq %rdi
439
- ; GFNIAVX2-NEXT: movq %rdi, %rax
440
- ; GFNIAVX2-NEXT: shrq $4, %rax
441
- ; GFNIAVX2-NEXT: movabsq $1085102592571150095, %rcx # imm = 0xF0F0F0F0F0F0F0F
442
- ; GFNIAVX2-NEXT: andq %rcx, %rax
443
- ; GFNIAVX2-NEXT: andq %rcx, %rdi
444
- ; GFNIAVX2-NEXT: shlq $4, %rdi
445
- ; GFNIAVX2-NEXT: orq %rax, %rdi
446
- ; GFNIAVX2-NEXT: movabsq $3689348814741910323, %rax # imm = 0x3333333333333333
447
- ; GFNIAVX2-NEXT: movq %rdi, %rcx
448
- ; GFNIAVX2-NEXT: andq %rax, %rcx
449
- ; GFNIAVX2-NEXT: shrq $2, %rdi
450
- ; GFNIAVX2-NEXT: andq %rax, %rdi
451
- ; GFNIAVX2-NEXT: leaq (%rdi,%rcx,4), %rax
452
- ; GFNIAVX2-NEXT: movabsq $6148914691236517205, %rcx # imm = 0x5555555555555555
453
- ; GFNIAVX2-NEXT: movq %rax, %rdx
454
- ; GFNIAVX2-NEXT: andq %rcx, %rdx
455
- ; GFNIAVX2-NEXT: shrq %rax
456
- ; GFNIAVX2-NEXT: andq %rcx, %rax
457
- ; GFNIAVX2-NEXT: leaq (%rax,%rdx,2), %rax
458
- ; GFNIAVX2-NEXT: retq
459
- ;
460
- ; GFNIAVX512-LABEL: test_bitreverse_i64:
461
- ; GFNIAVX512: # %bb.0:
462
- ; GFNIAVX512-NEXT: vmovq %rdi, %xmm0
463
- ; GFNIAVX512-NEXT: vgf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
464
- ; GFNIAVX512-NEXT: vmovq %xmm0, %rax
465
- ; GFNIAVX512-NEXT: bswapq %rax
466
- ; GFNIAVX512-NEXT: retq
368
+ ; GFNIAVX-LABEL: test_bitreverse_i64:
369
+ ; GFNIAVX: # %bb.0:
370
+ ; GFNIAVX-NEXT: vmovq %rdi, %xmm0
371
+ ; GFNIAVX-NEXT: vgf2p8affineqb $0, {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
372
+ ; GFNIAVX-NEXT: vmovq %xmm0, %rax
373
+ ; GFNIAVX-NEXT: bswapq %rax
374
+ ; GFNIAVX-NEXT: retq
467
375
%b = call i64 @llvm.bitreverse.i64 (i64 %a )
468
376
ret i64 %b
469
377
}
0 commit comments