[mips] Add support to the '.dword' directive.
authorMatheus Almeida <matheus.almeida@imgtec.com>
Wed, 26 Mar 2014 15:44:18 +0000 (15:44 +0000)
committerMatheus Almeida <matheus.almeida@imgtec.com>
Wed, 26 Mar 2014 15:44:18 +0000 (15:44 +0000)
The '.dword' directive accepts a list of expressions and emits
them in 8-byte chunks in successive locations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204822 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/AsmParser/MipsAsmParser.cpp
test/MC/Mips/mips-data-directives.s [new file with mode: 0644]

index 88e1407583a29304b9514a534159b75fa234f608..36c4e2aa9edaf8248c34a758767699e166b1e414 100644 (file)
@@ -2629,6 +2629,11 @@ bool MipsAsmParser::parseDirectiveOption() {
 bool MipsAsmParser::ParseDirective(AsmToken DirectiveID) {
   StringRef IDVal = DirectiveID.getString();
 
+  if (IDVal == ".dword") {
+    parseDataDirective(8, DirectiveID.getLoc());
+    return false;
+  }
+
   if (IDVal == ".ent") {
     // Ignore this directive for now.
     Parser.Lex();
diff --git a/test/MC/Mips/mips-data-directives.s b/test/MC/Mips/mips-data-directives.s
new file mode 100644 (file)
index 0000000..630a807
--- /dev/null
@@ -0,0 +1,36 @@
+# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 | \
+# RUN:   FileCheck %s -check-prefix=CHECK-ASM
+#
+# RUN: llvm-mc %s -arch=mips -mcpu=mips32r2 -filetype=obj -o - | \
+# RUN:   llvm-readobj -sections -section-data -section-relocations - | \
+# RUN:     FileCheck %s -check-prefix=CHECK-OBJ
+
+# CHECK-ASM: .4byte 3735929054
+# CHECK-ASM: .8byte -2401050962867405073
+# CHECK-ASM: .4byte label
+# CHECK-ASM: .8byte label
+
+# Checking if the data and reloations were correctly emitted
+# CHECK-OBJ:  Section {
+# CHECK-OBJ:    Name: .data (51)
+# CHECK-OBJ:    SectionData (
+# CHECK-OBJ:      0000: DEADC0DE DEADC0DE DEADBEEF 00000000
+# CHECK-OBJ:      0010: 00000000 00000000
+# CHECK-OBJ:    )
+# CHECK-OBJ:  }
+
+# CHECK-OBJ:  Section {
+# CHECK-OBJ:    Name: .rel.data (47)
+# CHECK-OBJ:    Relocations [
+# CHECK-OBJ:      0xC R_MIPS_32 .data 0x0
+# CHECK-OBJ:      0x10 R_MIPS_64 .data 0x0
+# CHECK-OBJ:    ]
+# CHECK-OBJ:  }
+
+.data
+label:
+        .word 0xdeadc0de
+        .dword 0xdeadc0dedeadbeef
+
+        .word label
+        .dword label