[llvm] r204822 - [mips] Add support to the '.dword' directive.
Matheus Almeida
matheus.almeida at imgtec.com
Wed Mar 26 08:44:19 PDT 2014
Author: matheusalmeida
Date: Wed Mar 26 10:44:18 2014
New Revision: 204822
URL: http://llvm.org/viewvc/llvm-project?rev=204822&view=rev
Log:
[mips] Add support to the '.dword' directive.
The '.dword' directive accepts a list of expressions and emits
them in 8-byte chunks in successive locations.
Added:
llvm/trunk/test/MC/Mips/mips-data-directives.s
Modified:
llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
Modified: llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp?rev=204822&r1=204821&r2=204822&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Wed Mar 26 10:44:18 2014
@@ -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();
Added: llvm/trunk/test/MC/Mips/mips-data-directives.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/mips-data-directives.s?rev=204822&view=auto
==============================================================================
--- llvm/trunk/test/MC/Mips/mips-data-directives.s (added)
+++ llvm/trunk/test/MC/Mips/mips-data-directives.s Wed Mar 26 10:44:18 2014
@@ -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
More information about the llvm-commits
mailing list