llvm-project/llvm/lib/Target/Mips
Simon Dardis ae6f2bcb25 Recommit "[mips] Fix atomic compare and swap at O0."
This time with the missing files.

Similar to PR/25526, fast-regalloc introduces spills at the end of basic
blocks. When this occurs in between an ll and sc, the store can cause the
atomic sequence to fail.

This patch fixes the issue by introducing more pseudos to represent atomic
operations and moving their lowering to after the expansion of postRA
pseudos.

This resolves PR/32020.

Thanks to James Cowgill for reporting the issue!

Reviewers: slthakur

Differential Revision: https://reviews.llvm.org/D30257

llvm-svn: 296134
2017-02-24 16:32:18 +00:00
..
AsmParser [mips] Handle 64 bit immediate in and/or/xor pseudo instructions on mips64 2017-02-24 14:34:32 +00:00
Disassembler [mips][mc] Fix a crash when disassembling odd sized sections 2017-02-24 10:50:27 +00:00
InstPrinter Revert "[mips] Fix c.<cc>.<fmt> instruction definition." 2016-09-09 11:06:01 +00:00
MCTargetDesc [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-14 00:33:36 +00:00
TargetInfo Move the global variables representing each Target behind accessor function 2016-10-09 23:00:34 +00:00
CMakeLists.txt Recommit "[mips] Fix atomic compare and swap at O0." 2017-02-24 16:32:18 +00:00
LLVMBuild.txt
MSA.txt Revert: r286868 - Test commit 2016-11-14 19:10:56 +00:00
MicroMips32r6InstrFormats.td [mips][microMIPS] Implement LDC1, SDC1, LDC2, SDC2, LWC1, SWC1, LWC2 and SWC2 instructions and add CodeGen support 2016-07-11 07:41:56 +00:00
MicroMips32r6InstrInfo.td [mips] seb, seh instruction aliases 2016-11-22 19:17:23 +00:00
MicroMips64r6InstrFormats.td [mips][microMIPS] Implement DBITSWAP, DLSA and LWUPC and add tests for AUI instructions 2016-09-08 07:41:43 +00:00
MicroMips64r6InstrInfo.td [mips] Recommit: "N64 static relocation model support" 2017-01-27 11:36:52 +00:00
MicroMipsDSPInstrFormats.td
MicroMipsDSPInstrInfo.td
MicroMipsInstrFPU.td [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
MicroMipsInstrFormats.td [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
MicroMipsInstrInfo.td [mips][ias] Further relax operands of certain assembly instructions 2017-02-23 12:40:58 +00:00
Mips.h Recommit "[mips] Fix atomic compare and swap at O0." 2017-02-24 16:32:18 +00:00
Mips.td [mips] Recommit: "N64 static relocation model support" 2017-01-27 11:36:52 +00:00
Mips16FrameLowering.cpp Move FrameInstructions from MachineModuleInfo to MachineFunction 2016-11-30 23:48:42 +00:00
Mips16FrameLowering.h
Mips16HardFloat.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
Mips16HardFloatInfo.cpp
Mips16HardFloatInfo.h
Mips16ISelDAGToDAG.cpp [mips] Preparatory work for a generic scheduler 2016-08-24 13:00:47 +00:00
Mips16ISelDAGToDAG.h [mips] SelectionDAGISel subclasses now follow the optimization level. 2016-07-14 13:25:22 +00:00
Mips16ISelLowering.cpp
Mips16ISelLowering.h
Mips16InstrFormats.td
Mips16InstrInfo.cpp Use StringRef instead of raw pointers in MCAsmInfo/MCInstrInfo APIs (NFC) 2016-10-01 06:46:33 +00:00
Mips16InstrInfo.h
Mips16InstrInfo.td [mips] Correct mips16 return instructions definitions 2017-02-14 21:53:23 +00:00
Mips16RegisterInfo.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
Mips16RegisterInfo.h
Mips32r6InstrFormats.td [mips] Add IAS support for dvp, evp 2016-10-13 12:12:56 +00:00
Mips32r6InstrInfo.td [mips] divide macro instruction cleanup. 2017-02-13 16:06:48 +00:00
Mips64InstrInfo.td Recommit "[mips] Fix atomic compare and swap at O0." 2017-02-24 16:32:18 +00:00
Mips64r6InstrInfo.td [mips] Fix aui/daui/dahi/dati for MIPSR6 2016-10-14 09:31:42 +00:00
MipsAnalyzeImmediate.cpp
MipsAnalyzeImmediate.h
MipsAsmPrinter.cpp [LLVM][XRAY][MIPS] Support xray on mips/mipsel/mips64/mips64el 2017-02-15 10:48:11 +00:00
MipsAsmPrinter.h [LLVM][XRAY][MIPS] Support xray on mips/mipsel/mips64/mips64el 2017-02-15 10:48:11 +00:00
MipsCCState.cpp
MipsCCState.h
MipsCallingConv.td
MipsCondMov.td Revert "[mips] Fix c.<cc>.<fmt> instruction definition." 2016-09-09 11:06:01 +00:00
MipsConstantIslandPass.cpp [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-30 23:21:32 +00:00
MipsDSPInstrFormats.td
MipsDSPInstrInfo.td
MipsDelaySlotFiller.cpp [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-01 01:22:51 +00:00
MipsEVAInstrFormats.td [mips] Add IAS support for dvp, evp 2016-10-13 12:12:56 +00:00
MipsEVAInstrInfo.td
MipsExpandPseudo.cpp Recommit "[mips] Fix atomic compare and swap at O0." 2017-02-24 16:32:18 +00:00
MipsFastISel.cpp [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-30 23:21:32 +00:00
MipsFrameLowering.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
MipsFrameLowering.h
MipsHazardSchedule.cpp [mips] Fix compact branch hazard detection, part 2 2016-12-22 19:29:50 +00:00
MipsISelDAGToDAG.cpp [mips] Clang generates unaligned offset for MSA instruction st.d 2016-08-01 06:46:20 +00:00
MipsISelDAGToDAG.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
MipsISelLowering.cpp Recommit "[mips] Fix atomic compare and swap at O0." 2017-02-24 16:32:18 +00:00
MipsISelLowering.h [mips] Recommit: "N64 static relocation model support" 2017-01-27 11:36:52 +00:00
MipsInstrFPU.td [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
MipsInstrFormats.td [mips] Correct c.cond.fmt instruction definition. 2017-01-16 13:55:58 +00:00
MipsInstrInfo.cpp [CodeGen] Rename MachineInstrBuilder::addOperand. NFC 2017-01-13 09:58:52 +00:00
MipsInstrInfo.h Finish renaming remaining analyzeBranch functions 2016-09-14 20:43:16 +00:00
MipsInstrInfo.td Recommit "[mips] Fix atomic compare and swap at O0." 2017-02-24 16:32:18 +00:00
MipsLongBranch.cpp [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-01 01:22:51 +00:00
MipsMCInstLower.cpp
MipsMCInstLower.h
MipsMSAInstrFormats.td
MipsMSAInstrInfo.td [mips][msa] Implement f16 support 2016-11-18 16:17:44 +00:00
MipsMachineFunction.cpp [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-30 23:21:32 +00:00
MipsMachineFunction.h [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-01-30 23:21:32 +00:00
MipsModuleISelDAGToDAG.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
MipsOptimizePICCall.cpp [mips] Do not allow -opt-bisect-limit to skip the PIC call optimization pass. 2016-10-27 15:50:36 +00:00
MipsOptionRecord.h [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-01 01:22:51 +00:00
MipsOs16.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
MipsRegisterInfo.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
MipsRegisterInfo.h
MipsRegisterInfo.td [mips] divide macro instruction cleanup. 2017-02-13 16:06:48 +00:00
MipsSEFrameLowering.cpp [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-01 01:22:51 +00:00
MipsSEFrameLowering.h [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-01 01:22:51 +00:00
MipsSEISelDAGToDAG.cpp [mips] Recommit: "N64 static relocation model support" 2017-01-27 11:36:52 +00:00
MipsSEISelDAGToDAG.h [LLC][MIPS] Fix crash after enabling LLVM_ENABLE_EXPENSIVE_CHECKS 2017-01-04 09:34:37 +00:00
MipsSEISelLowering.cpp [CodeGen] Rename MachineInstrBuilder::addOperand. NFC 2017-01-13 09:58:52 +00:00
MipsSEISelLowering.h [mips][msa] Implement f16 support 2016-11-18 16:17:44 +00:00
MipsSEInstrInfo.cpp Revert "[mips] Fix c.<cc>.<fmt> instruction definition." 2016-09-09 11:06:01 +00:00
MipsSEInstrInfo.h Revert "[mips] Fix c.<cc>.<fmt> instruction definition." 2016-09-09 11:06:01 +00:00
MipsSERegisterInfo.cpp MachineFunction: Return reference for getFrameInfo(); NFC 2016-07-28 18:40:00 +00:00
MipsSERegisterInfo.h
MipsSchedule.td Recommit: "[mips] Add rsqrt, recip for MIPS" 2016-10-05 16:11:01 +00:00
MipsScheduleGeneric.td Recommit: "[mips] Add rsqrt, recip for MIPS" 2016-10-05 16:11:01 +00:00
MipsScheduleP5600.td Recommit: "[mips] Add rsqrt, recip for MIPS" 2016-10-05 16:11:01 +00:00
MipsSubtarget.cpp [mips] Recommit: "N64 static relocation model support" 2017-01-27 11:36:52 +00:00
MipsSubtarget.h [LLVM][XRAY][MIPS] Support xray on mips/mipsel/mips64/mips64el 2017-02-15 10:48:11 +00:00
MipsTargetMachine.cpp Recommit "[mips] Fix atomic compare and swap at O0." 2017-02-24 16:32:18 +00:00
MipsTargetMachine.h [Mips] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-01 01:22:51 +00:00
MipsTargetObjectFile.cpp [mips] Fix debug information for __thread variable 2017-01-20 17:53:30 +00:00
MipsTargetObjectFile.h [mips] Fix debug information for __thread variable 2017-01-20 17:53:30 +00:00
MipsTargetStreamer.h