@@ -12,8 +12,7 @@ define void @test_half_ceil(half %a0, ptr %p0) nounwind {
1212; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
1313; F16C-NEXT: vroundss $10, %xmm0, %xmm0, %xmm0
1414; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
15- ; F16C-NEXT: vmovd %xmm0, %eax
16- ; F16C-NEXT: movw %ax, (%rdi)
15+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
1716; F16C-NEXT: retq
1817;
1918; FP16-LABEL: test_half_ceil:
@@ -108,8 +107,7 @@ define void @test_half_cos(half %a0, ptr %p0) nounwind {
108107; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
109108; F16C-NEXT: callq cosf@PLT
110109; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
111- ; F16C-NEXT: vmovd %xmm0, %eax
112- ; F16C-NEXT: movw %ax, (%rbx)
110+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
113111; F16C-NEXT: popq %rbx
114112; F16C-NEXT: retq
115113;
@@ -167,8 +165,7 @@ define void @test_half_exp(half %a0, ptr %p0) nounwind {
167165; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
168166; F16C-NEXT: callq expf@PLT
169167; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
170- ; F16C-NEXT: vmovd %xmm0, %eax
171- ; F16C-NEXT: movw %ax, (%rbx)
168+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
172169; F16C-NEXT: popq %rbx
173170; F16C-NEXT: retq
174171;
@@ -226,8 +223,7 @@ define void @test_half_exp2(half %a0, ptr %p0) nounwind {
226223; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
227224; F16C-NEXT: callq exp2f@PLT
228225; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
229- ; F16C-NEXT: vmovd %xmm0, %eax
230- ; F16C-NEXT: movw %ax, (%rbx)
226+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
231227; F16C-NEXT: popq %rbx
232228; F16C-NEXT: retq
233229;
@@ -285,8 +281,7 @@ define void @test_half_exp10(half %a0, ptr %p0) nounwind {
285281; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
286282; F16C-NEXT: callq exp10f@PLT
287283; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
288- ; F16C-NEXT: vmovd %xmm0, %eax
289- ; F16C-NEXT: movw %ax, (%rbx)
284+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
290285; F16C-NEXT: popq %rbx
291286; F16C-NEXT: retq
292287;
@@ -342,8 +337,7 @@ define void @test_half_fabs(half %a0, ptr %p0) nounwind {
342337; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
343338; F16C-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
344339; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
345- ; F16C-NEXT: vmovd %xmm0, %eax
346- ; F16C-NEXT: movw %ax, (%rdi)
340+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
347341; F16C-NEXT: retq
348342;
349343; FP16-LABEL: test_half_fabs:
@@ -383,8 +377,7 @@ define void @test_half_floor(half %a0, ptr %p0) nounwind {
383377; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
384378; F16C-NEXT: vroundss $9, %xmm0, %xmm0, %xmm0
385379; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
386- ; F16C-NEXT: vmovd %xmm0, %eax
387- ; F16C-NEXT: movw %ax, (%rdi)
380+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
388381; F16C-NEXT: retq
389382;
390383; FP16-LABEL: test_half_floor:
@@ -438,8 +431,7 @@ define void @test_half_fma(half %a0, half %a1, half %a2, ptr %p0) nounwind {
438431; F16C-NEXT: vcvtph2ps %xmm2, %xmm2
439432; F16C-NEXT: callq fmaf@PLT
440433; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
441- ; F16C-NEXT: vmovd %xmm0, %eax
442- ; F16C-NEXT: movw %ax, (%rbx)
434+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
443435; F16C-NEXT: popq %rbx
444436; F16C-NEXT: retq
445437;
@@ -525,8 +517,7 @@ define void @test_half_fneg(half %a0, ptr %p0) nounwind {
525517; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
526518; F16C-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
527519; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
528- ; F16C-NEXT: vmovd %xmm0, %eax
529- ; F16C-NEXT: movw %ax, (%rdi)
520+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
530521; F16C-NEXT: retq
531522;
532523; FP16-LABEL: test_half_fneg:
@@ -568,8 +559,7 @@ define void @test_half_log(half %a0, ptr %p0) nounwind {
568559; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
569560; F16C-NEXT: callq logf@PLT
570561; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
571- ; F16C-NEXT: vmovd %xmm0, %eax
572- ; F16C-NEXT: movw %ax, (%rbx)
562+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
573563; F16C-NEXT: popq %rbx
574564; F16C-NEXT: retq
575565;
@@ -627,8 +617,7 @@ define void @test_half_log2(half %a0, ptr %p0) nounwind {
627617; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
628618; F16C-NEXT: callq log2f@PLT
629619; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
630- ; F16C-NEXT: vmovd %xmm0, %eax
631- ; F16C-NEXT: movw %ax, (%rbx)
620+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
632621; F16C-NEXT: popq %rbx
633622; F16C-NEXT: retq
634623;
@@ -686,8 +675,7 @@ define void @test_half_log10(half %a0, ptr %p0) nounwind {
686675; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
687676; F16C-NEXT: callq log10f@PLT
688677; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
689- ; F16C-NEXT: vmovd %xmm0, %eax
690- ; F16C-NEXT: movw %ax, (%rbx)
678+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
691679; F16C-NEXT: popq %rbx
692680; F16C-NEXT: retq
693681;
@@ -743,8 +731,7 @@ define void @test_half_nearbyint(half %a0, ptr %p0) nounwind {
743731; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
744732; F16C-NEXT: vroundss $12, %xmm0, %xmm0, %xmm0
745733; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
746- ; F16C-NEXT: vmovd %xmm0, %eax
747- ; F16C-NEXT: movw %ax, (%rdi)
734+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
748735; F16C-NEXT: retq
749736;
750737; FP16-LABEL: test_half_nearbyint:
@@ -797,8 +784,7 @@ define void @test_half_pow(half %a0, half %a1, ptr %p0) nounwind {
797784; F16C-NEXT: vcvtph2ps %xmm1, %xmm1
798785; F16C-NEXT: callq powf@PLT
799786; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
800- ; F16C-NEXT: vmovd %xmm0, %eax
801- ; F16C-NEXT: movw %ax, (%rbx)
787+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
802788; F16C-NEXT: popq %rbx
803789; F16C-NEXT: retq
804790;
@@ -876,8 +862,7 @@ define void @test_half_powi(half %a0, i32 %a1, ptr %p0) nounwind {
876862; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
877863; F16C-NEXT: callq __powisf2@PLT
878864; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
879- ; F16C-NEXT: vmovd %xmm0, %eax
880- ; F16C-NEXT: movw %ax, (%rbx)
865+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
881866; F16C-NEXT: popq %rbx
882867; F16C-NEXT: retq
883868;
@@ -943,8 +928,7 @@ define void @test_half_rint(half %a0, ptr %p0) nounwind {
943928; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
944929; F16C-NEXT: vroundss $4, %xmm0, %xmm0, %xmm0
945930; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
946- ; F16C-NEXT: vmovd %xmm0, %eax
947- ; F16C-NEXT: movw %ax, (%rdi)
931+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
948932; F16C-NEXT: retq
949933;
950934; FP16-LABEL: test_half_rint:
@@ -996,8 +980,7 @@ define void @test_half_sin(half %a0, ptr %p0) nounwind {
996980; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
997981; F16C-NEXT: callq sinf@PLT
998982; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
999- ; F16C-NEXT: vmovd %xmm0, %eax
1000- ; F16C-NEXT: movw %ax, (%rbx)
983+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
1001984; F16C-NEXT: popq %rbx
1002985; F16C-NEXT: retq
1003986;
@@ -1053,8 +1036,7 @@ define void @test_half_sqrt(half %a0, ptr %p0) nounwind {
10531036; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
10541037; F16C-NEXT: vsqrtss %xmm0, %xmm0, %xmm0
10551038; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
1056- ; F16C-NEXT: vmovd %xmm0, %eax
1057- ; F16C-NEXT: movw %ax, (%rdi)
1039+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
10581040; F16C-NEXT: retq
10591041;
10601042; FP16-LABEL: test_half_sqrt:
@@ -1107,8 +1089,7 @@ define void @test_half_tan(half %a0, ptr %p0) nounwind {
11071089; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
11081090; F16C-NEXT: callq tanf@PLT
11091091; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
1110- ; F16C-NEXT: vmovd %xmm0, %eax
1111- ; F16C-NEXT: movw %ax, (%rbx)
1092+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rbx)
11121093; F16C-NEXT: popq %rbx
11131094; F16C-NEXT: retq
11141095;
@@ -1164,8 +1145,7 @@ define void @test_half_trunc(half %a0, ptr %p0) nounwind {
11641145; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
11651146; F16C-NEXT: vroundss $11, %xmm0, %xmm0, %xmm0
11661147; F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
1167- ; F16C-NEXT: vmovd %xmm0, %eax
1168- ; F16C-NEXT: movw %ax, (%rdi)
1148+ ; F16C-NEXT: vpextrw $0, %xmm0, (%rdi)
11691149; F16C-NEXT: retq
11701150;
11711151; FP16-LABEL: test_half_trunc:
0 commit comments