Skip to content

Commit 4746ebd

Browse files
committed
The patch updates sched numbers for YMM AVX instrs such as VMOVx, VORx, VXOR, VPERMILx, VBROADCASTx, etc.
PR32857 should be closed. Differential Revision: https://reviews.llvm.org/D39227 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317196 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 6a45ba3 commit 4746ebd

File tree

4 files changed

+129
-36
lines changed

4 files changed

+129
-36
lines changed

lib/Target/X86/X86ScheduleBtVer2.td

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,99 @@ def WriteVCVTPDYLd: SchedWriteRes<[JLAGU, JSTC, JFPU01]> {
573573
def : InstRW<[WriteVCVTPDYLd, ReadAfterLd], (instregex "VCVTPD2(DQ|PS)Yrm")>;
574574
def : InstRW<[WriteVCVTPDYLd, ReadAfterLd], (instregex "VCVTTPD2DQYrm")>;
575575

576+
def WriteVBlendVPY: SchedWriteRes<[JFPU01]> {
577+
let Latency = 3;
578+
let ResourceCycles = [6];
579+
}
580+
def : InstRW<[WriteVBlendVPY], (instregex "VBLENDVP(S|D)Yrr", "VPERMILP(D|S)Yrr")>;
581+
582+
def WriteVBlendVPYLd: SchedWriteRes<[JLAGU, JFPU01]> {
583+
let Latency = 8;
584+
let ResourceCycles = [1, 6];
585+
}
586+
def : InstRW<[WriteVBlendVPYLd, ReadAfterLd], (instregex "VBLENDVP(S|D)Yrm")>;
587+
588+
def WriteVBROADCASTYLd: SchedWriteRes<[JLAGU, JFPU01]> {
589+
let Latency = 6;
590+
let ResourceCycles = [1, 4];
591+
}
592+
def : InstRW<[WriteVBROADCASTYLd, ReadAfterLd], (instregex "VBROADCASTS(S|D)Yrm")>;
593+
594+
def WriteFPAY22: SchedWriteRes<[JFPU0]> {
595+
let Latency = 2;
596+
let ResourceCycles = [2];
597+
}
598+
def : InstRW<[WriteFPAY22], (instregex "VCMPP(S|D)Yrri", "VM(AX|IN)P(D|S)Yrr")>;
599+
600+
def WriteFPAY22Ld: SchedWriteRes<[JLAGU, JFPU0]> {
601+
let Latency = 7;
602+
let ResourceCycles = [1, 2];
603+
}
604+
def : InstRW<[WriteFPAY22Ld, ReadAfterLd], (instregex "VCMPP(S|D)Yrmi", "VM(AX|IN)P(D|S)Yrm")>;
605+
606+
def WriteVHAddSubY: SchedWriteRes<[JFPU0]> {
607+
let Latency = 3;
608+
let ResourceCycles = [2];
609+
}
610+
def : InstRW<[WriteVHAddSubY], (instregex "VH(ADD|SUB)P(D|S)Yrr")>;
611+
612+
def WriteVHAddSubYLd: SchedWriteRes<[JLAGU, JFPU0]> {
613+
let Latency = 8;
614+
let ResourceCycles = [1, 2];
615+
}
616+
def : InstRW<[WriteVHAddSubYLd], (instregex "VH(ADD|SUB)P(D|S)Yrm")>;
617+
618+
def WriteVMaskMovLd: SchedWriteRes<[JLAGU,JFPU01]> {
619+
let Latency = 6;
620+
let ResourceCycles = [1, 2];
621+
}
622+
def : InstRW<[WriteVMaskMovLd], (instregex "VMASKMOVP(D|S)rm")>;
623+
624+
def WriteVMaskMovYLd: SchedWriteRes<[JLAGU,JFPU01]> {
625+
let Latency = 6;
626+
let ResourceCycles = [1, 4];
627+
}
628+
def : InstRW<[WriteVMaskMovYLd], (instregex "VMASKMOVP(D|S)Yrm")>;
629+
630+
def WriteVMaskMovSt: SchedWriteRes<[JFPU01,JSAGU]> {
631+
let Latency = 6;
632+
let ResourceCycles = [4, 1];
633+
}
634+
def : InstRW<[WriteVMaskMovSt], (instregex "VMASKMOVP(D|S)mr")>;
635+
636+
def WriteVMaskMovYSt: SchedWriteRes<[JFPU01,JSAGU]> {
637+
let Latency = 6;
638+
let ResourceCycles = [4, 1];
639+
}
640+
def : InstRW<[WriteVMaskMovYSt], (instregex "VMASKMOVP(D|S)Ymr")>;
641+
642+
// TODO: In fact we have latency '2+i'. The +i represents an additional 1 cycle transfer
643+
// operation which moves the floating point result to the integer unit. During this
644+
// additional cycle the floating point unit execution resources are not occupied
645+
// and ALU0 in the integer unit is occupied instead.
646+
def WriteVMOVMSK: SchedWriteRes<[JFPU0]> {
647+
let Latency = 3;
648+
}
649+
def : InstRW<[WriteVMOVMSK], (instregex "VMOVMSKP(D|S)(Y)?rr")>;
650+
651+
// TODO: In fact we have latency '3+i'. The +i represents an additional 1 cycle transfer
652+
// operation which moves the floating point result to the integer unit. During this
653+
// additional cycle the floating point unit execution resources are not occupied
654+
// and ALU0 in the integer unit is occupied instead.
655+
def WriteVTESTY: SchedWriteRes<[JFPU01, JFPU0]> {
656+
let Latency = 4;
657+
let ResourceCycles = [4, 2];
658+
}
659+
def : InstRW<[WriteVTESTY], (instregex "VTESTP(S|D)Yrr")>;
660+
def : InstRW<[WriteVTESTY], (instregex "VPTESTYrr")>;
661+
662+
def WriteVTESTYLd: SchedWriteRes<[JLAGU, JFPU01, JFPU0]> {
663+
let Latency = 9;
664+
let ResourceCycles = [1, 4, 2];
665+
}
666+
def : InstRW<[WriteVTESTYLd], (instregex "VTESTP(S|D)Yrm")>;
667+
def : InstRW<[WriteVTESTYLd], (instregex "VPTESTYrm")>;
668+
576669
def WriteVSQRTYPD: SchedWriteRes<[JFPU1]> {
577670
let Latency = 54;
578671
let ResourceCycles = [54];

test/CodeGen/X86/avx-schedule.ll

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -655,8 +655,8 @@ define <4 x double> @test_blendvpd(<4 x double> %a0, <4 x double> %a1, <4 x doub
655655
;
656656
; BTVER2-LABEL: test_blendvpd:
657657
; BTVER2: # BB#0:
658-
; BTVER2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [2:1.00]
659-
; BTVER2-NEXT: vblendvpd %ymm2, (%rdi), %ymm0, %ymm0 # sched: [7:1.00]
658+
; BTVER2-NEXT: vblendvpd %ymm2, %ymm1, %ymm0, %ymm0 # sched: [3:3.00]
659+
; BTVER2-NEXT: vblendvpd %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:3.00]
660660
; BTVER2-NEXT: retq # sched: [4:1.00]
661661
;
662662
; ZNVER1-LABEL: test_blendvpd:
@@ -710,8 +710,8 @@ define <8 x float> @test_blendvps(<8 x float> %a0, <8 x float> %a1, <8 x float>
710710
;
711711
; BTVER2-LABEL: test_blendvps:
712712
; BTVER2: # BB#0:
713-
; BTVER2-NEXT: vblendvps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [2:1.00]
714-
; BTVER2-NEXT: vblendvps %ymm2, (%rdi), %ymm0, %ymm0 # sched: [7:1.00]
713+
; BTVER2-NEXT: vblendvps %ymm2, %ymm1, %ymm0, %ymm0 # sched: [3:3.00]
714+
; BTVER2-NEXT: vblendvps %ymm2, (%rdi), %ymm0, %ymm0 # sched: [8:3.00]
715715
; BTVER2-NEXT: retq # sched: [4:1.00]
716716
;
717717
; ZNVER1-LABEL: test_blendvps:
@@ -804,7 +804,7 @@ define <4 x double> @test_broadcastsd_ymm(double *%a0) {
804804
;
805805
; BTVER2-LABEL: test_broadcastsd_ymm:
806806
; BTVER2: # BB#0:
807-
; BTVER2-NEXT: vbroadcastsd (%rdi), %ymm0 # sched: [6:1.00]
807+
; BTVER2-NEXT: vbroadcastsd (%rdi), %ymm0 # sched: [6:2.00]
808808
; BTVER2-NEXT: retq # sched: [4:1.00]
809809
;
810810
; ZNVER1-LABEL: test_broadcastsd_ymm:
@@ -896,7 +896,7 @@ define <8 x float> @test_broadcastss_ymm(float *%a0) {
896896
;
897897
; BTVER2-LABEL: test_broadcastss_ymm:
898898
; BTVER2: # BB#0:
899-
; BTVER2-NEXT: vbroadcastss (%rdi), %ymm0 # sched: [6:1.00]
899+
; BTVER2-NEXT: vbroadcastss (%rdi), %ymm0 # sched: [6:2.00]
900900
; BTVER2-NEXT: retq # sched: [4:1.00]
901901
;
902902
; ZNVER1-LABEL: test_broadcastss_ymm:
@@ -956,8 +956,8 @@ define <4 x double> @test_cmppd(<4 x double> %a0, <4 x double> %a1, <4 x double>
956956
;
957957
; BTVER2-LABEL: test_cmppd:
958958
; BTVER2: # BB#0:
959-
; BTVER2-NEXT: vcmpeqpd %ymm1, %ymm0, %ymm1 # sched: [3:1.00]
960-
; BTVER2-NEXT: vcmpeqpd (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
959+
; BTVER2-NEXT: vcmpeqpd %ymm1, %ymm0, %ymm1 # sched: [2:2.00]
960+
; BTVER2-NEXT: vcmpeqpd (%rdi), %ymm0, %ymm0 # sched: [7:2.00]
961961
; BTVER2-NEXT: vorpd %ymm0, %ymm1, %ymm0 # sched: [1:0.50]
962962
; BTVER2-NEXT: retq # sched: [4:1.00]
963963
;
@@ -1024,8 +1024,8 @@ define <8 x float> @test_cmpps(<8 x float> %a0, <8 x float> %a1, <8 x float> *%a
10241024
;
10251025
; BTVER2-LABEL: test_cmpps:
10261026
; BTVER2: # BB#0:
1027-
; BTVER2-NEXT: vcmpeqps %ymm1, %ymm0, %ymm1 # sched: [3:1.00]
1028-
; BTVER2-NEXT: vcmpeqps (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
1027+
; BTVER2-NEXT: vcmpeqps %ymm1, %ymm0, %ymm1 # sched: [2:2.00]
1028+
; BTVER2-NEXT: vcmpeqps (%rdi), %ymm0, %ymm0 # sched: [7:2.00]
10291029
; BTVER2-NEXT: vorps %ymm0, %ymm1, %ymm0 # sched: [1:0.50]
10301030
; BTVER2-NEXT: retq # sched: [4:1.00]
10311031
;
@@ -2089,8 +2089,8 @@ define <2 x double> @test_maskmovpd(i8* %a0, <2 x i64> %a1, <2 x double> %a2) {
20892089
;
20902090
; BTVER2-LABEL: test_maskmovpd:
20912091
; BTVER2: # BB#0:
2092-
; BTVER2-NEXT: vmaskmovpd (%rdi), %xmm0, %xmm2
2093-
; BTVER2-NEXT: vmaskmovpd %xmm1, %xmm0, (%rdi)
2092+
; BTVER2-NEXT: vmaskmovpd (%rdi), %xmm0, %xmm2 # sched: [6:1.00]
2093+
; BTVER2-NEXT: vmaskmovpd %xmm1, %xmm0, (%rdi) # sched: [6:2.00]
20942094
; BTVER2-NEXT: vmovapd %xmm2, %xmm0 # sched: [1:0.50]
20952095
; BTVER2-NEXT: retq # sched: [4:1.00]
20962096
;
@@ -2152,8 +2152,8 @@ define <4 x double> @test_maskmovpd_ymm(i8* %a0, <4 x i64> %a1, <4 x double> %a2
21522152
;
21532153
; BTVER2-LABEL: test_maskmovpd_ymm:
21542154
; BTVER2: # BB#0:
2155-
; BTVER2-NEXT: vmaskmovpd (%rdi), %ymm0, %ymm2
2156-
; BTVER2-NEXT: vmaskmovpd %ymm1, %ymm0, (%rdi)
2155+
; BTVER2-NEXT: vmaskmovpd (%rdi), %ymm0, %ymm2 # sched: [6:2.00]
2156+
; BTVER2-NEXT: vmaskmovpd %ymm1, %ymm0, (%rdi) # sched: [6:2.00]
21572157
; BTVER2-NEXT: vmovapd %ymm2, %ymm0 # sched: [1:0.50]
21582158
; BTVER2-NEXT: retq # sched: [4:1.00]
21592159
;
@@ -2215,8 +2215,8 @@ define <4 x float> @test_maskmovps(i8* %a0, <4 x i32> %a1, <4 x float> %a2) {
22152215
;
22162216
; BTVER2-LABEL: test_maskmovps:
22172217
; BTVER2: # BB#0:
2218-
; BTVER2-NEXT: vmaskmovps (%rdi), %xmm0, %xmm2
2219-
; BTVER2-NEXT: vmaskmovps %xmm1, %xmm0, (%rdi)
2218+
; BTVER2-NEXT: vmaskmovps (%rdi), %xmm0, %xmm2 # sched: [6:1.00]
2219+
; BTVER2-NEXT: vmaskmovps %xmm1, %xmm0, (%rdi) # sched: [6:2.00]
22202220
; BTVER2-NEXT: vmovaps %xmm2, %xmm0 # sched: [1:0.50]
22212221
; BTVER2-NEXT: retq # sched: [4:1.00]
22222222
;
@@ -2278,8 +2278,8 @@ define <8 x float> @test_maskmovps_ymm(i8* %a0, <8 x i32> %a1, <8 x float> %a2)
22782278
;
22792279
; BTVER2-LABEL: test_maskmovps_ymm:
22802280
; BTVER2: # BB#0:
2281-
; BTVER2-NEXT: vmaskmovps (%rdi), %ymm0, %ymm2
2282-
; BTVER2-NEXT: vmaskmovps %ymm1, %ymm0, (%rdi)
2281+
; BTVER2-NEXT: vmaskmovps (%rdi), %ymm0, %ymm2 # sched: [6:2.00]
2282+
; BTVER2-NEXT: vmaskmovps %ymm1, %ymm0, (%rdi) # sched: [6:2.00]
22832283
; BTVER2-NEXT: vmovaps %ymm2, %ymm0 # sched: [1:0.50]
22842284
; BTVER2-NEXT: retq # sched: [4:1.00]
22852285
;
@@ -2335,8 +2335,8 @@ define <4 x double> @test_maxpd(<4 x double> %a0, <4 x double> %a1, <4 x double>
23352335
;
23362336
; BTVER2-LABEL: test_maxpd:
23372337
; BTVER2: # BB#0:
2338-
; BTVER2-NEXT: vmaxpd %ymm1, %ymm0, %ymm0 # sched: [3:1.00]
2339-
; BTVER2-NEXT: vmaxpd (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
2338+
; BTVER2-NEXT: vmaxpd %ymm1, %ymm0, %ymm0 # sched: [2:2.00]
2339+
; BTVER2-NEXT: vmaxpd (%rdi), %ymm0, %ymm0 # sched: [7:2.00]
23402340
; BTVER2-NEXT: retq # sched: [4:1.00]
23412341
;
23422342
; ZNVER1-LABEL: test_maxpd:
@@ -2390,8 +2390,8 @@ define <8 x float> @test_maxps(<8 x float> %a0, <8 x float> %a1, <8 x float> *%a
23902390
;
23912391
; BTVER2-LABEL: test_maxps:
23922392
; BTVER2: # BB#0:
2393-
; BTVER2-NEXT: vmaxps %ymm1, %ymm0, %ymm0 # sched: [3:1.00]
2394-
; BTVER2-NEXT: vmaxps (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
2393+
; BTVER2-NEXT: vmaxps %ymm1, %ymm0, %ymm0 # sched: [2:2.00]
2394+
; BTVER2-NEXT: vmaxps (%rdi), %ymm0, %ymm0 # sched: [7:2.00]
23952395
; BTVER2-NEXT: retq # sched: [4:1.00]
23962396
;
23972397
; ZNVER1-LABEL: test_maxps:
@@ -2445,8 +2445,8 @@ define <4 x double> @test_minpd(<4 x double> %a0, <4 x double> %a1, <4 x double>
24452445
;
24462446
; BTVER2-LABEL: test_minpd:
24472447
; BTVER2: # BB#0:
2448-
; BTVER2-NEXT: vminpd %ymm1, %ymm0, %ymm0 # sched: [3:1.00]
2449-
; BTVER2-NEXT: vminpd (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
2448+
; BTVER2-NEXT: vminpd %ymm1, %ymm0, %ymm0 # sched: [2:2.00]
2449+
; BTVER2-NEXT: vminpd (%rdi), %ymm0, %ymm0 # sched: [7:2.00]
24502450
; BTVER2-NEXT: retq # sched: [4:1.00]
24512451
;
24522452
; ZNVER1-LABEL: test_minpd:
@@ -2500,8 +2500,8 @@ define <8 x float> @test_minps(<8 x float> %a0, <8 x float> %a1, <8 x float> *%a
25002500
;
25012501
; BTVER2-LABEL: test_minps:
25022502
; BTVER2: # BB#0:
2503-
; BTVER2-NEXT: vminps %ymm1, %ymm0, %ymm0 # sched: [3:1.00]
2504-
; BTVER2-NEXT: vminps (%rdi), %ymm0, %ymm0 # sched: [8:1.00]
2503+
; BTVER2-NEXT: vminps %ymm1, %ymm0, %ymm0 # sched: [2:2.00]
2504+
; BTVER2-NEXT: vminps (%rdi), %ymm0, %ymm0 # sched: [7:2.00]
25052505
; BTVER2-NEXT: retq # sched: [4:1.00]
25062506
;
25072507
; ZNVER1-LABEL: test_minps:
@@ -2742,7 +2742,7 @@ define i32 @test_movmskpd(<4 x double> %a0) {
27422742
;
27432743
; BTVER2-LABEL: test_movmskpd:
27442744
; BTVER2: # BB#0:
2745-
; BTVER2-NEXT: vmovmskpd %ymm0, %eax # sched: [1:0.50]
2745+
; BTVER2-NEXT: vmovmskpd %ymm0, %eax # sched: [3:1.00]
27462746
; BTVER2-NEXT: retq # sched: [4:1.00]
27472747
;
27482748
; ZNVER1-LABEL: test_movmskpd:
@@ -2794,7 +2794,7 @@ define i32 @test_movmskps(<8 x float> %a0) {
27942794
;
27952795
; BTVER2-LABEL: test_movmskps:
27962796
; BTVER2: # BB#0:
2797-
; BTVER2-NEXT: vmovmskps %ymm0, %eax # sched: [1:0.50]
2797+
; BTVER2-NEXT: vmovmskps %ymm0, %eax # sched: [3:1.00]
27982798
; BTVER2-NEXT: retq # sched: [4:1.00]
27992799
;
28002800
; ZNVER1-LABEL: test_movmskps:
@@ -3818,7 +3818,7 @@ define <4 x double> @test_permilvarpd_ymm(<4 x double> %a0, <4 x i64> %a1, <4 x
38183818
;
38193819
; BTVER2-LABEL: test_permilvarpd_ymm:
38203820
; BTVER2: # BB#0:
3821-
; BTVER2-NEXT: vpermilpd %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
3821+
; BTVER2-NEXT: vpermilpd %ymm1, %ymm0, %ymm0 # sched: [3:3.00]
38223822
; BTVER2-NEXT: vpermilpd (%rdi), %ymm0, %ymm0 # sched: [6:1.00]
38233823
; BTVER2-NEXT: retq # sched: [4:1.00]
38243824
;
@@ -3928,7 +3928,7 @@ define <8 x float> @test_permilvarps_ymm(<8 x float> %a0, <8 x i32> %a1, <8 x i3
39283928
;
39293929
; BTVER2-LABEL: test_permilvarps_ymm:
39303930
; BTVER2: # BB#0:
3931-
; BTVER2-NEXT: vpermilps %ymm1, %ymm0, %ymm0 # sched: [1:0.50]
3931+
; BTVER2-NEXT: vpermilps %ymm1, %ymm0, %ymm0 # sched: [3:3.00]
39323932
; BTVER2-NEXT: vpermilps (%rdi), %ymm0, %ymm0 # sched: [6:1.00]
39333933
; BTVER2-NEXT: retq # sched: [4:1.00]
39343934
;
@@ -4697,9 +4697,9 @@ define i32 @test_testpd_ymm(<4 x double> %a0, <4 x double> %a1, <4 x double> *%a
46974697
; BTVER2-LABEL: test_testpd_ymm:
46984698
; BTVER2: # BB#0:
46994699
; BTVER2-NEXT: xorl %eax, %eax # sched: [1:0.50]
4700-
; BTVER2-NEXT: vtestpd %ymm1, %ymm0 # sched: [1:0.50]
4700+
; BTVER2-NEXT: vtestpd %ymm1, %ymm0 # sched: [4:3.00]
47014701
; BTVER2-NEXT: setb %al # sched: [1:0.50]
4702-
; BTVER2-NEXT: vtestpd (%rdi), %ymm0 # sched: [6:1.00]
4702+
; BTVER2-NEXT: vtestpd (%rdi), %ymm0 # sched: [9:3.00]
47034703
; BTVER2-NEXT: adcl $0, %eax # sched: [1:0.50]
47044704
; BTVER2-NEXT: retq # sched: [4:1.00]
47054705
;
@@ -4864,9 +4864,9 @@ define i32 @test_testps_ymm(<8 x float> %a0, <8 x float> %a1, <8 x float> *%a2)
48644864
; BTVER2-LABEL: test_testps_ymm:
48654865
; BTVER2: # BB#0:
48664866
; BTVER2-NEXT: xorl %eax, %eax # sched: [1:0.50]
4867-
; BTVER2-NEXT: vtestps %ymm1, %ymm0 # sched: [1:0.50]
4867+
; BTVER2-NEXT: vtestps %ymm1, %ymm0 # sched: [4:3.00]
48684868
; BTVER2-NEXT: setb %al # sched: [1:0.50]
4869-
; BTVER2-NEXT: vtestps (%rdi), %ymm0 # sched: [6:1.00]
4869+
; BTVER2-NEXT: vtestps (%rdi), %ymm0 # sched: [9:3.00]
48704870
; BTVER2-NEXT: adcl $0, %eax # sched: [1:0.50]
48714871
; BTVER2-NEXT: retq # sched: [4:1.00]
48724872
;

test/CodeGen/X86/sse-schedule.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1942,7 +1942,7 @@ define i32 @test_movmskps(<4 x float> %a0) {
19421942
;
19431943
; BTVER2-LABEL: test_movmskps:
19441944
; BTVER2: # BB#0:
1945-
; BTVER2-NEXT: vmovmskps %xmm0, %eax # sched: [1:0.50]
1945+
; BTVER2-NEXT: vmovmskps %xmm0, %eax # sched: [3:1.00]
19461946
; BTVER2-NEXT: retq # sched: [4:1.00]
19471947
;
19481948
; ZNVER1-LABEL: test_movmskps:

test/CodeGen/X86/sse2-schedule.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3179,7 +3179,7 @@ define i32 @test_movmskpd(<2 x double> %a0) {
31793179
;
31803180
; BTVER2-LABEL: test_movmskpd:
31813181
; BTVER2: # BB#0:
3182-
; BTVER2-NEXT: vmovmskpd %xmm0, %eax # sched: [1:0.50]
3182+
; BTVER2-NEXT: vmovmskpd %xmm0, %eax # sched: [3:1.00]
31833183
; BTVER2-NEXT: retq # sched: [4:1.00]
31843184
;
31853185
; ZNVER1-LABEL: test_movmskpd:

0 commit comments

Comments
 (0)