summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorMihai Popa <mihail.popa@gmail.com>2013-07-03 09:21:44 +0000
committerMihai Popa <mihail.popa@gmail.com>2013-07-03 09:21:44 +0000
commitd36cbaa4231e51a42d761d298ff20aaa6e88d014 (patch)
tree978fd1c7d3586a4133e477ce7e8d4ead7357e2ad /llvm/test
parent36b2417f18f4b44d184cb54b5395d2f3e4397b18 (diff)
downloadbcm5719-llvm-d36cbaa4231e51a42d761d298ff20aaa6e88d014.tar.gz
bcm5719-llvm-d36cbaa4231e51a42d761d298ff20aaa6e88d014.zip
This corrects the implementation of Thumb ADR instruction. There are three issues:
1. it should accept only 4-byte aligned addresses 2. the maximum offset should be 1020 3. it should be encoded with the offset scaled by two bits llvm-svn: 185528
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/MC/ARM/basic-thumb-instructions.s8
-rw-r--r--llvm/test/MC/ARM/basic-thumb2-instructions.s8
-rw-r--r--llvm/test/MC/Disassembler/ARM/thumb1.txt6
3 files changed, 16 insertions, 6 deletions
diff --git a/llvm/test/MC/ARM/basic-thumb-instructions.s b/llvm/test/MC/ARM/basic-thumb-instructions.s
index 22e21da88e4..b48db9a4d8e 100644
--- a/llvm/test/MC/ARM/basic-thumb-instructions.s
+++ b/llvm/test/MC/ARM/basic-thumb-instructions.s
@@ -85,11 +85,15 @@ _func:
@ ADR
@------------------------------------------------------------------------------
adr r2, _baz
- adr r2, #3
+ adr r5, #0
+ adr r2, #4
+ adr r3, #1020
@ CHECK: adr r2, _baz @ encoding: [A,0xa2]
@ fixup A - offset: 0, value: _baz, kind: fixup_thumb_adr_pcrel_10
-@ CHECK: adr r2, #3 @ encoding: [0x03,0xa2]
+@ CHECK: adr r5, #0 @ encoding: [0x00,0xa5]
+@ CHECK: adr r2, #4 @ encoding: [0x01,0xa2]
+@ CHECK: adr r3, #1020 @ encoding: [0xff,0xa3]
@------------------------------------------------------------------------------
@ ASR (immediate)
diff --git a/llvm/test/MC/ARM/basic-thumb2-instructions.s b/llvm/test/MC/ARM/basic-thumb2-instructions.s
index b529a26ade8..c331d5d522b 100644
--- a/llvm/test/MC/ARM/basic-thumb2-instructions.s
+++ b/llvm/test/MC/ARM/basic-thumb2-instructions.s
@@ -134,12 +134,14 @@ _func:
@------------------------------------------------------------------------------
subw r11, pc, #3270
+ adr.w r2, #3
adr.w r11, #-826
adr.w r1, #-0x0
-@ CHECK: subw r11, pc, #3270 @ encoding: [0xaf,0xf6,0xc6,0x4b]
-@ CHECK: adr.w r11, #-826 @ encoding: [0xaf,0xf2,0x3a,0x3b]
-@ CHECK: adr.w r1, #-0 @ encoding: [0xaf,0xf2,0x00,0x01]
+@ CHECK: subw r11, pc, #3270 @ encoding: [0xaf,0xf6,0xc6,0x4b]
+@ CHECK: adr.w r2, #3 @ encoding: [0x0f,0xf2,0x03,0x02]
+@ CHECK: adr.w r11, #-826 @ encoding: [0xaf,0xf2,0x3a,0x3b]
+@ CHECK: adr.w r1, #-0 @ encoding: [0xaf,0xf2,0x00,0x01]
@------------------------------------------------------------------------------
@ AND (immediate)
diff --git a/llvm/test/MC/Disassembler/ARM/thumb1.txt b/llvm/test/MC/Disassembler/ARM/thumb1.txt
index 7362d9b9b2d..a129abba70f 100644
--- a/llvm/test/MC/Disassembler/ARM/thumb1.txt
+++ b/llvm/test/MC/Disassembler/ARM/thumb1.txt
@@ -54,8 +54,12 @@
#------------------------------------------------------------------------------
# ADR
#------------------------------------------------------------------------------
-# CHECK: adr r2, #3
+# CHECK: adr r5, #0
+# CHECK: adr r2, #12
+# CHECK: adr r3, #1020
+0x00 0xa5
0x03 0xa2
+0xff 0xa3
#------------------------------------------------------------------------------
# ASR (immediate)
OpenPOWER on IntegriCloud