From 8815105cd5e4da0890af76eb27a533ca741366f7 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Mon, 26 Mar 2018 16:24:13 +0000 Subject: [PATCH] [X86][Btver2] Add CVTSD2SS/CVTSS2SD scheduler costs llvm-svn: 328541 --- llvm/lib/Target/X86/X86ScheduleBtVer2.td | 14 ++++++++++++++ llvm/test/CodeGen/X86/sse2-schedule.ll | 16 ++++++++-------- llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s | 8 ++++---- llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s | 8 ++++---- 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/llvm/lib/Target/X86/X86ScheduleBtVer2.td b/llvm/lib/Target/X86/X86ScheduleBtVer2.td index 75413aa..3acb7dc 100644 --- a/llvm/lib/Target/X86/X86ScheduleBtVer2.td +++ b/llvm/lib/Target/X86/X86ScheduleBtVer2.td @@ -322,6 +322,20 @@ defm : JWriteResFpuPair; // Float -> Intege defm : JWriteResFpuPair; // Integer -> Float. defm : JWriteResFpuPair; // Float -> Float size conversion. +def JWriteCVTF2F : SchedWriteRes<[JFPU1, JSTC]> { + let Latency = 7; + let ResourceCycles = [1, 2]; + let NumMicroOps = 2; +} +def : InstRW<[JWriteCVTF2F], (instregex "(V)?CVTS(D|S)2S(D|S)rr")>; + +def JWriteCVTF2FLd : SchedWriteRes<[JLAGU, JFPU1, JSTC]> { + let Latency = 12; + let ResourceCycles = [1, 1, 2]; + let NumMicroOps = 2; +} +def : InstRW<[JWriteCVTF2FLd], (instregex "(V)?CVTS(D|S)2S(D|S)rm")>; + def JWriteCVTSI2F : SchedWriteRes<[JFPU1, JSTC, JFPA, JALU0]> { let Latency = 7; let NumMicroOps = 2; diff --git a/llvm/test/CodeGen/X86/sse2-schedule.ll b/llvm/test/CodeGen/X86/sse2-schedule.ll index a944fc4..5b25892 100644 --- a/llvm/test/CodeGen/X86/sse2-schedule.ll +++ b/llvm/test/CodeGen/X86/sse2-schedule.ll @@ -2218,17 +2218,17 @@ define float @test_cvtsd2ss(double %a0, double *%a1) { ; ; BTVER2-SSE-LABEL: test_cvtsd2ss: ; BTVER2-SSE: # %bb.0: -; BTVER2-SSE-NEXT: cvtsd2ss %xmm0, %xmm1 # sched: [3:1.00] +; BTVER2-SSE-NEXT: cvtsd2ss %xmm0, %xmm1 # sched: [7:2.00] ; BTVER2-SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero sched: [5:1.00] -; BTVER2-SSE-NEXT: cvtsd2ss %xmm0, %xmm0 # sched: [3:1.00] +; BTVER2-SSE-NEXT: cvtsd2ss %xmm0, %xmm0 # sched: [7:2.00] ; BTVER2-SSE-NEXT: addss %xmm1, %xmm0 # sched: [3:1.00] ; BTVER2-SSE-NEXT: retq # sched: [4:1.00] ; ; BTVER2-LABEL: test_cvtsd2ss: ; BTVER2: # %bb.0: +; BTVER2-NEXT: vcvtsd2ss %xmm0, %xmm0, %xmm0 # sched: [7:2.00] ; BTVER2-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero sched: [5:1.00] -; BTVER2-NEXT: vcvtsd2ss %xmm0, %xmm0, %xmm0 # sched: [3:1.00] -; BTVER2-NEXT: vcvtsd2ss %xmm1, %xmm1, %xmm1 # sched: [3:1.00] +; BTVER2-NEXT: vcvtsd2ss %xmm1, %xmm1, %xmm1 # sched: [7:2.00] ; BTVER2-NEXT: vaddss %xmm1, %xmm0, %xmm0 # sched: [3:1.00] ; BTVER2-NEXT: retq # sched: [4:1.00] ; @@ -2616,17 +2616,17 @@ define double @test_cvtss2sd(float %a0, float *%a1) { ; ; BTVER2-SSE-LABEL: test_cvtss2sd: ; BTVER2-SSE: # %bb.0: -; BTVER2-SSE-NEXT: cvtss2sd %xmm0, %xmm1 # sched: [3:1.00] +; BTVER2-SSE-NEXT: cvtss2sd %xmm0, %xmm1 # sched: [7:2.00] ; BTVER2-SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero sched: [5:1.00] -; BTVER2-SSE-NEXT: cvtss2sd %xmm0, %xmm0 # sched: [3:1.00] +; BTVER2-SSE-NEXT: cvtss2sd %xmm0, %xmm0 # sched: [7:2.00] ; BTVER2-SSE-NEXT: addsd %xmm1, %xmm0 # sched: [3:1.00] ; BTVER2-SSE-NEXT: retq # sched: [4:1.00] ; ; BTVER2-LABEL: test_cvtss2sd: ; BTVER2: # %bb.0: +; BTVER2-NEXT: vcvtss2sd %xmm0, %xmm0, %xmm0 # sched: [7:2.00] ; BTVER2-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero sched: [5:1.00] -; BTVER2-NEXT: vcvtss2sd %xmm0, %xmm0, %xmm0 # sched: [3:1.00] -; BTVER2-NEXT: vcvtss2sd %xmm1, %xmm1, %xmm1 # sched: [3:1.00] +; BTVER2-NEXT: vcvtss2sd %xmm1, %xmm1, %xmm1 # sched: [7:2.00] ; BTVER2-NEXT: vaddsd %xmm1, %xmm0, %xmm0 # sched: [3:1.00] ; BTVER2-NEXT: retq # sched: [4:1.00] ; diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s index fb2a134..081db4f 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-avx1.s @@ -1138,8 +1138,8 @@ vzeroupper # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 - - - 1.00 - - - vcvtsd2si %xmm0, %rcx # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 1.00 - - 1.00 - - - vcvtsd2si (%rax), %ecx # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 1.00 - - 1.00 - - - vcvtsd2si (%rax), %rcx -# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtsd2ss %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtsd2ss (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - - 2.00 - - - vcvtsd2ss %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - - 1.00 1.00 - - 2.00 - - - vcvtsd2ss (%rax), %xmm1, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtsi2sdl %ecx, %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtsi2sdq %rcx, %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtsi2sdl (%rax), %xmm0, %xmm2 @@ -1148,8 +1148,8 @@ vzeroupper # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtsi2ssq %rcx, %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtsi2ssl (%rax), %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtsi2ssq (%rax), %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - vcvtss2sd %xmm0, %xmm1, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - vcvtss2sd (%rax), %xmm1, %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - - 2.00 - - - vcvtss2sd %xmm0, %xmm1, %xmm2 +# CHECK-NEXT: - - - - - - 1.00 1.00 - - 2.00 - - - vcvtss2sd (%rax), %xmm1, %xmm2 # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 - - - 1.00 - - - vcvtss2si %xmm0, %ecx # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 - - - 1.00 - - - vcvtss2si %xmm0, %rcx # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 1.00 - - 1.00 - - - vcvtss2si (%rax), %ecx diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s index a5e7051..88a9b8a 100644 --- a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s +++ b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-sse2.s @@ -426,14 +426,14 @@ xorpd (%rax), %xmm2 # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 - - - 1.00 - - - cvtsd2si %xmm0, %rcx # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 1.00 - - 1.00 - - - cvtsd2si (%rax), %ecx # CHECK-NEXT: 1.00 - - 1.00 - - 1.00 1.00 - - 1.00 - - - cvtsd2si (%rax), %rcx -# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtsd2ss %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - cvtsd2ss (%rax), %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - - 2.00 - - - cvtsd2ss %xmm0, %xmm2 +# CHECK-NEXT: - - - - - - 1.00 1.00 - - 2.00 - - - cvtsd2ss (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtsi2sdl %ecx, %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtsi2sdq %rcx, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - cvtsi2sdl (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - cvtsi2sdl (%rax), %xmm2 -# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvtss2sd %xmm0, %xmm2 -# CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - cvtss2sd (%rax), %xmm2 +# CHECK-NEXT: - - - - - - 1.00 - - - 2.00 - - - cvtss2sd %xmm0, %xmm2 +# CHECK-NEXT: - - - - - - 1.00 1.00 - - 2.00 - - - cvtss2sd (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvttpd2dq %xmm0, %xmm2 # CHECK-NEXT: - - - - - - 1.00 1.00 - - 1.00 - - - cvttpd2dq (%rax), %xmm2 # CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - cvttps2dq %xmm0, %xmm2 -- 2.7.4