@@ -125,7 +125,7 @@ define <4 x float> @fmul_pow2_ldexp_4xfloat(<4 x i32> %i) {
125125; CHECK-SKX: # %bb.0:
126126; CHECK-SKX-NEXT: vcvtdq2ps %xmm0, %xmm0
127127; CHECK-SKX-NEXT: vbroadcastss {{.*#+}} xmm1 = [9.0E+0,9.0E+0,9.0E+0,9.0E+0]
128- ; CHECK-SKX-NEXT: vscalefps %xmm0, %xmm1, %xmm0
128+ ; CHECK-SKX-NEXT: vscalefss %xmm0, %xmm1, %xmm0
129129; CHECK-SKX-NEXT: retq
130130 %r = call <4 x float > @llvm.ldexp.v4f32.v4i32 (<4 x float > <float 9 .000000e+00 , float 9 .000000e+00 , float 9 .000000e+00 , float 9 .000000e+00 >, <4 x i32 > %i )
131131 ret <4 x float > %r
@@ -576,109 +576,15 @@ define <8 x half> @fmul_pow2_ldexp_8xhalf(<8 x i16> %i) {
576576; CHECK-AVX2-NEXT: .cfi_def_cfa_offset 8
577577; CHECK-AVX2-NEXT: retq
578578;
579- ; CHECK-ONLY-AVX512F-LABEL: fmul_pow2_ldexp_8xhalf:
580- ; CHECK-ONLY-AVX512F: # %bb.0:
581- ; CHECK-ONLY-AVX512F-NEXT: vpextrw $7, %xmm0, %eax
582- ; CHECK-ONLY-AVX512F-NEXT: cwtl
583- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm2
584- ; CHECK-ONLY-AVX512F-NEXT: vmovss {{.*#+}} xmm1 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
585- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm2, %xmm1, %xmm2
586- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm2, %xmm2
587- ; CHECK-ONLY-AVX512F-NEXT: vpextrw $6, %xmm0, %eax
588- ; CHECK-ONLY-AVX512F-NEXT: cwtl
589- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm3
590- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm3, %xmm1, %xmm3
591- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm3, %xmm3
592- ; CHECK-ONLY-AVX512F-NEXT: vpunpcklwd {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
593- ; CHECK-ONLY-AVX512F-NEXT: vpextrw $5, %xmm0, %eax
594- ; CHECK-ONLY-AVX512F-NEXT: cwtl
595- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm3
596- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm3, %xmm1, %xmm3
597- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm3, %xmm3
598- ; CHECK-ONLY-AVX512F-NEXT: vpextrw $4, %xmm0, %eax
599- ; CHECK-ONLY-AVX512F-NEXT: cwtl
600- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm4
601- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm4, %xmm1, %xmm4
602- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm4, %xmm4
603- ; CHECK-ONLY-AVX512F-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
604- ; CHECK-ONLY-AVX512F-NEXT: vpunpckldq {{.*#+}} xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
605- ; CHECK-ONLY-AVX512F-NEXT: vpextrw $3, %xmm0, %eax
606- ; CHECK-ONLY-AVX512F-NEXT: cwtl
607- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm3
608- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm3, %xmm1, %xmm3
609- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm3, %xmm3
610- ; CHECK-ONLY-AVX512F-NEXT: vpextrw $2, %xmm0, %eax
611- ; CHECK-ONLY-AVX512F-NEXT: cwtl
612- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm4
613- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm4, %xmm1, %xmm4
614- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm4, %xmm4
615- ; CHECK-ONLY-AVX512F-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
616- ; CHECK-ONLY-AVX512F-NEXT: vpextrw $1, %xmm0, %eax
617- ; CHECK-ONLY-AVX512F-NEXT: cwtl
618- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm4
619- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm4, %xmm1, %xmm4
620- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm4, %xmm4
621- ; CHECK-ONLY-AVX512F-NEXT: vmovd %xmm0, %eax
622- ; CHECK-ONLY-AVX512F-NEXT: cwtl
623- ; CHECK-ONLY-AVX512F-NEXT: vcvtsi2ss %eax, %xmm15, %xmm0
624- ; CHECK-ONLY-AVX512F-NEXT: vscalefss %xmm0, %xmm1, %xmm0
625- ; CHECK-ONLY-AVX512F-NEXT: vcvtps2ph $4, %xmm0, %xmm0
626- ; CHECK-ONLY-AVX512F-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
627- ; CHECK-ONLY-AVX512F-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
628- ; CHECK-ONLY-AVX512F-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
629- ; CHECK-ONLY-AVX512F-NEXT: retq
630- ;
631- ; CHECK-SKX-LABEL: fmul_pow2_ldexp_8xhalf:
632- ; CHECK-SKX: # %bb.0:
633- ; CHECK-SKX-NEXT: vpextrw $7, %xmm0, %eax
634- ; CHECK-SKX-NEXT: cwtl
635- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm1
636- ; CHECK-SKX-NEXT: vmovss {{.*#+}} xmm2 = [8.192E+3,0.0E+0,0.0E+0,0.0E+0]
637- ; CHECK-SKX-NEXT: vscalefss %xmm1, %xmm2, %xmm1
638- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm1, %xmm1
639- ; CHECK-SKX-NEXT: vpextrw $6, %xmm0, %eax
640- ; CHECK-SKX-NEXT: cwtl
641- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm3
642- ; CHECK-SKX-NEXT: vscalefss %xmm3, %xmm2, %xmm3
643- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm3, %xmm3
644- ; CHECK-SKX-NEXT: vpunpcklwd {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
645- ; CHECK-SKX-NEXT: vpextrw $5, %xmm0, %eax
646- ; CHECK-SKX-NEXT: cwtl
647- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm3
648- ; CHECK-SKX-NEXT: vscalefss %xmm3, %xmm2, %xmm3
649- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm3, %xmm3
650- ; CHECK-SKX-NEXT: vpextrw $4, %xmm0, %eax
651- ; CHECK-SKX-NEXT: cwtl
652- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm4
653- ; CHECK-SKX-NEXT: vscalefss %xmm4, %xmm2, %xmm4
654- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm4, %xmm4
655- ; CHECK-SKX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
656- ; CHECK-SKX-NEXT: vpunpckldq {{.*#+}} xmm1 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
657- ; CHECK-SKX-NEXT: vpextrw $3, %xmm0, %eax
658- ; CHECK-SKX-NEXT: cwtl
659- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm3
660- ; CHECK-SKX-NEXT: vscalefss %xmm3, %xmm2, %xmm3
661- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm3, %xmm3
662- ; CHECK-SKX-NEXT: vpextrw $2, %xmm0, %eax
663- ; CHECK-SKX-NEXT: cwtl
664- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm4
665- ; CHECK-SKX-NEXT: vscalefss %xmm4, %xmm2, %xmm4
666- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm4, %xmm4
667- ; CHECK-SKX-NEXT: vpunpcklwd {{.*#+}} xmm3 = xmm4[0],xmm3[0],xmm4[1],xmm3[1],xmm4[2],xmm3[2],xmm4[3],xmm3[3]
668- ; CHECK-SKX-NEXT: vpextrw $1, %xmm0, %eax
669- ; CHECK-SKX-NEXT: cwtl
670- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm4
671- ; CHECK-SKX-NEXT: vscalefss %xmm4, %xmm2, %xmm4
672- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm4, %xmm4
673- ; CHECK-SKX-NEXT: vmovd %xmm0, %eax
674- ; CHECK-SKX-NEXT: cwtl
675- ; CHECK-SKX-NEXT: vcvtsi2ss %eax, %xmm15, %xmm0
676- ; CHECK-SKX-NEXT: vscalefss %xmm0, %xmm2, %xmm0
677- ; CHECK-SKX-NEXT: vcvtps2ph $4, %xmm0, %xmm0
678- ; CHECK-SKX-NEXT: vpunpcklwd {{.*#+}} xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1],xmm0[2],xmm4[2],xmm0[3],xmm4[3]
679- ; CHECK-SKX-NEXT: vpunpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
680- ; CHECK-SKX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
681- ; CHECK-SKX-NEXT: retq
579+ ; CHECK-AVX512F-LABEL: fmul_pow2_ldexp_8xhalf:
580+ ; CHECK-AVX512F: # %bb.0:
581+ ; CHECK-AVX512F-NEXT: vbroadcastss {{.*#+}} ymm1 = [8.192E+3,8.192E+3,8.192E+3,8.192E+3,8.192E+3,8.192E+3,8.192E+3,8.192E+3]
582+ ; CHECK-AVX512F-NEXT: vpmovsxwd %xmm0, %ymm0
583+ ; CHECK-AVX512F-NEXT: vcvtdq2ps %zmm0, %zmm0
584+ ; CHECK-AVX512F-NEXT: vscalefps %zmm0, %zmm1, %zmm0
585+ ; CHECK-AVX512F-NEXT: vcvtps2ph $4, %ymm0, %xmm0
586+ ; CHECK-AVX512F-NEXT: vzeroupper
587+ ; CHECK-AVX512F-NEXT: retq
682588 %r = call <8 x half > @llvm.ldexp.v8f16.v8i16 (<8 x half > <half 0xH7000, half 0xH7000, half 0xH7000, half 0xH7000, half 0xH7000, half 0xH7000, half 0xH7000, half 0xH7000>, <8 x i16 > %i )
683589 ret <8 x half > %r
684590}
@@ -1812,5 +1718,3 @@ define x86_fp80 @pr128528(i1 %cond) {
18121718 %mul = fmul x86_fp80 %conv , 0xK4007D055555555555800
18131719 ret x86_fp80 %mul
18141720}
1815- ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
1816- ; CHECK-AVX512F: {{.*}}
0 commit comments