summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-05-11 16:38:59 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-05-11 16:38:59 +0000
commit706403bab8f259352fffb308e92f0b61b75c351a (patch)
tree8d2c402e8cdd82b54e89c552f50310d3a8009c0a /llvm/lib
parent60460268c002eb608c2d8138f506fe133c478247 (diff)
downloadbcm5719-llvm-706403bab8f259352fffb308e92f0b61b75c351a.tar.gz
bcm5719-llvm-706403bab8f259352fffb308e92f0b61b75c351a.zip
[X86][MMX] Tag MMX Move/Load/Store as WriteVec schedule classes
Fixes an issue on SLM/Btver2 where we had instructions were being treated as scalar loads/stores llvm-svn: 332104
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86InstrMMX.td10
-rwxr-xr-xllvm/lib/Target/X86/X86SchedBroadwell.td3
-rw-r--r--llvm/lib/Target/X86/X86SchedHaswell.td3
-rw-r--r--llvm/lib/Target/X86/X86SchedSkylakeClient.td3
-rwxr-xr-xllvm/lib/Target/X86/X86SchedSkylakeServer.td3
5 files changed, 5 insertions, 17 deletions
diff --git a/llvm/lib/Target/X86/X86InstrMMX.td b/llvm/lib/Target/X86/X86InstrMMX.td
index 0b4ad80d08c..57a5bee2b26 100644
--- a/llvm/lib/Target/X86/X86InstrMMX.td
+++ b/llvm/lib/Target/X86/X86InstrMMX.td
@@ -204,7 +204,7 @@ def MMX_MOVD64to64rr : MMXRI<0x6E, MRMSrcReg, (outs VR64:$dst), (ins GR64:$src),
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0, mayLoad = 1 in
def MMX_MOVD64to64rm : MMXRI<0x6E, MRMSrcMem, (outs VR64:$dst),
(ins i64mem:$src), "movq\t{$src, $dst|$dst, $src}",
- []>, Sched<[WriteLoad]>;
+ []>, Sched<[SchedWriteVecMoveLS.MMX.RM]>;
// These are 64 bit moves, but since the OS X assembler doesn't
// recognize a register-register movq, we write them as
@@ -228,16 +228,16 @@ let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0, mayStore = 1 in
def MMX_MOVD64from64rm : MMXRI<0x7E, MRMDestMem,
(outs), (ins i64mem:$dst, VR64:$src),
"movq\t{$src, $dst|$dst, $src}", []>,
- Sched<[WriteStore]>;
+ Sched<[SchedWriteVecMoveLS.MMX.MR]>;
-let SchedRW = [WriteLoad] in {
+let SchedRW = [SchedWriteVecMoveLS.MMX.RM] in {
let canFoldAsLoad = 1 in
def MMX_MOVQ64rm : MMXI<0x6F, MRMSrcMem, (outs VR64:$dst), (ins i64mem:$src),
"movq\t{$src, $dst|$dst, $src}",
[(set VR64:$dst, (load_mmx addr:$src))]>;
} // SchedRW
-let SchedRW = [WriteStore] in
+let SchedRW = [SchedWriteVecMoveLS.MMX.MR] in
def MMX_MOVQ64mr : MMXI<0x7F, MRMDestMem, (outs), (ins i64mem:$dst, VR64:$src),
"movq\t{$src, $dst|$dst, $src}",
[(store (x86mmx VR64:$src), addr:$dst)]>;
@@ -272,7 +272,7 @@ let Predicates = [HasSSE1] in
def MMX_MOVNTQmr : MMXI<0xE7, MRMDestMem, (outs), (ins i64mem:$dst, VR64:$src),
"movntq\t{$src, $dst|$dst, $src}",
[(int_x86_mmx_movnt_dq addr:$dst, VR64:$src)]>,
- Sched<[WriteStore]>;
+ Sched<[SchedWriteVecMoveLS.MMX.MR]>;
let Predicates = [HasMMX] in {
let AddedComplexity = 15 in
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td
index cae21d60482..268f60b8237 100755
--- a/llvm/lib/Target/X86/X86SchedBroadwell.td
+++ b/llvm/lib/Target/X86/X86SchedBroadwell.td
@@ -575,10 +575,7 @@ def BWWriteResGroup10 : SchedWriteRes<[BWPort4,BWPort237]> {
let ResourceCycles = [1,1];
}
def: InstRW<[BWWriteResGroup10], (instregex "FBSTPm",
- "MMX_MOVD64from64rm",
"MMX_MOVD64mr",
- "MMX_MOVNTQmr",
- "MMX_MOVQ64mr",
"MOVNTI_64mr",
"MOVNTImr",
"ST_FP(32|64|80)m",
diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td
index e6c35444cac..7b84757baa3 100644
--- a/llvm/lib/Target/X86/X86SchedHaswell.td
+++ b/llvm/lib/Target/X86/X86SchedHaswell.td
@@ -752,10 +752,7 @@ def HWWriteResGroup1 : SchedWriteRes<[HWPort4,HWPort237]> {
let ResourceCycles = [1,1];
}
def: InstRW<[HWWriteResGroup1], (instregex "FBSTPm",
- "MMX_MOVD64from64rm",
"MMX_MOVD64mr",
- "MMX_MOVNTQmr",
- "MMX_MOVQ64mr",
"MOVNTI_64mr",
"MOVNTImr",
"ST_FP(32|64|80)m",
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
index 20e1a71e5e7..e8da8b807aa 100644
--- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td
@@ -578,10 +578,7 @@ def SKLWriteResGroup11 : SchedWriteRes<[SKLPort4,SKLPort237]> {
let ResourceCycles = [1,1];
}
def: InstRW<[SKLWriteResGroup11], (instregex "FBSTPm",
- "MMX_MOVD64from64rm",
"MMX_MOVD64mr",
- "MMX_MOVNTQmr",
- "MMX_MOVQ64mr",
"MOVNTI_64mr",
"MOVNTImr",
"ST_FP(32|64|80)m",
diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
index 592dcf2d303..ce3c5104900 100755
--- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td
+++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td
@@ -603,10 +603,7 @@ def SKXWriteResGroup11 : SchedWriteRes<[SKXPort4,SKXPort237]> {
}
def: InstRW<[SKXWriteResGroup11], (instregex "FBSTPm",
"KMOV(B|D|Q|W)mk",
- "MMX_MOVD64from64rm",
"MMX_MOVD64mr",
- "MMX_MOVNTQmr",
- "MMX_MOVQ64mr",
"MOVNTI_64mr",
"MOVNTImr",
"ST_FP(32|64|80)m",
OpenPOWER on IntegriCloud