summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJack Carter <jack.carter@imgtec.com>2013-04-17 00:18:04 +0000
committerJack Carter <jack.carter@imgtec.com>2013-04-17 00:18:04 +0000
commit8afc8b7e63d5ce2d027e92934d16b19e5ba2db59 (patch)
treee3e10f939a7bd0ac88c34fff21c3d9e547d627cc /test
parent4afa9b7ffc636104e225e815afc568af27a134da (diff)
downloadllvm-8afc8b7e63d5ce2d027e92934d16b19e5ba2db59.tar.gz
llvm-8afc8b7e63d5ce2d027e92934d16b19e5ba2db59.tar.bz2
llvm-8afc8b7e63d5ce2d027e92934d16b19e5ba2db59.tar.xz
Mips assembler: Enable handling of nested expressions
This patch allows the Mips assembler to parse and emit nested expressions as instruction operands. It also extends the expansion of memory instructions when an offset is given as an expression. Contributer: Vladimir Medic git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179657 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/MC/Mips/expr1.s26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/MC/Mips/expr1.s b/test/MC/Mips/expr1.s
new file mode 100644
index 0000000000..67664c1a2a
--- /dev/null
+++ b/test/MC/Mips/expr1.s
@@ -0,0 +1,26 @@
+# RUN: llvm-mc %s -triple=mipsel-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
+# Check that the assembler can handle the expressions as operands.
+# CHECK: .text
+# CHECK: .globl foo
+# CHECK: foo:
+# CHECK: lw $4, %lo(foo)($4) # encoding: [A,A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lw $4, 56($4) # encoding: [0x38,0x00,0x84,0x8c]
+# CHECK: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: lw $4, %lo(foo+8)($4) # encoding: [0x08'A',A,0x84,0x8c]
+# CHECK: # fixup A - offset: 0, value: foo@ABS_LO, kind: fixup_Mips_LO16
+# CHECK: .space 64
+
+ .globl foo
+ .ent foo
+foo:
+ lw $4,%lo(foo)($4)
+ lw $4,((10 + 4) * 4)($4)
+ lw $4,%lo (2 * 4) + foo($4)
+ lw $4,%lo((2 * 4) + foo)($4)
+ lw $4,(((%lo ((2 * 4) + foo))))($4)
+ .space 64
+ .end foo