diff options
author | Jim Grosbach <grosbach@apple.com> | 2011-11-01 01:24:45 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2011-11-01 01:24:45 +0000 |
commit | 681460f954e9c13ffd2f02f27bba048ccf90abaf (patch) | |
tree | a3702cde4b26f72b8b3d61c691449c580bd12228 /lib/Target/ARM/ARMInstrFormats.td | |
parent | 7bdf0060a00f04ad03d3c6f294d8db6f4951dbc2 (diff) | |
download | llvm-681460f954e9c13ffd2f02f27bba048ccf90abaf.tar.gz llvm-681460f954e9c13ffd2f02f27bba048ccf90abaf.tar.bz2 llvm-681460f954e9c13ffd2f02f27bba048ccf90abaf.tar.xz |
ARM VLD/VST assembly parsing for symbolic address operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143413 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMInstrFormats.td')
-rw-r--r-- | lib/Target/ARM/ARMInstrFormats.td | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMInstrFormats.td b/lib/Target/ARM/ARMInstrFormats.td index 43f1194897..f9969b9e6f 100644 --- a/lib/Target/ARM/ARMInstrFormats.td +++ b/lib/Target/ARM/ARMInstrFormats.td @@ -290,6 +290,26 @@ class InstThumb<AddrMode am, int sz, IndexMode im, let DecoderNamespace = "Thumb"; } +// Pseudo-instructions for alternate assembly syntax (never used by codegen). +// These are aliases that require C++ handling to convert to the target +// instruction, while InstAliases can be handled directly by tblgen. +class AsmPseudoInst<dag iops> + : InstTemplate<AddrModeNone, 0, IndexModeNone, Pseudo, GenericDomain, + "", NoItinerary> { + let OutOperandList = (ops); + let InOperandList = iops; + let Pattern = []; + let isCodeGenOnly = 0; // So we get asm matcher for it. + let isPseudo = 1; +} + +class ARMAsmPseudo<dag iops> : AsmPseudoInst<iops>, Requires<[IsARM]>; +class tAsmPseudo<dag iops> : AsmPseudoInst<iops>, Requires<[IsThumb]>; +class t2AsmPseudo<dag iops> : AsmPseudoInst<iops>, Requires<[IsThumb2]>; +class VFP2AsmPseudo<dag iops> : AsmPseudoInst<iops>, Requires<[HasVFP2]>; +class NEONAsmPseudo<dag iops> : AsmPseudoInst<iops>, Requires<[HasNEON]>; + +// Pseudo instructions for the code generator. class PseudoInst<dag oops, dag iops, InstrItinClass itin, list<dag> pattern> : InstTemplate<AddrModeNone, 0, IndexModeNone, Pseudo, GenericDomain, "", itin> { |