@@ -406,27 +406,31 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
406
406
; CHECK-SSE-NEXT: subq $72, %rsp
407
407
; CHECK-SSE-NEXT: .cfi_def_cfa_offset 80
408
408
; CHECK-SSE-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill
409
- ; CHECK-SSE-NEXT: pextrw $7, %xmm0, %edi
409
+ ; CHECK-SSE-NEXT: pextrw $7, %xmm0, %eax
410
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
410
411
; CHECK-SSE-NEXT: movss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
411
412
; CHECK-SSE-NEXT: callq ldexpf@PLT
412
413
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
413
414
; CHECK-SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
414
415
; CHECK-SSE-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
415
- ; CHECK-SSE-NEXT: pextrw $6, %xmm0, %edi
416
+ ; CHECK-SSE-NEXT: pextrw $6, %xmm0, %eax
417
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
416
418
; CHECK-SSE-NEXT: movd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
417
419
; CHECK-SSE-NEXT: callq ldexpf@PLT
418
420
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
419
421
; CHECK-SSE-NEXT: punpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
420
422
; CHECK-SSE-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
421
423
; CHECK-SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
422
424
; CHECK-SSE-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
423
- ; CHECK-SSE-NEXT: pextrw $5, %xmm0, %edi
425
+ ; CHECK-SSE-NEXT: pextrw $5, %xmm0, %eax
426
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
424
427
; CHECK-SSE-NEXT: movss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
425
428
; CHECK-SSE-NEXT: callq ldexpf@PLT
426
429
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
427
430
; CHECK-SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
428
431
; CHECK-SSE-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
429
- ; CHECK-SSE-NEXT: pextrw $4, %xmm0, %edi
432
+ ; CHECK-SSE-NEXT: pextrw $4, %xmm0, %eax
433
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
430
434
; CHECK-SSE-NEXT: movd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
431
435
; CHECK-SSE-NEXT: callq ldexpf@PLT
432
436
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
@@ -436,28 +440,31 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
436
440
; CHECK-SSE-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
437
441
; CHECK-SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
438
442
; CHECK-SSE-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
439
- ; CHECK-SSE-NEXT: pextrw $3, %xmm0, %edi
443
+ ; CHECK-SSE-NEXT: pextrw $3, %xmm0, %eax
444
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
440
445
; CHECK-SSE-NEXT: movss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
441
446
; CHECK-SSE-NEXT: callq ldexpf@PLT
442
447
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
443
448
; CHECK-SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
444
449
; CHECK-SSE-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
445
- ; CHECK-SSE-NEXT: pextrw $2, %xmm0, %edi
450
+ ; CHECK-SSE-NEXT: pextrw $2, %xmm0, %eax
451
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
446
452
; CHECK-SSE-NEXT: movd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
447
453
; CHECK-SSE-NEXT: callq ldexpf@PLT
448
454
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
449
455
; CHECK-SSE-NEXT: punpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
450
456
; CHECK-SSE-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
451
457
; CHECK-SSE-NEXT: movdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
452
458
; CHECK-SSE-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
453
- ; CHECK-SSE-NEXT: pextrw $1, %xmm0, %edi
459
+ ; CHECK-SSE-NEXT: pextrw $1, %xmm0, %eax
460
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
454
461
; CHECK-SSE-NEXT: movss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
455
462
; CHECK-SSE-NEXT: callq ldexpf@PLT
456
463
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
457
464
; CHECK-SSE-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
458
465
; CHECK-SSE-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
459
466
; CHECK-SSE-NEXT: movd %xmm0, %eax
460
- ; CHECK-SSE-NEXT: movzwl %ax, %edi
467
+ ; CHECK-SSE-NEXT: movswl %ax, %edi
461
468
; CHECK-SSE-NEXT: movd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
462
469
; CHECK-SSE-NEXT: callq ldexpf@PLT
463
470
; CHECK-SSE-NEXT: callq __truncsfhf2@PLT
@@ -476,27 +483,31 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
476
483
; CHECK-AVX2-NEXT: subq $72, %rsp
477
484
; CHECK-AVX2-NEXT: .cfi_def_cfa_offset 80
478
485
; CHECK-AVX2-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill
479
- ; CHECK-AVX2-NEXT: vpextrw $7, %xmm0, %edi
486
+ ; CHECK-AVX2-NEXT: vpextrw $7, %xmm0, %eax
487
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
480
488
; CHECK-AVX2-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
481
489
; CHECK-AVX2-NEXT: callq ldexpf@PLT
482
490
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
483
491
; CHECK-AVX2-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
484
492
; CHECK-AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
485
- ; CHECK-AVX2-NEXT: vpextrw $6, %xmm0, %edi
493
+ ; CHECK-AVX2-NEXT: vpextrw $6, %xmm0, %eax
494
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
486
495
; CHECK-AVX2-NEXT: vmovd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
487
496
; CHECK-AVX2-NEXT: callq ldexpf@PLT
488
497
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
489
498
; CHECK-AVX2-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
490
499
; CHECK-AVX2-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
491
500
; CHECK-AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
492
501
; CHECK-AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
493
- ; CHECK-AVX2-NEXT: vpextrw $5, %xmm0, %edi
502
+ ; CHECK-AVX2-NEXT: vpextrw $5, %xmm0, %eax
503
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
494
504
; CHECK-AVX2-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
495
505
; CHECK-AVX2-NEXT: callq ldexpf@PLT
496
506
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
497
507
; CHECK-AVX2-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
498
508
; CHECK-AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
499
- ; CHECK-AVX2-NEXT: vpextrw $4, %xmm0, %edi
509
+ ; CHECK-AVX2-NEXT: vpextrw $4, %xmm0, %eax
510
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
500
511
; CHECK-AVX2-NEXT: vmovd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
501
512
; CHECK-AVX2-NEXT: callq ldexpf@PLT
502
513
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
@@ -506,28 +517,31 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
506
517
; CHECK-AVX2-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
507
518
; CHECK-AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
508
519
; CHECK-AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
509
- ; CHECK-AVX2-NEXT: vpextrw $3, %xmm0, %edi
520
+ ; CHECK-AVX2-NEXT: vpextrw $3, %xmm0, %eax
521
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
510
522
; CHECK-AVX2-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
511
523
; CHECK-AVX2-NEXT: callq ldexpf@PLT
512
524
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
513
525
; CHECK-AVX2-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
514
526
; CHECK-AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
515
- ; CHECK-AVX2-NEXT: vpextrw $2, %xmm0, %edi
527
+ ; CHECK-AVX2-NEXT: vpextrw $2, %xmm0, %eax
528
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
516
529
; CHECK-AVX2-NEXT: vmovd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
517
530
; CHECK-AVX2-NEXT: callq ldexpf@PLT
518
531
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
519
532
; CHECK-AVX2-NEXT: vpunpcklwd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload
520
533
; CHECK-AVX2-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
521
534
; CHECK-AVX2-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
522
535
; CHECK-AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
523
- ; CHECK-AVX2-NEXT: vpextrw $1, %xmm0, %edi
536
+ ; CHECK-AVX2-NEXT: vpextrw $1, %xmm0, %eax
537
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
524
538
; CHECK-AVX2-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
525
539
; CHECK-AVX2-NEXT: callq ldexpf@PLT
526
540
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
527
541
; CHECK-AVX2-NEXT: vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
528
542
; CHECK-AVX2-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
529
543
; CHECK-AVX2-NEXT: vmovd %xmm0, %eax
530
- ; CHECK-AVX2-NEXT: movzwl %ax, %edi
544
+ ; CHECK-AVX2-NEXT: movswl %ax, %edi
531
545
; CHECK-AVX2-NEXT: vmovd {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
532
546
; CHECK-AVX2-NEXT: callq ldexpf@PLT
533
547
; CHECK-AVX2-NEXT: callq __truncsfhf2@PLT
@@ -546,15 +560,17 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
546
560
; CHECK-AVX512F-NEXT: subq $72, %rsp
547
561
; CHECK-AVX512F-NEXT: .cfi_def_cfa_offset 80
548
562
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill
549
- ; CHECK-AVX512F-NEXT: vpextrw $7, %xmm0, %edi
563
+ ; CHECK-AVX512F-NEXT: vpextrw $7, %xmm0, %eax
564
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
550
565
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
551
566
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
552
567
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
553
568
; CHECK-AVX512F-NEXT: vmovd %xmm0, %eax
554
569
; CHECK-AVX512F-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
555
570
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
556
571
; CHECK-AVX512F-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
557
- ; CHECK-AVX512F-NEXT: vpextrw $6, %xmm0, %edi
572
+ ; CHECK-AVX512F-NEXT: vpextrw $6, %xmm0, %eax
573
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
558
574
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
559
575
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
560
576
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
@@ -564,15 +580,17 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
564
580
; CHECK-AVX512F-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
565
581
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
566
582
; CHECK-AVX512F-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
567
- ; CHECK-AVX512F-NEXT: vpextrw $5, %xmm0, %edi
583
+ ; CHECK-AVX512F-NEXT: vpextrw $5, %xmm0, %eax
584
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
568
585
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
569
586
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
570
587
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
571
588
; CHECK-AVX512F-NEXT: vmovd %xmm0, %eax
572
589
; CHECK-AVX512F-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
573
590
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
574
591
; CHECK-AVX512F-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
575
- ; CHECK-AVX512F-NEXT: vpextrw $4, %xmm0, %edi
592
+ ; CHECK-AVX512F-NEXT: vpextrw $4, %xmm0, %eax
593
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
576
594
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
577
595
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
578
596
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
@@ -584,15 +602,17 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
584
602
; CHECK-AVX512F-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
585
603
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
586
604
; CHECK-AVX512F-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
587
- ; CHECK-AVX512F-NEXT: vpextrw $3, %xmm0, %edi
605
+ ; CHECK-AVX512F-NEXT: vpextrw $3, %xmm0, %eax
606
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
588
607
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
589
608
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
590
609
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
591
610
; CHECK-AVX512F-NEXT: vmovd %xmm0, %eax
592
611
; CHECK-AVX512F-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
593
612
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
594
613
; CHECK-AVX512F-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
595
- ; CHECK-AVX512F-NEXT: vpextrw $2, %xmm0, %edi
614
+ ; CHECK-AVX512F-NEXT: vpextrw $2, %xmm0, %eax
615
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
596
616
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
597
617
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
598
618
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
@@ -602,7 +622,8 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
602
622
; CHECK-AVX512F-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3]
603
623
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
604
624
; CHECK-AVX512F-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
605
- ; CHECK-AVX512F-NEXT: vpextrw $1, %xmm0, %edi
625
+ ; CHECK-AVX512F-NEXT: vpextrw $1, %xmm0, %eax
626
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
606
627
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
607
628
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
608
629
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
@@ -611,7 +632,7 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
611
632
; CHECK-AVX512F-NEXT: vmovdqa %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
612
633
; CHECK-AVX512F-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload
613
634
; CHECK-AVX512F-NEXT: vmovd %xmm0, %eax
614
- ; CHECK-AVX512F-NEXT: movzwl %ax, %edi
635
+ ; CHECK-AVX512F-NEXT: movswl %ax, %edi
615
636
; CHECK-AVX512F-NEXT: vmovss {{.*#+}} xmm0 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
616
637
; CHECK-AVX512F-NEXT: callq ldexpf@PLT
617
638
; CHECK-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
0 commit comments