]> granicus.if.org Git - llvm/commitdiff
[X86][X87] Tag FTST x87 instruction scheduler class
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 28 Nov 2017 16:57:20 +0000 (16:57 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 28 Nov 2017 16:57:20 +0000 (16:57 +0000)
Looking through Agner, FTST is very similar to generic float compare behaviour, so I've added them to the existing IIC_FCOMI (WriteFAdd) tags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319184 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrFPStack.td
test/CodeGen/X86/x87-schedule.ll

index 1ac62a74bcef7ac591ac49f953653ae7b6b49d39..00e85553254903c54efb751ab80b9659bfe33958 100644 (file)
@@ -327,7 +327,8 @@ def TST_Fp64  : FpIf64<(outs), (ins RFP64:$src), OneArgFP, []>;
 def TST_Fp80  : FpI_<(outs), (ins RFP80:$src), OneArgFP, []>;
 } // hasSideEffects
 
-def TST_F  : FPI<0xD9, MRM_E4, (outs), (ins), "ftst">;
+let SchedRW = [WriteFAdd] in
+def TST_F  : FPI<0xD9, MRM_E4, (outs), (ins), "ftst", IIC_FCOMI>;
 } // Defs = [FPSW]
 
 // Versions of FP instructions that take a single memory operand.  Added for the
index 05e4ac7cdc81cf185bd2f7e4bc77b9bddec960c1..2b134aaae58f93549e3c86e1998453a1ff594a8f 100644 (file)
@@ -3778,21 +3778,21 @@ define void @test_ftst() optsize {
 ; ATOM-LABEL: test_ftst:
 ; ATOM:       # BB#0:
 ; ATOM-NEXT:    #APP
-; ATOM-NEXT:    ftst
+; ATOM-NEXT:    ftst # sched: [9:4.50]
 ; ATOM-NEXT:    #NO_APP
 ; ATOM-NEXT:    retl # sched: [79:39.50]
 ;
 ; SLM-LABEL: test_ftst:
 ; SLM:       # BB#0:
 ; SLM-NEXT:    #APP
-; SLM-NEXT:    ftst
+; SLM-NEXT:    ftst # sched: [3:1.00]
 ; SLM-NEXT:    #NO_APP
 ; SLM-NEXT:    retl # sched: [4:1.00]
 ;
 ; SANDY-LABEL: test_ftst:
 ; SANDY:       # BB#0:
 ; SANDY-NEXT:    #APP
-; SANDY-NEXT:    ftst
+; SANDY-NEXT:    ftst # sched: [3:1.00]
 ; SANDY-NEXT:    #NO_APP
 ; SANDY-NEXT:    retl # sched: [5:1.00]
 ;
@@ -3806,28 +3806,28 @@ define void @test_ftst() optsize {
 ; BROADWELL-LABEL: test_ftst:
 ; BROADWELL:       # BB#0:
 ; BROADWELL-NEXT:    #APP
-; BROADWELL-NEXT:    ftst
+; BROADWELL-NEXT:    ftst # sched: [3:1.00]
 ; BROADWELL-NEXT:    #NO_APP
 ; BROADWELL-NEXT:    retl # sched: [6:0.50]
 ;
 ; SKYLAKE-LABEL: test_ftst:
 ; SKYLAKE:       # BB#0:
 ; SKYLAKE-NEXT:    #APP
-; SKYLAKE-NEXT:    ftst
+; SKYLAKE-NEXT:    ftst # sched: [3:1.00]
 ; SKYLAKE-NEXT:    #NO_APP
 ; SKYLAKE-NEXT:    retl # sched: [6:0.50]
 ;
 ; SKX-LABEL: test_ftst:
 ; SKX:       # BB#0:
 ; SKX-NEXT:    #APP
-; SKX-NEXT:    ftst
+; SKX-NEXT:    ftst # sched: [3:1.00]
 ; SKX-NEXT:    #NO_APP
 ; SKX-NEXT:    retl # sched: [6:0.50]
 ;
 ; BTVER2-LABEL: test_ftst:
 ; BTVER2:       # BB#0:
 ; BTVER2-NEXT:    #APP
-; BTVER2-NEXT:    ftst
+; BTVER2-NEXT:    ftst # sched: [3:1.00]
 ; BTVER2-NEXT:    #NO_APP
 ; BTVER2-NEXT:    retl # sched: [4:1.00]
 ;