diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-09-01 01:27:33 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-09-01 01:27:33 +0000 |
commit | 93912739c9afec2482ea3c824ba0e40ab9bdfc03 (patch) | |
tree | 20d535dfd03aa99d1727de9f46599fcb4b45d432 /lib/Target/ARM/ARMInstrFormats.td | |
parent | 17222df0ecf8b0fbcf17b050dd18174ca845fbe6 (diff) | |
download | external_llvm-93912739c9afec2482ea3c824ba0e40ab9bdfc03.zip external_llvm-93912739c9afec2482ea3c824ba0e40ab9bdfc03.tar.gz external_llvm-93912739c9afec2482ea3c824ba0e40ab9bdfc03.tar.bz2 |
Rest of addrmode2 instruction encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55593 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMInstrFormats.td')
-rw-r--r-- | lib/Target/ARM/ARMInstrFormats.td | 100 |
1 files changed, 96 insertions, 4 deletions
diff --git a/lib/Target/ARM/ARMInstrFormats.td b/lib/Target/ARM/ARMInstrFormats.td index 7e6015d..798f8c3 100644 --- a/lib/Target/ARM/ARMInstrFormats.td +++ b/lib/Target/ARM/ARMInstrFormats.td @@ -142,6 +142,8 @@ class AI2<bits<4> opcod, dag oops, dag iops, Format f, string opc, asm, "", pattern> { let Inst{26-27} = 1; } + +// loads class AI2ldw<bits<4> opcod, dag oops, dag iops, Format f, string opc, string asm, list<dag> pattern> : AI2<opcod, oops, iops, f, opc, asm, pattern> { @@ -159,6 +161,24 @@ class AI2ldb<bits<4> opcod, dag oops, dag iops, Format f, string opc, let Inst{24} = 1; // P bit } +// stores +class AI2stw<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, list<dag> pattern> + : AI2<opcod, oops, iops, f, opc, asm, pattern> { + let Inst{20} = 0; // load bit + let Inst{21} = 0; // W bit + let Inst{22} = 0; // B bit + let Inst{24} = 1; // P bit +} +class AI2stb<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, list<dag> pattern> + : AI2<opcod, oops, iops, f, opc, asm, pattern> { + let Inst{20} = 0; // load bit + let Inst{21} = 0; // W bit + let Inst{22} = 1; // B bit + let Inst{24} = 1; // P bit +} + class AI3<bits<4> opcod, dag oops, dag iops, Format f, string opc, string asm, list<dag> pattern> : I<opcod, oops, iops, AddrMode3, Size4Bytes, IndexModeNone, f, opc, @@ -173,20 +193,92 @@ class AI1x2<bits<4> opcod, dag oops, dag iops, Format f, string opc, asm, "", pattern>; // Pre-indexed ops -class AI2pr<bits<4> opcod, dag oops, dag iops, Format f, string opc, +// loads +class AI2ldwpr<bits<4> opcod, dag oops, dag iops, Format f, string opc, string asm, string cstr, list<dag> pattern> : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePre, f, opc, - asm, cstr, pattern>; + asm, cstr, pattern> { + let Inst{20} = 1; // load bit + let Inst{21} = 1; // W bit + let Inst{22} = 0; // B bit + let Inst{24} = 1; // P bit +} +class AI2ldbpr<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, string cstr, list<dag> pattern> + : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePre, f, opc, + asm, cstr, pattern> { + let Inst{20} = 1; // load bit + let Inst{21} = 1; // W bit + let Inst{22} = 1; // B bit + let Inst{24} = 1; // P bit +} + +// stores +class AI2stwpr<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, string cstr, list<dag> pattern> + : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePre, f, opc, + asm, cstr, pattern> { + let Inst{20} = 0; // load bit + let Inst{21} = 1; // W bit + let Inst{22} = 0; // B bit + let Inst{24} = 1; // P bit +} +class AI2stbpr<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, string cstr, list<dag> pattern> + : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePre, f, opc, + asm, cstr, pattern> { + let Inst{20} = 0; // load bit + let Inst{21} = 1; // W bit + let Inst{22} = 1; // B bit + let Inst{24} = 1; // P bit +} + class AI3pr<bits<4> opcod, dag oops, dag iops, Format f, string opc, string asm, string cstr, list<dag> pattern> : I<opcod, oops, iops, AddrMode3, Size4Bytes, IndexModePre, f, opc, asm, cstr, pattern>; // Post-indexed ops -class AI2po<bits<4> opcod, dag oops, dag iops, Format f, string opc, +// loads +class AI2ldwpo<bits<4> opcod, dag oops, dag iops, Format f, string opc, string asm, string cstr, list<dag> pattern> : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePost, f, opc, - asm, cstr,pattern>; + asm, cstr,pattern> { + let Inst{20} = 1; // load bit + let Inst{21} = 0; // W bit + let Inst{22} = 0; // B bit + let Inst{24} = 0; // P bit +} +class AI2ldbpo<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, string cstr, list<dag> pattern> + : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePost, f, opc, + asm, cstr,pattern> { + let Inst{20} = 1; // load bit + let Inst{21} = 0; // W bit + let Inst{22} = 1; // B bit + let Inst{24} = 0; // P bit +} + +// stores +class AI2stwpo<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, string cstr, list<dag> pattern> + : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePost, f, opc, + asm, cstr,pattern> { + let Inst{20} = 0; // load bit + let Inst{21} = 0; // W bit + let Inst{22} = 0; // B bit + let Inst{24} = 0; // P bit +} +class AI2stbpo<bits<4> opcod, dag oops, dag iops, Format f, string opc, + string asm, string cstr, list<dag> pattern> + : I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModePost, f, opc, + asm, cstr,pattern> { + let Inst{20} = 0; // load bit + let Inst{21} = 0; // W bit + let Inst{22} = 1; // B bit + let Inst{24} = 0; // P bit +} + class AI3po<bits<4> opcod, dag oops, dag iops, Format f, string opc, string asm, string cstr, list<dag> pattern> : I<opcod, oops, iops, AddrMode3, Size4Bytes, IndexModePost, f, opc, |