def JWriteFHAddY: SchedWriteRes<[JFPU0, JFPA]> {
let Latency = 3;
let ResourceCycles = [2, 2];
+ let NumMicroOps = 2;
}
def : InstRW<[JWriteFHAddY], (instrs VHADDPDYrr, VHADDPSYrr, VHSUBPDYrr, VHSUBPSYrr)>;
def JWriteFHAddYLd: SchedWriteRes<[JLAGU, JFPU0, JFPA]> {
let Latency = 8;
let ResourceCycles = [2, 2, 2];
+ let NumMicroOps = 2;
}
def : InstRW<[JWriteFHAddYLd, ReadAfterLd], (instrs VHADDPDYrm, VHADDPSYrm,
VHSUBPDYrm, VHSUBPSYrm)>;
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 1 0.50 vshufps $0, %xmm0, %xmm1, %xmm1
-# CHECK-NEXT: 1 8 2.00 * vhaddps (%rdi), %ymm1, %ymm2
+# CHECK-NEXT: 2 8 2.00 * vhaddps (%rdi), %ymm1, %ymm2
# CHECK: Timeline view:
-# CHECK-NEXT: 0
+# CHECK-NEXT: 01
# CHECK-NEXT: Index 0123456789
-# CHECK: [0,0] DeER . . vshufps $0, %xmm0, %xmm1, %xmm1
-# CHECK-NEXT: [0,1] DeeeeeeeeER vhaddps (%rdi), %ymm1, %ymm2
+# CHECK: [0,0] DeER . .. vshufps $0, %xmm0, %xmm1, %xmm1
+# CHECK-NEXT: [0,1] .DeeeeeeeeER vhaddps (%rdi), %ymm1, %ymm2
# CHECK-NEXT: 2 6 1.00 * vextractps $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vhaddpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 8 1.00 * vhaddpd (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 3 2.00 vhaddpd %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1 8 2.00 * vhaddpd (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 2 3 2.00 vhaddpd %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 2 8 2.00 * vhaddpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vhaddps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 8 1.00 * vhaddps (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 3 2.00 vhaddps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1 8 2.00 * vhaddps (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 2 3 2.00 vhaddps %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 2 8 2.00 * vhaddps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vhsubpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 8 1.00 * vhsubpd (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 3 2.00 vhsubpd %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1 8 2.00 * vhsubpd (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 2 3 2.00 vhsubpd %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 2 8 2.00 * vhsubpd (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 3 1.00 vhsubps %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 8 1.00 * vhsubps (%rax), %xmm1, %xmm2
-# CHECK-NEXT: 1 3 2.00 vhsubps %ymm0, %ymm1, %ymm2
-# CHECK-NEXT: 1 8 2.00 * vhsubps (%rax), %ymm1, %ymm2
+# CHECK-NEXT: 2 3 2.00 vhsubps %ymm0, %ymm1, %ymm2
+# CHECK-NEXT: 2 8 2.00 * vhsubps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vinsertf128 $1, %xmm0, %ymm1, %ymm2
# CHECK-NEXT: 1 6 1.00 * vinsertf128 $1, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vinsertps $1, %xmm0, %xmm1, %xmm2