aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/ARMInstrInfo.td
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-11-30 00:00:42 +0000
committerBob Wilson <bob.wilson@apple.com>2010-11-30 00:00:42 +0000
commit8e0c7b52877983b4838e54e233449912fc1a2325 (patch)
treea39a12a928b16552ab71ce2980e01b8ed7fbd1e8 /lib/Target/ARM/ARMInstrInfo.td
parent173fb1421ac03999561e365d8413e8983189dab3 (diff)
downloadexternal_llvm-8e0c7b52877983b4838e54e233449912fc1a2325.zip
external_llvm-8e0c7b52877983b4838e54e233449912fc1a2325.tar.gz
external_llvm-8e0c7b52877983b4838e54e233449912fc1a2325.tar.bz2
Fix the encoding of VLD4-dup alignment.
The only reasonable way I could find to do this is to provide an alternate version of the addrmode6 operand with a different encoding function. Use it for all the VLD-dup instructions for the sake of consistency. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120358 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMInstrInfo.td')
-rw-r--r--lib/Target/ARM/ARMInstrInfo.td9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMInstrInfo.td b/lib/Target/ARM/ARMInstrInfo.td
index b9b1b7e..d2407c6 100644
--- a/lib/Target/ARM/ARMInstrInfo.td
+++ b/lib/Target/ARM/ARMInstrInfo.td
@@ -540,6 +540,15 @@ def am6offset : Operand<i32> {
let EncoderMethod = "getAddrMode6OffsetOpValue";
}
+// Special version of addrmode6 to handle alignment encoding for VLD-dup
+// instructions, specifically VLD4-dup.
+def addrmode6dup : Operand<i32>,
+ ComplexPattern<i32, 2, "SelectAddrMode6", [], [SDNPWantParent]>{
+ let PrintMethod = "printAddrMode6Operand";
+ let MIOperandInfo = (ops GPR:$addr, i32imm);
+ let EncoderMethod = "getAddrMode6DupAddressOpValue";
+}
+
// addrmodepc := pc + reg
//
def addrmodepc : Operand<i32>,