diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-12-12 16:12:53 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-12-12 16:12:53 +0000 |
commit | 68f9accf51a0f718bf1d6c41d543be5ee37eccd7 (patch) | |
tree | 317ced699d326bf54e4b0bef8aab78e5c8dddcd2 /llvm/lib | |
parent | c01db1ce8f7f8f5b3aebecfb6722c4b825e09910 (diff) | |
download | bcm5719-llvm-68f9accf51a0f718bf1d6c41d543be5ee37eccd7.tar.gz bcm5719-llvm-68f9accf51a0f718bf1d6c41d543be5ee37eccd7.zip |
[X86] Remove CompleteModel tags from CPU targets until we have better error checking (PR35636)
The checks we have for complete models are not great and miss many cases - e.g. in PR35636 it failed to recognise that only the first output (of 2) was actually tagged by the InstRW
Raised PR35639 and PR35643 as examples
llvm-svn: 320492
Diffstat (limited to 'llvm/lib')
-rwxr-xr-x | llvm/lib/Target/X86/X86SchedBroadwell.td | 4 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86ScheduleBtVer2.td | 4 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86ScheduleSLM.td | 4 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86ScheduleZnver1.td | 6 |
4 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td index 6e5f6f39525..75d46d6ff31 100755 --- a/llvm/lib/Target/X86/X86SchedBroadwell.td +++ b/llvm/lib/Target/X86/X86SchedBroadwell.td @@ -21,6 +21,10 @@ def BroadwellModel : SchedMachineModel { // Based on the LSD (loop-stream detector) queue size and benchmarking data. let LoopMicroOpBufferSize = 50; + + // This flag is set to allow the scheduler to assign a default model to + // unrecognized opcodes. + let CompleteModel = 0; } let SchedModel = BroadwellModel in { diff --git a/llvm/lib/Target/X86/X86ScheduleBtVer2.td b/llvm/lib/Target/X86/X86ScheduleBtVer2.td index d7474a28896..6ea81a25e41 100644 --- a/llvm/lib/Target/X86/X86ScheduleBtVer2.td +++ b/llvm/lib/Target/X86/X86ScheduleBtVer2.td @@ -22,6 +22,10 @@ def BtVer2Model : SchedMachineModel { let HighLatency = 25; let MispredictPenalty = 14; // Minimum branch misdirection penalty let PostRAScheduler = 1; + + // FIXME: SSE4/AVX is unimplemented. This flag is set to allow + // the scheduler to assign a default model to unrecognized opcodes. + let CompleteModel = 0; } let SchedModel = BtVer2Model in { diff --git a/llvm/lib/Target/X86/X86ScheduleSLM.td b/llvm/lib/Target/X86/X86ScheduleSLM.td index fb0999b59ca..35ec7488db7 100644 --- a/llvm/lib/Target/X86/X86ScheduleSLM.td +++ b/llvm/lib/Target/X86/X86ScheduleSLM.td @@ -23,6 +23,10 @@ def SLMModel : SchedMachineModel { // For small loops, expand by a small factor to hide the backedge cost. let LoopMicroOpBufferSize = 10; + + // FIXME: SSE4 is unimplemented. This flag is set to allow + // the scheduler to assign a default model to unrecognized opcodes. + let CompleteModel = 0; } let SchedModel = SLMModel in { diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td index 80d3bdb90df..a4e5327213c 100644 --- a/llvm/lib/Target/X86/X86ScheduleZnver1.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td @@ -21,6 +21,12 @@ def Znver1Model : SchedMachineModel { let MispredictPenalty = 17; let HighLatency = 25; let PostRAScheduler = 1; + + // FIXME: This variable is required for incomplete model. + // We haven't catered all instructions. + // So, we reset the value of this variable so as to + // say that the model is incomplete. + let CompleteModel = 0; } let SchedModel = Znver1Model in { |