llvm-6502/lib/Target/ARM64
Tim Northover e072ed71c8 ARM64: separate load/store operands to simplify assembler
This changes ARM64 to use separate operands for each component of an
address, and look for separate '[', '$Rn, ..., ']' tokens when
parsing.

This allows us to do away with quite a bit of special C++ code to
handle monolithic "addressing modes" in the MC components. The more
incremental matching of the assembler operands also allows for better
diagnostics when LLVM is presented with invalid input.

Most of the complexity here is with the register-offset instructions,
which were extremely dodgy beforehand: even when the instruction used
wM, LLVM's model had xM as an operand. We papered over this
discrepancy before, but that approach doesn't work now so I split them
into separate X and W variants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209425 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-22 11:56:09 +00:00
..
AsmParser ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
Disassembler ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
InstPrinter ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
MCTargetDesc ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
TargetInfo [ARM64] Add a big endian version of the ARM64 target machine, and update all users. 2014-04-23 10:26:40 +00:00
Utils [ARM64] Conditionalize CPU specific system registers on subtarget features 2014-05-01 10:25:36 +00:00
ARM64.h [ARM64] Move ARM64BaseInfo.{cpp,h} into a Utils/ subdirectory, a la AArch64. These files are required in the decoder, disassembler and parser, and a layering violation was imminent. 2014-04-09 14:42:27 +00:00
ARM64.td Fix typo. 2014-05-05 21:50:57 +00:00
ARM64AddressTypePromotion.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64AdvSIMDScalarPass.cpp [ARM64][fast-isel] Disable target specific optimizations at -O0. Functionally, 2014-05-07 16:41:55 +00:00
ARM64AsmPrinter.cpp AArch64/ARM64: support indexed loads/stores on vector types. 2014-05-02 14:54:15 +00:00
ARM64BranchRelaxation.cpp [ARM64] Split tbz/tbnz into W/X register variant 2014-05-19 15:58:15 +00:00
ARM64CallingConv.h Make consistent use of MCPhysReg instead of uint16_t throughout the tree. 2014-04-04 05:16:06 +00:00
ARM64CallingConvention.td [ARM64-BE] Implement the lane-twiddling logic at AAPCS boundaries for big endian. 2014-05-07 12:33:41 +00:00
ARM64CleanupLocalDynamicTLSPass.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64CollectLOH.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64ConditionalCompares.cpp AArch64/ARM64: expunge CPSR from the sources 2014-04-30 13:14:14 +00:00
ARM64DeadRegisterDefinitionsPass.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64ExpandPseudoInsts.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64FastISel.cpp Delete getAliasedGlobal. 2014-05-16 22:37:03 +00:00
ARM64FrameLowering.cpp [ARM64] Support aggressive fastcc/tailcallopt breaking ABI by popping out argument stack from callee. 2014-05-15 01:33:17 +00:00
ARM64FrameLowering.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64InstrAtomics.td ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
ARM64InstrFormats.td ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
ARM64InstrInfo.cpp ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
ARM64InstrInfo.h [ARM64] Adds Cortex-A53 scheduling support for vector load/store post. 2014-05-19 22:59:51 +00:00
ARM64InstrInfo.td ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
ARM64ISelDAGToDAG.cpp ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
ARM64ISelLowering.cpp [ARM64] PR19792: Fix cycle in DAG after performPostLD1Combine 2014-05-20 21:47:07 +00:00
ARM64ISelLowering.h Revert "Implement global merge optimization for global variables." 2014-05-16 13:02:18 +00:00
ARM64LoadStoreOptimizer.cpp [ARM64] Fix wrong comment in load/store optimization pass. 2014-05-16 16:50:13 +00:00
ARM64MachineFunctionInfo.h [ARM64] Support aggressive fastcc/tailcallopt breaking ABI by popping out argument stack from callee. 2014-05-15 01:33:17 +00:00
ARM64MCInstLower.cpp [ARM64] Move ARM64BaseInfo.{cpp,h} into a Utils/ subdirectory, a la AArch64. These files are required in the decoder, disassembler and parser, and a layering violation was imminent. 2014-04-09 14:42:27 +00:00
ARM64MCInstLower.h
ARM64PerfectShuffle.h
ARM64PromoteConstant.cpp [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64RegisterInfo.cpp AArch64/ARM64: expunge CPSR from the sources 2014-04-30 13:14:14 +00:00
ARM64RegisterInfo.h [C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. ARM64 edition 2014-04-29 07:58:25 +00:00
ARM64RegisterInfo.td ARM64: separate load/store operands to simplify assembler 2014-05-22 11:56:09 +00:00
ARM64SchedA53.td [ARM64] Adds Cortex-A53 scheduling support for vector load/store post. 2014-05-19 22:59:51 +00:00
ARM64SchedCyclone.td [ARM64] Increases the Sched Model accuracy for Cortex-A53. 2014-05-16 17:15:33 +00:00
ARM64Schedule.td [ARM64] Adds Cortex-A53 scheduling support for vector load/store post. 2014-05-19 22:59:51 +00:00
ARM64SelectionDAGInfo.cpp Target: remove old constructors for CallLoweringInfo 2014-05-17 21:50:17 +00:00
ARM64SelectionDAGInfo.h ARM64: override all the things. 2014-03-30 07:25:18 +00:00
ARM64StorePairSuppress.cpp Sort includes. 2014-05-22 01:07:18 +00:00
ARM64Subtarget.cpp Fix compilation issues. 2014-05-21 23:51:57 +00:00
ARM64Subtarget.h Make early if conversion dependent upon the subtarget and add 2014-05-21 23:40:26 +00:00
ARM64TargetMachine.cpp Make early if conversion dependent upon the subtarget and add 2014-05-21 23:40:26 +00:00
ARM64TargetMachine.h [ARM64] Add a big endian version of the ARM64 target machine, and update all users. 2014-04-23 10:26:40 +00:00
ARM64TargetObjectFile.cpp
ARM64TargetObjectFile.h ARM64: override all the things. 2014-03-30 07:25:18 +00:00
ARM64TargetTransformInfo.cpp Fix typo. 2014-05-22 01:21:44 +00:00
CMakeLists.txt [ARM64] Move ARM64BaseInfo.{cpp,h} into a Utils/ subdirectory, a la AArch64. These files are required in the decoder, disassembler and parser, and a layering violation was imminent. 2014-04-09 14:42:27 +00:00
LLVMBuild.txt Fix broken build 2014-05-09 18:06:22 +00:00
Makefile [ARM64] Move ARM64BaseInfo.{cpp,h} into a Utils/ subdirectory, a la AArch64. These files are required in the decoder, disassembler and parser, and a layering violation was imminent. 2014-04-09 14:42:27 +00:00