summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/MC/Mips/macro-aliases-invalid-wrong-error.s38
-rw-r--r--llvm/test/MC/Mips/macro-aliases.s35
2 files changed, 73 insertions, 0 deletions
diff --git a/llvm/test/MC/Mips/macro-aliases-invalid-wrong-error.s b/llvm/test/MC/Mips/macro-aliases-invalid-wrong-error.s
new file mode 100644
index 00000000000..b87646d0b09
--- /dev/null
+++ b/llvm/test/MC/Mips/macro-aliases-invalid-wrong-error.s
@@ -0,0 +1,38 @@
+# RUN: not llvm-mc -arch=mips %s 2>%t1
+# RUN: FileCheck --check-prefix=O32 %s < %t1
+
+# RUN: not llvm-mc -arch=mips64 %s 2>%t1
+# RUN: FileCheck --check-prefix=N64 %s < %t1
+
+# Check that subu only rejects any non-constant values.
+
+.globl end
+ subu $4, $4, %lo($start) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $4, $start # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $a4, $a4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $4, %hi(end) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $4, end + 4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $4, end # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $4, sp # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+
+ subu $4, %lo($start) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $start # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, $a4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, %hi(end) # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, end + 4 # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, end # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+ subu $4, sp # O32: [[@LINE]]:{{[0-9]+}}: error: unexpected token in argument list
+ # N64: [[@LINE-1]]:{{[0-9]+}}: error: unexpected token in argument list
+
+$start:
diff --git a/llvm/test/MC/Mips/macro-aliases.s b/llvm/test/MC/Mips/macro-aliases.s
new file mode 100644
index 00000000000..daa1d8b2437
--- /dev/null
+++ b/llvm/test/MC/Mips/macro-aliases.s
@@ -0,0 +1,35 @@
+# RUN: llvm-mc -arch=mips -mcpu=mips32r2 %s -show-inst | FileCheck %s
+
+# Test that subu accepts constant operands and inverts them when
+# rendering the operand.
+
+ subu $4, $4, 4 # CHECK: ADDiu
+ # CHECK; Imm:-4
+ subu $gp, $gp, 4 # CHECK: ADDiu
+ # CHECK; Imm:-4
+ subu $sp, $sp, 4 # CHECK: ADDiu
+ # CHECK; Imm:-4
+ subu $4, $4, -4 # CHECK: ADDiu
+ # CHECK; Imm:4
+ subu $gp, $gp, -4 # CHECK: ADDiu
+ # CHECK; Imm:4
+ subu $sp, $sp, -4 # CHECK: ADDiu
+ # CHECK; Imm:4
+ subu $sp, $sp, -(4 + 4) # CHECK: ADDiu
+ # CHECK: Imm:8
+
+ subu $4, 8 # CHECK: ADDiu
+ # CHECK; Imm:-8
+ subu $gp, 8 # CHECK: ADDiu
+ # CHECK; Imm:-8
+ subu $sp, 8 # CHECK: ADDiu
+ # CHECK; Imm:-8
+ subu $4, -8 # CHECK: ADDiu
+ # CHECK; Imm:8
+ subu $gp, -8 # CHECK: ADDiu
+ # CHECK; Imm:8
+ subu $sp, -8 # CHECK: ADDiu
+ # CHECK; Imm:8
+ subu $sp, -(4 + 4) # CHECK: ADDiu
+ # CHECK: Imm:8
+
OpenPOWER on IntegriCloud