llvm-project/llvm/lib
Alex Bradbury 07f1c62371 [RISCV] Add codegen support for RV64A
In order to support codegen RV64A, this patch:
* Introduces masked atomics intrinsics for atomicrmw operations and cmpxchg
  that use the i64 type. These are ultimately lowered to masked operations
  using lr.w/sc.w, but we need to use these alternate intrinsics for RV64
  because i32 is not legal
* Modifies RISCVExpandPseudoInsts.cpp to handle PseudoAtomicLoadNand64 and
  PseudoCmpXchg64
* Modifies the AtomicExpandPass hooks in RISCVTargetLowering to sext/trunc as
  needed for RV64 and to select the i64 intrinsic IDs when necessary
* Adds appropriate patterns to RISCVInstrInfoA.td
* Updates test/CodeGen/RISCV/atomic-*.ll to show RV64A support

This ends up being a fairly mechanical change, as the logic for RV32A is
effectively reused.

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

llvm-svn: 351422
2019-01-17 10:04:39 +00:00
..
Analysis Only promote args when function attributes are compatible 2019-01-16 05:15:31 +00:00
AsmParser Give helper classes/functions local linkage. NFC. 2019-01-12 18:36:22 +00:00
BinaryFormat llvm-dwarfdump: Improve/fix pretty printing of array dimensions 2018-12-19 19:34:24 +00:00
Bitcode [LTO] Record whether LTOUnit splitting is enabled in index 2019-01-11 18:31:57 +00:00
CodeGen [AsmPrinter] Collapse .loc 0 0 directives 2019-01-16 23:26:29 +00:00
DebugInfo [CodeView] More appropriate name and type for a Microsoft precompiled headers parameter. NFC 2019-01-07 13:53:16 +00:00
Demangle [llvm-undname] Add support for demangling msvc's noexcept types. 2019-01-08 21:05:51 +00:00
ExecutionEngine Revert r351138 "[ORC] Move ORC Core symbol map and set types into their own 2019-01-15 15:21:13 +00:00
FuzzMutate
Fuzzer
IR [EH] Rename llvm.x86.seh.recoverfp intrinsic to llvm.eh.recoverfp 2019-01-16 00:37:13 +00:00
IRReader
LTO [LTO] Record whether LTOUnit splitting is enabled in index 2019-01-11 18:31:57 +00:00
LineEditor
Linker ThinLTO: Do not import debug info for imported global constants 2018-12-05 21:42:17 +00:00
MC [ARM64][Windows] Share unwind codes between epilogues 2019-01-17 09:45:17 +00:00
MCA [MCA] Fix wrong definition of ResourceUnitMask in DefaultResourceStrategy. 2019-01-10 13:59:13 +00:00
Object [WebAssembly] Parse llvm.ident into producers section 2019-01-17 02:29:55 +00:00
ObjectYAML [WebAssembly] Parse llvm.ident into producers section 2019-01-17 02:29:55 +00:00
OptRemarks Reland: [OptRemarks] Add library for parsing optimization remarks 2018-10-10 18:43:42 +00:00
Option [opt] Change the parameter of OptTable::PrintHelp from Name to Usage and don't append "[options] <inputs>" 2018-10-10 00:15:31 +00:00
Passes [NewPM][TSan] Reiterate the TSan port 2019-01-16 09:28:01 +00:00
ProfileData [PGO] Use SourceFileName rather module name in PGOFuncName 2019-01-08 22:39:47 +00:00
Support [Support] Remove error return value from one overload of fs::make_absolute 2019-01-16 09:55:32 +00:00
TableGen Let TableGen write output only if it changed, instead of doing so in cmake, attempt 2 2018-12-19 13:35:53 +00:00
Target [RISCV] Add codegen support for RV64A 2019-01-17 10:04:39 +00:00
Testing
TextAPI [TextAPI][elfabi] Fix YAML support for weak symbols 2018-12-21 20:45:58 +00:00
ToolDrivers [opt] Change the parameter of OptTable::PrintHelp from Name to Usage and don't append "[options] <inputs>" 2018-10-10 00:15:31 +00:00
Transforms [NFC] Factor out some local vars 2019-01-17 06:20:42 +00:00
WindowsManifest
XRay [Object] Rename getRelrRelocationType to getRelativeRelocationType 2018-12-14 07:46:58 +00:00
CMakeLists.txt [llvm-mca] Move llvm-mca library to llvm/lib/MCA. 2018-12-17 08:08:31 +00:00
LLVMBuild.txt [llvm-mca] Move llvm-mca library to llvm/lib/MCA. 2018-12-17 08:08:31 +00:00