@@ -12,8 +12,7 @@ define void @test_half_ceil(half %a0, ptr %p0) nounwind {
12
12
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
13
13
; F16C-NEXT: vroundss $10, %xmm0, %xmm0, %xmm0
14
14
; 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)
17
16
; F16C-NEXT: retq
18
17
;
19
18
; FP16-LABEL: test_half_ceil:
@@ -108,8 +107,7 @@ define void @test_half_cos(half %a0, ptr %p0) nounwind {
108
107
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
109
108
; F16C-NEXT: callq cosf@PLT
110
109
; 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)
113
111
; F16C-NEXT: popq %rbx
114
112
; F16C-NEXT: retq
115
113
;
@@ -167,8 +165,7 @@ define void @test_half_exp(half %a0, ptr %p0) nounwind {
167
165
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
168
166
; F16C-NEXT: callq expf@PLT
169
167
; 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)
172
169
; F16C-NEXT: popq %rbx
173
170
; F16C-NEXT: retq
174
171
;
@@ -226,8 +223,7 @@ define void @test_half_exp2(half %a0, ptr %p0) nounwind {
226
223
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
227
224
; F16C-NEXT: callq exp2f@PLT
228
225
; 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)
231
227
; F16C-NEXT: popq %rbx
232
228
; F16C-NEXT: retq
233
229
;
@@ -285,8 +281,7 @@ define void @test_half_exp10(half %a0, ptr %p0) nounwind {
285
281
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
286
282
; F16C-NEXT: callq exp10f@PLT
287
283
; 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)
290
285
; F16C-NEXT: popq %rbx
291
286
; F16C-NEXT: retq
292
287
;
@@ -342,8 +337,7 @@ define void @test_half_fabs(half %a0, ptr %p0) nounwind {
342
337
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
343
338
; F16C-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
344
339
; 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)
347
341
; F16C-NEXT: retq
348
342
;
349
343
; FP16-LABEL: test_half_fabs:
@@ -383,8 +377,7 @@ define void @test_half_floor(half %a0, ptr %p0) nounwind {
383
377
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
384
378
; F16C-NEXT: vroundss $9, %xmm0, %xmm0, %xmm0
385
379
; 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)
388
381
; F16C-NEXT: retq
389
382
;
390
383
; FP16-LABEL: test_half_floor:
@@ -438,8 +431,7 @@ define void @test_half_fma(half %a0, half %a1, half %a2, ptr %p0) nounwind {
438
431
; F16C-NEXT: vcvtph2ps %xmm2, %xmm2
439
432
; F16C-NEXT: callq fmaf@PLT
440
433
; 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)
443
435
; F16C-NEXT: popq %rbx
444
436
; F16C-NEXT: retq
445
437
;
@@ -525,8 +517,7 @@ define void @test_half_fneg(half %a0, ptr %p0) nounwind {
525
517
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
526
518
; F16C-NEXT: vxorps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
527
519
; 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)
530
521
; F16C-NEXT: retq
531
522
;
532
523
; FP16-LABEL: test_half_fneg:
@@ -568,8 +559,7 @@ define void @test_half_log(half %a0, ptr %p0) nounwind {
568
559
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
569
560
; F16C-NEXT: callq logf@PLT
570
561
; 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)
573
563
; F16C-NEXT: popq %rbx
574
564
; F16C-NEXT: retq
575
565
;
@@ -627,8 +617,7 @@ define void @test_half_log2(half %a0, ptr %p0) nounwind {
627
617
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
628
618
; F16C-NEXT: callq log2f@PLT
629
619
; 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)
632
621
; F16C-NEXT: popq %rbx
633
622
; F16C-NEXT: retq
634
623
;
@@ -686,8 +675,7 @@ define void @test_half_log10(half %a0, ptr %p0) nounwind {
686
675
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
687
676
; F16C-NEXT: callq log10f@PLT
688
677
; 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)
691
679
; F16C-NEXT: popq %rbx
692
680
; F16C-NEXT: retq
693
681
;
@@ -743,8 +731,7 @@ define void @test_half_nearbyint(half %a0, ptr %p0) nounwind {
743
731
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
744
732
; F16C-NEXT: vroundss $12, %xmm0, %xmm0, %xmm0
745
733
; 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)
748
735
; F16C-NEXT: retq
749
736
;
750
737
; FP16-LABEL: test_half_nearbyint:
@@ -797,8 +784,7 @@ define void @test_half_pow(half %a0, half %a1, ptr %p0) nounwind {
797
784
; F16C-NEXT: vcvtph2ps %xmm1, %xmm1
798
785
; F16C-NEXT: callq powf@PLT
799
786
; 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)
802
788
; F16C-NEXT: popq %rbx
803
789
; F16C-NEXT: retq
804
790
;
@@ -876,8 +862,7 @@ define void @test_half_powi(half %a0, i32 %a1, ptr %p0) nounwind {
876
862
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
877
863
; F16C-NEXT: callq __powisf2@PLT
878
864
; 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)
881
866
; F16C-NEXT: popq %rbx
882
867
; F16C-NEXT: retq
883
868
;
@@ -943,8 +928,7 @@ define void @test_half_rint(half %a0, ptr %p0) nounwind {
943
928
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
944
929
; F16C-NEXT: vroundss $4, %xmm0, %xmm0, %xmm0
945
930
; 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)
948
932
; F16C-NEXT: retq
949
933
;
950
934
; FP16-LABEL: test_half_rint:
@@ -996,8 +980,7 @@ define void @test_half_sin(half %a0, ptr %p0) nounwind {
996
980
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
997
981
; F16C-NEXT: callq sinf@PLT
998
982
; 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)
1001
984
; F16C-NEXT: popq %rbx
1002
985
; F16C-NEXT: retq
1003
986
;
@@ -1053,8 +1036,7 @@ define void @test_half_sqrt(half %a0, ptr %p0) nounwind {
1053
1036
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
1054
1037
; F16C-NEXT: vsqrtss %xmm0, %xmm0, %xmm0
1055
1038
; 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)
1058
1040
; F16C-NEXT: retq
1059
1041
;
1060
1042
; FP16-LABEL: test_half_sqrt:
@@ -1107,8 +1089,7 @@ define void @test_half_tan(half %a0, ptr %p0) nounwind {
1107
1089
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
1108
1090
; F16C-NEXT: callq tanf@PLT
1109
1091
; 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)
1112
1093
; F16C-NEXT: popq %rbx
1113
1094
; F16C-NEXT: retq
1114
1095
;
@@ -1164,8 +1145,7 @@ define void @test_half_trunc(half %a0, ptr %p0) nounwind {
1164
1145
; F16C-NEXT: vcvtph2ps %xmm0, %xmm0
1165
1146
; F16C-NEXT: vroundss $11, %xmm0, %xmm0, %xmm0
1166
1147
; 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)
1169
1149
; F16C-NEXT: retq
1170
1150
;
1171
1151
; FP16-LABEL: test_half_trunc:
0 commit comments