diff options
author | Johnny Chen <johnny.chen@apple.com> | 2011-03-31 19:28:35 +0000 |
---|---|---|
committer | Johnny Chen <johnny.chen@apple.com> | 2011-03-31 19:28:35 +0000 |
commit | 7b203f9caedfbe94e165fa8f989f89ea876c0144 (patch) | |
tree | 0c38b9e327049d502f9e00055ba39dfc0f0a0390 | |
parent | 5901ea7e671058b68f54f79e33bceded883b62cb (diff) | |
download | bcm5719-llvm-7b203f9caedfbe94e165fa8f989f89ea876c0144.tar.gz bcm5719-llvm-7b203f9caedfbe94e165fa8f989f89ea876c0144.zip |
Fix single word and unsigned byte data transfer instruction encodings so that
Inst{4} = 0.
rdar://problem/9213022
llvm-svn: 128662
-rw-r--r-- | llvm/lib/Target/ARM/ARMInstrInfo.td | 2 | ||||
-rw-r--r-- | llvm/test/MC/Disassembler/ARM/invalid-LDRrs-arm.txt | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td index 77068222d6d..18127f398b9 100644 --- a/llvm/lib/Target/ARM/ARMInstrInfo.td +++ b/llvm/lib/Target/ARM/ARMInstrInfo.td @@ -991,6 +991,7 @@ multiclass AI_ldr1<bit isByte, string opc, InstrItinClass iii, [(set GPR:$Rt, (opnode ldst_so_reg:$shift))]> { bits<4> Rt; bits<17> shift; + let shift{4} = 0; // Inst{4} = 0 let Inst{23} = shift{12}; // U (add = ('U' == 1)) let Inst{19-16} = shift{16-13}; // Rn let Inst{15-12} = Rt; @@ -1020,6 +1021,7 @@ multiclass AI_str1<bit isByte, string opc, InstrItinClass iii, [(opnode GPR:$Rt, ldst_so_reg:$shift)]> { bits<4> Rt; bits<17> shift; + let shift{4} = 0; // Inst{4} = 0 let Inst{23} = shift{12}; // U (add = ('U' == 1)) let Inst{19-16} = shift{16-13}; // Rn let Inst{15-12} = Rt; diff --git a/llvm/test/MC/Disassembler/ARM/invalid-LDRrs-arm.txt b/llvm/test/MC/Disassembler/ARM/invalid-LDRrs-arm.txt new file mode 100644 index 00000000000..23a0b85f361 --- /dev/null +++ b/llvm/test/MC/Disassembler/ARM/invalid-LDRrs-arm.txt @@ -0,0 +1,4 @@ +# RUN: llvm-mc --disassemble %s -triple=arm-apple-darwin9 |& grep {invalid instruction encoding} + +# LDR (register) has encoding Inst{4} = 0. +0xba 0xae 0x9f 0x57 |