diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-09-23 17:40:24 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-09-23 17:40:24 +0000 |
| commit | 19952add7cea53050ee9b80b99494ebc00acefda (patch) | |
| tree | 3e28dc4d5236a38569952d582e5b1b6c28d120fe /llvm/test/CodeGen/X86 | |
| parent | 22d31c5e0fcb14a8343c2bc61602fb46c3dab84f (diff) | |
| download | bcm5719-llvm-19952add7cea53050ee9b80b99494ebc00acefda.tar.gz bcm5719-llvm-19952add7cea53050ee9b80b99494ebc00acefda.zip | |
[X86] Added missing RCL/RCR schedule overrides to the generic SNB model
The SandyBridge model was missing schedule values for the RCL/RCR values - instead using the (incredibly optimistic) WriteShift (now WriteRotate) defaults.
I've added overrides with more realistic (slow) values, based on a mixture of Agner/instlatx64 numbers and what later Intel models do as well.
This is necessary to allow WriteRotate to be updated to remove other rotate overrides.
It'd probably be a good idea to investigate a WriteRotateCarry class at some point but its not high priority given the unusualness of these instructions.
llvm-svn: 342842
Diffstat (limited to 'llvm/test/CodeGen/X86')
| -rw-r--r-- | llvm/test/CodeGen/X86/schedule-x86_64.ll | 192 |
1 files changed, 96 insertions, 96 deletions
diff --git a/llvm/test/CodeGen/X86/schedule-x86_64.ll b/llvm/test/CodeGen/X86/schedule-x86_64.ll index 0a9eee2ad37..30289cd5661 100644 --- a/llvm/test/CodeGen/X86/schedule-x86_64.ll +++ b/llvm/test/CodeGen/X86/schedule-x86_64.ll @@ -9972,18 +9972,18 @@ define void @test_rcl_rcr_8(i8 %a0, i8 %a1, i8 *%a2) optsize { ; GENERIC-LABEL: test_rcl_rcr_8: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP -; GENERIC-NEXT: rclb %dil # sched: [1:0.50] -; GENERIC-NEXT: rcrb %dil # sched: [1:0.50] -; GENERIC-NEXT: rclb (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrb (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rclb $7, %dil # sched: [1:0.50] -; GENERIC-NEXT: rcrb $7, %dil # sched: [1:0.50] -; GENERIC-NEXT: rclb $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrb $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rclb %cl, %dil # sched: [1:0.50] -; GENERIC-NEXT: rcrb %cl, %dil # sched: [1:0.50] -; GENERIC-NEXT: rclb %cl, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrb %cl, (%rdx) # sched: [6:1.00] +; GENERIC-NEXT: rclb %dil # sched: [2:1.50] +; GENERIC-NEXT: rcrb %dil # sched: [2:1.50] +; GENERIC-NEXT: rclb (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrb (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rclb $7, %dil # sched: [5:4.00] +; GENERIC-NEXT: rcrb $7, %dil # sched: [5:4.00] +; GENERIC-NEXT: rclb $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrb $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rclb %cl, %dil # sched: [5:4.00] +; GENERIC-NEXT: rcrb %cl, %dil # sched: [5:4.00] +; GENERIC-NEXT: rclb %cl, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrb %cl, (%rdx) # sched: [11:3.50] ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retq # sched: [1:1.00] ; @@ -10026,18 +10026,18 @@ define void @test_rcl_rcr_8(i8 %a0, i8 %a1, i8 *%a2) optsize { ; SANDY-LABEL: test_rcl_rcr_8: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP -; SANDY-NEXT: rclb %dil # sched: [1:0.50] -; SANDY-NEXT: rcrb %dil # sched: [1:0.50] -; SANDY-NEXT: rclb (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrb (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rclb $7, %dil # sched: [1:0.50] -; SANDY-NEXT: rcrb $7, %dil # sched: [1:0.50] -; SANDY-NEXT: rclb $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrb $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rclb %cl, %dil # sched: [1:0.50] -; SANDY-NEXT: rcrb %cl, %dil # sched: [1:0.50] -; SANDY-NEXT: rclb %cl, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrb %cl, (%rdx) # sched: [6:1.00] +; SANDY-NEXT: rclb %dil # sched: [2:1.50] +; SANDY-NEXT: rcrb %dil # sched: [2:1.50] +; SANDY-NEXT: rclb (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrb (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rclb $7, %dil # sched: [5:4.00] +; SANDY-NEXT: rcrb $7, %dil # sched: [5:4.00] +; SANDY-NEXT: rclb $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrb $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rclb %cl, %dil # sched: [5:4.00] +; SANDY-NEXT: rcrb %cl, %dil # sched: [5:4.00] +; SANDY-NEXT: rclb %cl, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrb %cl, (%rdx) # sched: [11:3.50] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retq # sched: [1:1.00] ; @@ -10155,18 +10155,18 @@ define void @test_rcl_rcr_16(i16 %a0, i16 %a1, i16 *%a2) optsize { ; GENERIC-LABEL: test_rcl_rcr_16: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP -; GENERIC-NEXT: rclw %di # sched: [1:0.50] -; GENERIC-NEXT: rcrw %di # sched: [1:0.50] -; GENERIC-NEXT: rclw (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrw (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rclw $7, %di # sched: [1:0.50] -; GENERIC-NEXT: rcrw $7, %di # sched: [1:0.50] -; GENERIC-NEXT: rclw $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrw $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rclw %cl, %di # sched: [1:0.50] -; GENERIC-NEXT: rcrw %cl, %di # sched: [1:0.50] -; GENERIC-NEXT: rclw %cl, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrw %cl, (%rdx) # sched: [6:1.00] +; GENERIC-NEXT: rclw %di # sched: [2:1.50] +; GENERIC-NEXT: rcrw %di # sched: [2:1.50] +; GENERIC-NEXT: rclw (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrw (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rclw $7, %di # sched: [5:4.00] +; GENERIC-NEXT: rcrw $7, %di # sched: [5:4.00] +; GENERIC-NEXT: rclw $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrw $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rclw %cl, %di # sched: [5:4.00] +; GENERIC-NEXT: rcrw %cl, %di # sched: [5:4.00] +; GENERIC-NEXT: rclw %cl, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrw %cl, (%rdx) # sched: [11:3.50] ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retq # sched: [1:1.00] ; @@ -10209,18 +10209,18 @@ define void @test_rcl_rcr_16(i16 %a0, i16 %a1, i16 *%a2) optsize { ; SANDY-LABEL: test_rcl_rcr_16: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP -; SANDY-NEXT: rclw %di # sched: [1:0.50] -; SANDY-NEXT: rcrw %di # sched: [1:0.50] -; SANDY-NEXT: rclw (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrw (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rclw $7, %di # sched: [1:0.50] -; SANDY-NEXT: rcrw $7, %di # sched: [1:0.50] -; SANDY-NEXT: rclw $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrw $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rclw %cl, %di # sched: [1:0.50] -; SANDY-NEXT: rcrw %cl, %di # sched: [1:0.50] -; SANDY-NEXT: rclw %cl, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrw %cl, (%rdx) # sched: [6:1.00] +; SANDY-NEXT: rclw %di # sched: [2:1.50] +; SANDY-NEXT: rcrw %di # sched: [2:1.50] +; SANDY-NEXT: rclw (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrw (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rclw $7, %di # sched: [5:4.00] +; SANDY-NEXT: rcrw $7, %di # sched: [5:4.00] +; SANDY-NEXT: rclw $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrw $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rclw %cl, %di # sched: [5:4.00] +; SANDY-NEXT: rcrw %cl, %di # sched: [5:4.00] +; SANDY-NEXT: rclw %cl, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrw %cl, (%rdx) # sched: [11:3.50] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retq # sched: [1:1.00] ; @@ -10338,18 +10338,18 @@ define void @test_rcl_rcr_32(i32 %a0, i32 %a1, i32 *%a2) optsize { ; GENERIC-LABEL: test_rcl_rcr_32: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP -; GENERIC-NEXT: rcll %edi # sched: [1:0.50] -; GENERIC-NEXT: rcrl %edi # sched: [1:0.50] -; GENERIC-NEXT: rcll (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrl (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcll $7, %edi # sched: [1:0.50] -; GENERIC-NEXT: rcrl $7, %edi # sched: [1:0.50] -; GENERIC-NEXT: rcll $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrl $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcll %cl, %edi # sched: [1:0.50] -; GENERIC-NEXT: rcrl %cl, %edi # sched: [1:0.50] -; GENERIC-NEXT: rcll %cl, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrl %cl, (%rdx) # sched: [6:1.00] +; GENERIC-NEXT: rcll %edi # sched: [2:1.50] +; GENERIC-NEXT: rcrl %edi # sched: [2:1.50] +; GENERIC-NEXT: rcll (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrl (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcll $7, %edi # sched: [5:4.00] +; GENERIC-NEXT: rcrl $7, %edi # sched: [5:4.00] +; GENERIC-NEXT: rcll $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrl $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcll %cl, %edi # sched: [5:4.00] +; GENERIC-NEXT: rcrl %cl, %edi # sched: [5:4.00] +; GENERIC-NEXT: rcll %cl, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrl %cl, (%rdx) # sched: [11:3.50] ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retq # sched: [1:1.00] ; @@ -10392,18 +10392,18 @@ define void @test_rcl_rcr_32(i32 %a0, i32 %a1, i32 *%a2) optsize { ; SANDY-LABEL: test_rcl_rcr_32: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP -; SANDY-NEXT: rcll %edi # sched: [1:0.50] -; SANDY-NEXT: rcrl %edi # sched: [1:0.50] -; SANDY-NEXT: rcll (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrl (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcll $7, %edi # sched: [1:0.50] -; SANDY-NEXT: rcrl $7, %edi # sched: [1:0.50] -; SANDY-NEXT: rcll $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrl $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcll %cl, %edi # sched: [1:0.50] -; SANDY-NEXT: rcrl %cl, %edi # sched: [1:0.50] -; SANDY-NEXT: rcll %cl, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrl %cl, (%rdx) # sched: [6:1.00] +; SANDY-NEXT: rcll %edi # sched: [2:1.50] +; SANDY-NEXT: rcrl %edi # sched: [2:1.50] +; SANDY-NEXT: rcll (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrl (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcll $7, %edi # sched: [5:4.00] +; SANDY-NEXT: rcrl $7, %edi # sched: [5:4.00] +; SANDY-NEXT: rcll $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrl $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcll %cl, %edi # sched: [5:4.00] +; SANDY-NEXT: rcrl %cl, %edi # sched: [5:4.00] +; SANDY-NEXT: rcll %cl, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrl %cl, (%rdx) # sched: [11:3.50] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retq # sched: [1:1.00] ; @@ -10521,18 +10521,18 @@ define void @test_rcl_rcr_64(i64 %a0, i64 %a1, i64 *%a2) optsize { ; GENERIC-LABEL: test_rcl_rcr_64: ; GENERIC: # %bb.0: ; GENERIC-NEXT: #APP -; GENERIC-NEXT: rclq %rdi # sched: [1:0.50] -; GENERIC-NEXT: rcrq %rdi # sched: [1:0.50] -; GENERIC-NEXT: rclq (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrq (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rclq $7, %rdi # sched: [1:0.50] -; GENERIC-NEXT: rcrq $7, %rdi # sched: [1:0.50] -; GENERIC-NEXT: rclq $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrq $7, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rclq %cl, %rdi # sched: [1:0.50] -; GENERIC-NEXT: rcrq %cl, %rdi # sched: [1:0.50] -; GENERIC-NEXT: rclq %cl, (%rdx) # sched: [6:1.00] -; GENERIC-NEXT: rcrq %cl, (%rdx) # sched: [6:1.00] +; GENERIC-NEXT: rclq %rdi # sched: [2:1.50] +; GENERIC-NEXT: rcrq %rdi # sched: [2:1.50] +; GENERIC-NEXT: rclq (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrq (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rclq $7, %rdi # sched: [5:4.00] +; GENERIC-NEXT: rcrq $7, %rdi # sched: [5:4.00] +; GENERIC-NEXT: rclq $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrq $7, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rclq %cl, %rdi # sched: [5:4.00] +; GENERIC-NEXT: rcrq %cl, %rdi # sched: [5:4.00] +; GENERIC-NEXT: rclq %cl, (%rdx) # sched: [11:3.50] +; GENERIC-NEXT: rcrq %cl, (%rdx) # sched: [11:3.50] ; GENERIC-NEXT: #NO_APP ; GENERIC-NEXT: retq # sched: [1:1.00] ; @@ -10575,18 +10575,18 @@ define void @test_rcl_rcr_64(i64 %a0, i64 %a1, i64 *%a2) optsize { ; SANDY-LABEL: test_rcl_rcr_64: ; SANDY: # %bb.0: ; SANDY-NEXT: #APP -; SANDY-NEXT: rclq %rdi # sched: [1:0.50] -; SANDY-NEXT: rcrq %rdi # sched: [1:0.50] -; SANDY-NEXT: rclq (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrq (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rclq $7, %rdi # sched: [1:0.50] -; SANDY-NEXT: rcrq $7, %rdi # sched: [1:0.50] -; SANDY-NEXT: rclq $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrq $7, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rclq %cl, %rdi # sched: [1:0.50] -; SANDY-NEXT: rcrq %cl, %rdi # sched: [1:0.50] -; SANDY-NEXT: rclq %cl, (%rdx) # sched: [6:1.00] -; SANDY-NEXT: rcrq %cl, (%rdx) # sched: [6:1.00] +; SANDY-NEXT: rclq %rdi # sched: [2:1.50] +; SANDY-NEXT: rcrq %rdi # sched: [2:1.50] +; SANDY-NEXT: rclq (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrq (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rclq $7, %rdi # sched: [5:4.00] +; SANDY-NEXT: rcrq $7, %rdi # sched: [5:4.00] +; SANDY-NEXT: rclq $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrq $7, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rclq %cl, %rdi # sched: [5:4.00] +; SANDY-NEXT: rcrq %cl, %rdi # sched: [5:4.00] +; SANDY-NEXT: rclq %cl, (%rdx) # sched: [11:3.50] +; SANDY-NEXT: rcrq %cl, (%rdx) # sched: [11:3.50] ; SANDY-NEXT: #NO_APP ; SANDY-NEXT: retq # sched: [1:1.00] ; |

