summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2014-03-25 13:01:06 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2014-03-25 13:01:06 +0000
commit3527e5fcb374ae48128a96935387490908a06b97 (patch)
tree7d96e9555ec75f165b4b240a9356dbfab3a4e2dd
parent3ec862b7aed2e529bdd8ef8c060834136e598f06 (diff)
downloadllvm-3527e5fcb374ae48128a96935387490908a06b97.tar.gz
llvm-3527e5fcb374ae48128a96935387490908a06b97.tar.bz2
llvm-3527e5fcb374ae48128a96935387490908a06b97.tar.xz
[mips] '.set at=$0' should be equivalent to '.set noat'
Differential Revision: http://llvm-reviews.chandlerc.com/D3171 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204714 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/Mips/AsmParser/MipsAsmParser.cpp2
-rw-r--r--test/MC/Mips/mips-noat.s15
-rw-r--r--test/MC/Mips/set-at-directive-explicit-at.s3
3 files changed, 15 insertions, 5 deletions
diff --git a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index 74e19c5be3..078b554e2e 100644
--- a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -2352,7 +2352,7 @@ bool MipsAsmParser::parseSetAtDirective() {
return false;
}
- if (AtRegNo < 1 || AtRegNo > 31) {
+ if (AtRegNo < 0 || AtRegNo > 31) {
reportParseError("unexpected token in statement");
return false;
}
diff --git a/test/MC/Mips/mips-noat.s b/test/MC/Mips/mips-noat.s
index 152a1ee406..b83c517807 100644
--- a/test/MC/Mips/mips-noat.s
+++ b/test/MC/Mips/mips-noat.s
@@ -1,7 +1,8 @@
# RUN: not llvm-mc %s -triple=mips-unknown-linux 2>%t0 | FileCheck %s
# RUN: FileCheck -check-prefix=ERROR %s < %t0
+# Check that using the assembler temporary when .set noat is in effect is an error.
-# We start with $at enabled
+# We start with the assembler temporary enabled
# CHECK-LABEL: test1:
# CHECK: lui $1, 1
# CHECK: addu $1, $1, $2
@@ -9,10 +10,8 @@
test1:
lw $2, 65536($2)
-# Check that using $at when .set noat is in effect is an error.
# FIXME: It would be better if the error pointed at the mnemonic instead of the newline
-# ERROR: mips-noat.s:[[@LINE+5]]:1: error: Pseudo instruction requires $at, which is not available
-# ERROR-NOT: error
+# ERROR: mips-noat.s:[[@LINE+4]]:1: error: Pseudo instruction requires $at, which is not available
test2:
.set noat
lw $2, 65536($2)
@@ -25,3 +24,11 @@ test2:
test3:
.set at
lw $2, 65536($2)
+
+# FIXME: It would be better if the error pointed at the mnemonic instead of the newline
+# ERROR: mips-noat.s:[[@LINE+4]]:1: error: Pseudo instruction requires $at, which is not available
+test4:
+ .set at=$0
+ lw $2, 65536($2)
+
+# ERROR-NOT: error
diff --git a/test/MC/Mips/set-at-directive-explicit-at.s b/test/MC/Mips/set-at-directive-explicit-at.s
index b8c8adc881..71f1a98fae 100644
--- a/test/MC/Mips/set-at-directive-explicit-at.s
+++ b/test/MC/Mips/set-at-directive-explicit-at.s
@@ -26,6 +26,9 @@ foo:
# CHECK: jr $1 # encoding: [0x08,0x00,0x20,0x00]
.set noat
jr $at
+# CHECK: jr $1 # encoding: [0x08,0x00,0x20,0x00]
+ .set at=$0
+ jr $at
# CHECK: jr $16 # encoding: [0x08,0x00,0x00,0x02]
# WARNINGS: :[[@LINE+2]]:12: warning: Used $16 with ".set at=$16"