diff options
author | Craig Topper <craig.topper@intel.com> | 2018-06-10 21:48:24 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-06-10 21:48:24 +0000 |
commit | 860562c9158af80399c73075dfb03ba3ba87dc26 (patch) | |
tree | 191491d21c5d813d26722186dcbee6f80bbfffbd | |
parent | 53b14db9f204d33c0c849ba65d9c1a8d892819a6 (diff) | |
download | bcm5719-llvm-860562c9158af80399c73075dfb03ba3ba87dc26.tar.gz bcm5719-llvm-860562c9158af80399c73075dfb03ba3ba87dc26.zip |
[X86] Miscellaneous fixes to get the load folding table generator to work again.
llvm-svn: 334377
-rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.td | 10 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstrMPX.td | 6 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstrSSE.td | 2 |
3 files changed, 9 insertions, 9 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td index 4815aba5efa..7d8bb55a4c6 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.td +++ b/llvm/lib/Target/X86/X86InstrInfo.td @@ -1949,25 +1949,25 @@ multiclass ATOMIC_SWAP<bits<8> opc8, bits<8> opc, string mnemonic, string frag> } } -defm XCHG : ATOMIC_SWAP<0x86, 0x87, "xchg", "atomic_swap">; +defm XCHG : ATOMIC_SWAP<0x86, 0x87, "xchg", "atomic_swap">, NotMemoryFoldable; // Swap between registers. let SchedRW = [WriteALU] in { let Constraints = "$src1 = $dst1, $src2 = $dst2", hasSideEffects = 0 in { def XCHG8rr : I<0x86, MRMSrcReg, (outs GR8:$dst1, GR8:$dst2), (ins GR8:$src1, GR8:$src2), - "xchg{b}\t{$src2, $src1|$src1, $src2}", []>; + "xchg{b}\t{$src2, $src1|$src1, $src2}", []>, NotMemoryFoldable; def XCHG16rr : I<0x87, MRMSrcReg, (outs GR16:$dst1, GR16:$dst2), (ins GR16:$src1, GR16:$src2), "xchg{w}\t{$src2, $src1|$src1, $src2}", []>, - OpSize16; + OpSize16, NotMemoryFoldable; def XCHG32rr : I<0x87, MRMSrcReg, (outs GR32:$dst1, GR32:$dst2), (ins GR32:$src1, GR32:$src2), "xchg{l}\t{$src2, $src1|$src1, $src2}", []>, - OpSize32; + OpSize32, NotMemoryFoldable; def XCHG64rr : RI<0x87, MRMSrcReg, (outs GR64:$dst1, GR64:$dst2), (ins GR64:$src1 ,GR64:$src2), - "xchg{q}\t{$src2, $src1|$src1, $src2}", []>; + "xchg{q}\t{$src2, $src1|$src1, $src2}", []>, NotMemoryFoldable; } // Swap between EAX and other registers. diff --git a/llvm/lib/Target/X86/X86InstrMPX.td b/llvm/lib/Target/X86/X86InstrMPX.td index e9037910aa8..1b2905a986a 100644 --- a/llvm/lib/Target/X86/X86InstrMPX.td +++ b/llvm/lib/Target/X86/X86InstrMPX.td @@ -42,9 +42,9 @@ multiclass mpx_bound_check<bits<8> opc, string OpcodeStr> { OpcodeStr#"\t{$src2, $src1|$src1, $src2}", []>, Requires<[HasMPX, In64BitMode]>; } -defm BNDCL : mpx_bound_check<0x1A, "bndcl">, XS; -defm BNDCU : mpx_bound_check<0x1A, "bndcu">, XD; -defm BNDCN : mpx_bound_check<0x1B, "bndcn">, XD; +defm BNDCL : mpx_bound_check<0x1A, "bndcl">, XS, NotMemoryFoldable; +defm BNDCU : mpx_bound_check<0x1A, "bndcu">, XD, NotMemoryFoldable; +defm BNDCN : mpx_bound_check<0x1B, "bndcn">, XD, NotMemoryFoldable; def BNDMOVrr : I<0x1A, MRMSrcReg, (outs BNDR:$dst), (ins BNDR:$src), "bndmov\t{$src, $dst|$dst, $src}", []>, PD, diff --git a/llvm/lib/Target/X86/X86InstrSSE.td b/llvm/lib/Target/X86/X86InstrSSE.td index c0130207c21..39a970fb635 100644 --- a/llvm/lib/Target/X86/X86InstrSSE.td +++ b/llvm/lib/Target/X86/X86InstrSSE.td @@ -5205,7 +5205,7 @@ multiclass SS41I_extract16<bits<8> opc, string OpcodeStr> { (ins VR128:$src1, u8imm:$src2), !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"), []>, - Sched<[WriteVecExtract]>, FoldGenData<NAME#ri>; + Sched<[WriteVecExtract]>, FoldGenData<NAME#rr>; let hasSideEffects = 0, mayStore = 1 in def mr : SS4AIi8<opc, MRMDestMem, (outs), |