mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
[X86][BtVer2] Model ymm move as double pumped instructions
We still need to handle mmx/xmm moves as 'decode-only' no-pipe instructions llvm-svn: 332109
This commit is contained in:
parent
ac7024c937
commit
de0ff1af6e
@ -279,11 +279,11 @@ defm : X86WriteRes<WriteFStoreY, [JSAGU, JFPU1, JSTC], 1, [1, 1, 1], 1>;
|
||||
defm : X86WriteRes<WriteFMaskedStore, [JSAGU, JFPU01, JFPX], 6, [1, 1, 4], 1>;
|
||||
defm : X86WriteRes<WriteFMaskedStoreY, [JSAGU, JFPU01, JFPX], 6, [2, 2, 4], 2>;
|
||||
|
||||
def : WriteRes<WriteFMove, [JFPU01, JFPX]>;
|
||||
def : WriteRes<WriteFMoveX, [JFPU01, JFPX]>;
|
||||
def : WriteRes<WriteFMoveY, [JFPU01, JFPX]>;
|
||||
defm : X86WriteRes<WriteFMove, [JFPU01, JFPX], 1, [1, 1], 1>;
|
||||
defm : X86WriteRes<WriteFMoveX, [JFPU01, JFPX], 1, [1, 1], 1>;
|
||||
defm : X86WriteRes<WriteFMoveY, [JFPU01, JFPX], 1, [2, 2], 2>;
|
||||
|
||||
def : WriteRes<WriteEMMS, [JFPU01, JFPX]> { let Latency = 2; }
|
||||
defm : X86WriteRes<WriteEMMS, [JFPU01, JFPX], 2, [1, 1], 1>;
|
||||
|
||||
defm : JWriteResFpuPair<WriteFAdd, [JFPU0, JFPA], 3>;
|
||||
defm : JWriteResFpuPair<WriteFAddX, [JFPU0, JFPA], 3>;
|
||||
@ -415,9 +415,9 @@ defm : X86WriteRes<WriteVecStoreY, [JSAGU, JFPU1, JSTC], 1, [1, 1, 1],
|
||||
defm : X86WriteRes<WriteVecMaskedStore, [JSAGU, JFPU01, JVALU], 6, [1, 1, 4], 1>;
|
||||
defm : X86WriteRes<WriteVecMaskedStoreY, [JSAGU, JFPU01, JVALU], 6, [2, 2, 4], 2>;
|
||||
|
||||
def : WriteRes<WriteVecMove, [JFPU01, JVALU]>;
|
||||
def : WriteRes<WriteVecMoveX, [JFPU01, JVALU]>;
|
||||
def : WriteRes<WriteVecMoveY, [JFPU01, JVALU]>;
|
||||
defm : X86WriteRes<WriteVecMove, [JFPU01, JVALU], 1, [1, 1], 1>;
|
||||
defm : X86WriteRes<WriteVecMoveX, [JFPU01, JVALU], 1, [1, 1], 1>;
|
||||
defm : X86WriteRes<WriteVecMoveY, [JFPU01, JVALU], 1, [2, 2], 2>;
|
||||
|
||||
defm : JWriteResFpuPair<WriteVecALU, [JFPU01, JVALU], 1>;
|
||||
defm : JWriteResFpuPair<WriteVecALUX, [JFPU01, JVALU], 1>;
|
||||
|
@ -2159,7 +2159,7 @@ define <4 x double> @test_maskmovpd_ymm(i8* %a0, <4 x i64> %a1, <4 x double> %a2
|
||||
; BTVER2: # %bb.0:
|
||||
; BTVER2-NEXT: vmaskmovpd (%rdi), %ymm0, %ymm2 # sched: [6:2.00]
|
||||
; BTVER2-NEXT: vmaskmovpd %ymm1, %ymm0, (%rdi) # sched: [6:2.00]
|
||||
; BTVER2-NEXT: vmovapd %ymm2, %ymm0 # sched: [1:0.50]
|
||||
; BTVER2-NEXT: vmovapd %ymm2, %ymm0 # sched: [1:1.00]
|
||||
; BTVER2-NEXT: retq # sched: [4:1.00]
|
||||
;
|
||||
; ZNVER1-LABEL: test_maskmovpd_ymm:
|
||||
@ -2285,7 +2285,7 @@ define <8 x float> @test_maskmovps_ymm(i8* %a0, <8 x i32> %a1, <8 x float> %a2)
|
||||
; BTVER2: # %bb.0:
|
||||
; BTVER2-NEXT: vmaskmovps (%rdi), %ymm0, %ymm2 # sched: [6:2.00]
|
||||
; BTVER2-NEXT: vmaskmovps %ymm1, %ymm0, (%rdi) # sched: [6:2.00]
|
||||
; BTVER2-NEXT: vmovaps %ymm2, %ymm0 # sched: [1:0.50]
|
||||
; BTVER2-NEXT: vmovaps %ymm2, %ymm0 # sched: [1:1.00]
|
||||
; BTVER2-NEXT: retq # sched: [4:1.00]
|
||||
;
|
||||
; ZNVER1-LABEL: test_maskmovps_ymm:
|
||||
|
@ -1243,13 +1243,13 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 1 0.50 vmovapd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovapd %xmm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovapd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovapd %ymm0, %ymm2
|
||||
# CHECK-NEXT: 2 1 1.00 vmovapd %ymm0, %ymm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovapd %ymm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovapd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovaps %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovaps %xmm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovaps (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovaps %ymm0, %ymm2
|
||||
# CHECK-NEXT: 2 1 1.00 vmovaps %ymm0, %ymm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovaps %ymm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovaps (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovd %eax, %xmm2
|
||||
@ -1263,13 +1263,13 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 1 0.50 vmovdqa %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovdqa %xmm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovdqa (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovdqa %ymm0, %ymm2
|
||||
# CHECK-NEXT: 2 1 1.00 vmovdqa %ymm0, %ymm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovdqa %ymm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovdqa (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovdqu %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovdqu %xmm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovdqu (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovdqu %ymm0, %ymm2
|
||||
# CHECK-NEXT: 2 1 1.00 vmovdqu %ymm0, %ymm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovdqu %ymm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovdqu (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovhlps %xmm0, %xmm1, %xmm2
|
||||
@ -1316,13 +1316,13 @@ vzeroupper
|
||||
# CHECK-NEXT: 1 1 0.50 vmovupd %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovupd %xmm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovupd (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovupd %ymm0, %ymm2
|
||||
# CHECK-NEXT: 2 1 1.00 vmovupd %ymm0, %ymm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovupd %ymm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovupd (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovups %xmm0, %xmm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovups %xmm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovups (%rax), %xmm2
|
||||
# CHECK-NEXT: 1 1 0.50 vmovups %ymm0, %ymm2
|
||||
# CHECK-NEXT: 2 1 1.00 vmovups %ymm0, %ymm2
|
||||
# CHECK-NEXT: 1 1 1.00 * vmovups %ymm0, (%rax)
|
||||
# CHECK-NEXT: 1 5 1.00 * vmovups (%rax), %ymm2
|
||||
# CHECK-NEXT: 1 3 2.00 vmpsadbw $1, %xmm0, %xmm1, %xmm2
|
||||
@ -1720,7 +1720,7 @@ vzeroupper
|
||||
|
||||
# CHECK: Resource pressure per iteration:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
|
||||
# CHECK-NEXT: 48.00 2.00 - 347.50 907.50 394.00 406.00 381.00 - 43.00 122.00 117.50 117.50 38.00
|
||||
# CHECK-NEXT: 48.00 2.00 - 349.50 909.50 397.00 409.00 381.00 - 43.00 122.00 118.50 118.50 38.00
|
||||
|
||||
# CHECK: Resource pressure by instruction:
|
||||
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
|
||||
@ -1949,13 +1949,13 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovapd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovapd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovapd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovapd %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vmovapd %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovapd %ymm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovapd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovaps %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovaps (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovaps %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vmovaps %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovaps %ymm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovaps (%rax), %ymm2
|
||||
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - vmovd %eax, %xmm2
|
||||
@ -1969,13 +1969,13 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqa %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqa %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqa (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqa %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - vmovdqa %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqa %ymm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqa (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqu %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqu %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqu (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vmovdqu %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - 1.00 1.00 - - - - 1.00 1.00 - vmovdqu %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovdqu %ymm0, (%rax)
|
||||
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vmovdqu (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovhlps %xmm0, %xmm1, %xmm2
|
||||
@ -2022,13 +2022,13 @@ vzeroupper
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovupd %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovupd %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovupd (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovupd %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vmovupd %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovupd %ymm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovupd (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovups %xmm0, %xmm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovups %xmm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovups (%rax), %xmm2
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vmovups %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 - - - - - - - vmovups %ymm0, %ymm2
|
||||
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vmovups %ymm0, (%rax)
|
||||
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - vmovups (%rax), %ymm2
|
||||
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 2.00 vmpsadbw $1, %xmm0, %xmm1, %xmm2
|
||||
|
Loading…
Reference in New Issue
Block a user