summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp24
-rw-r--r--llvm/lib/Target/Mips/MipsAsmPrinter.cpp20
-rw-r--r--llvm/lib/Target/Mips/MipsTargetStreamer.h9
-rw-r--r--llvm/test/CodeGen/Mips/fpneeded.ll16
-rw-r--r--llvm/test/CodeGen/Mips/fpnotneeded.ll10
-rw-r--r--llvm/test/CodeGen/Mips/helloworld.ll2
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_1.ll2
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_10.ll6
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_3.ll12
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_4.ll12
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_5.ll12
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_6.ll12
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_7.ll12
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_8.ll6
-rw-r--r--llvm/test/CodeGen/Mips/mips16_32_9.ll6
-rw-r--r--llvm/test/CodeGen/Mips/null.ll2
16 files changed, 98 insertions, 65 deletions
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
index 48af1a71ca3..738fa2b204d 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp
@@ -47,6 +47,18 @@ void MipsTargetAsmStreamer::emitDirectiveSetNoMicroMips() {
OS << "\t.set\tnomicromips\n";
}
+void MipsTargetAsmStreamer::emitDirectiveSetMips16() {
+ OS << "\t.set\tmips16\n";
+}
+
+void MipsTargetAsmStreamer::emitDirectiveSetNoMips16() {
+ OS << "\t.set\tnomips16\n";
+}
+
+void MipsTargetAsmStreamer::emitDirectiveEnt(const MCSymbol &Symbol) {
+ OS << "\t.ent\t" << Symbol.getName() << '\n';
+}
+
void MipsTargetAsmStreamer::emitDirectiveAbiCalls() { OS << "\t.abicalls\n"; }
void MipsTargetAsmStreamer::emitDirectiveOptionPic0() {
OS << "\t.option\tpic0\n";
@@ -81,6 +93,18 @@ void MipsTargetELFStreamer::emitDirectiveSetNoMicroMips() {
MicroMipsEnabled = false;
}
+void MipsTargetELFStreamer::emitDirectiveSetMips16() {
+ // FIXME: implement.
+}
+
+void MipsTargetELFStreamer::emitDirectiveSetNoMips16() {
+ // FIXME: implement.
+}
+
+void MipsTargetELFStreamer::emitDirectiveEnt(const MCSymbol &Symbol) {
+ // FIXME: implement.
+}
+
void MipsTargetELFStreamer::emitDirectiveAbiCalls() {
MCAssembler &MCA = getStreamer().getAssembler();
unsigned Flags = MCA.getELFHeaderEFlags();
diff --git a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
index 2bd6df7fd3f..2f49e74ab82 100644
--- a/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
+++ b/llvm/lib/Target/Mips/MipsAsmPrinter.cpp
@@ -265,19 +265,19 @@ const char *MipsAsmPrinter::getCurrentABIString() const {
}
void MipsAsmPrinter::EmitFunctionEntryLabel() {
+ MipsTargetStreamer &TS = getTargetStreamer();
if (Subtarget->inMicroMipsMode())
- getTargetStreamer().emitDirectiveSetMicroMips();
+ TS.emitDirectiveSetMicroMips();
+ // leave out until FSF available gas has micromips changes
+ // else
+ // TS.emitDirectiveSetNoMicroMips();
- if (OutStreamer.hasRawTextSupport()) {
- if (Subtarget->inMips16Mode())
- OutStreamer.EmitRawText(StringRef("\t.set\tmips16"));
- else
- OutStreamer.EmitRawText(StringRef("\t.set\tnomips16"));
- // leave out until FSF available gas has micromips changes
- // OutStreamer.EmitRawText(StringRef("\t.set\tnomicromips"));
- OutStreamer.EmitRawText("\t.ent\t" + Twine(CurrentFnSym->getName()));
- }
+ if (Subtarget->inMips16Mode())
+ TS.emitDirectiveSetMips16();
+ else
+ TS.emitDirectiveSetNoMips16();
+ TS.emitDirectiveEnt(*CurrentFnSym);
OutStreamer.EmitLabel(CurrentFnSym);
}
diff --git a/llvm/lib/Target/Mips/MipsTargetStreamer.h b/llvm/lib/Target/Mips/MipsTargetStreamer.h
index 4d1dd0090da..4c0446fc3ce 100644
--- a/llvm/lib/Target/Mips/MipsTargetStreamer.h
+++ b/llvm/lib/Target/Mips/MipsTargetStreamer.h
@@ -21,6 +21,9 @@ public:
virtual void emitMipsHackELFFlags(unsigned Flags) = 0;
virtual void emitDirectiveSetMicroMips() = 0;
virtual void emitDirectiveSetNoMicroMips() = 0;
+ virtual void emitDirectiveSetMips16() = 0;
+ virtual void emitDirectiveSetNoMips16() = 0;
+ virtual void emitDirectiveEnt(const MCSymbol &Symbol) = 0;
virtual void emitDirectiveAbiCalls() = 0;
virtual void emitDirectiveOptionPic0() = 0;
};
@@ -34,6 +37,9 @@ public:
virtual void emitMipsHackELFFlags(unsigned Flags);
virtual void emitDirectiveSetMicroMips();
virtual void emitDirectiveSetNoMicroMips();
+ virtual void emitDirectiveSetMips16();
+ virtual void emitDirectiveSetNoMips16();
+ virtual void emitDirectiveEnt(const MCSymbol &Symbol);
virtual void emitDirectiveAbiCalls();
virtual void emitDirectiveOptionPic0();
};
@@ -52,6 +58,9 @@ public:
virtual void emitMipsHackELFFlags(unsigned Flags);
virtual void emitDirectiveSetMicroMips();
virtual void emitDirectiveSetNoMicroMips();
+ virtual void emitDirectiveSetMips16();
+ virtual void emitDirectiveSetNoMips16();
+ virtual void emitDirectiveEnt(const MCSymbol &Symbol);
virtual void emitDirectiveAbiCalls();
virtual void emitDirectiveOptionPic0();
};
diff --git a/llvm/test/CodeGen/Mips/fpneeded.ll b/llvm/test/CodeGen/Mips/fpneeded.ll
index dcdebb92e40..fdd8e8f707e 100644
--- a/llvm/test/CodeGen/Mips/fpneeded.ll
+++ b/llvm/test/CodeGen/Mips/fpneeded.ll
@@ -10,7 +10,7 @@ entry:
ret float 1.000000e+00
}
-; 32: .set nomips16 # @fv
+; 32: .set nomips16
; 32: .ent fv
; 32: .set noreorder
; 32: .set nomacro
@@ -26,7 +26,7 @@ entry:
ret double 2.000000e+00
}
-; 32: .set nomips16 # @dv
+; 32: .set nomips16
; 32: .ent dv
; 32: .set noreorder
; 32: .set nomacro
@@ -44,7 +44,7 @@ entry:
ret void
}
-; 32: .set nomips16 # @vf
+; 32: .set nomips16
; 32: .ent vf
; 32: .set noreorder
; 32: .set nomacro
@@ -62,7 +62,7 @@ entry:
ret void
}
-; 32: .set nomips16 # @vd
+; 32: .set nomips16
; 32: .ent vd
; 32: .set noreorder
; 32: .set nomacro
@@ -83,7 +83,7 @@ entry:
ret void
}
-; 32: .set nomips16 # @foo1
+; 32: .set nomips16
; 32: .ent foo1
; 32: .set noreorder
; 32: .set nomacro
@@ -102,7 +102,7 @@ entry:
}
-; 32: .set nomips16 # @foo2
+; 32: .set nomips16
; 32: .ent foo2
; 32: .set noreorder
; 32: .set nomacro
@@ -120,7 +120,7 @@ entry:
ret void
}
-; 32: .set nomips16 # @foo3
+; 32: .set nomips16
; 32: .ent foo3
; 32: .set noreorder
; 32: .set nomacro
@@ -138,7 +138,7 @@ entry:
ret void
}
-; 32: .set mips16 # @vv
+; 32: .set mips16
; 32: .ent vv
; 32: save {{.+}}
diff --git a/llvm/test/CodeGen/Mips/fpnotneeded.ll b/llvm/test/CodeGen/Mips/fpnotneeded.ll
index 6a4363c5813..e12d7baacdb 100644
--- a/llvm/test/CodeGen/Mips/fpnotneeded.ll
+++ b/llvm/test/CodeGen/Mips/fpnotneeded.ll
@@ -10,7 +10,7 @@ entry:
ret void
}
-; 32: .set mips16 # @vv
+; 32: .set mips16
; 32: .ent vv
; 32: save {{.+}}
@@ -23,7 +23,7 @@ entry:
ret i32 %0
}
-; 32: .set mips16 # @iv
+; 32: .set mips16
; 32: .ent iv
; 32: save {{.+}}
@@ -39,7 +39,7 @@ entry:
ret void
}
-; 32: .set mips16 # @vif
+; 32: .set mips16
; 32: .ent vif
; 32: save {{.+}}
@@ -52,7 +52,7 @@ entry:
ret void
}
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: save {{.+}}
@@ -69,7 +69,7 @@ entry:
ret float 1.000000e+00
}
-; 32: .set nomips16 # @fv
+; 32: .set nomips16
; 32: .ent fv
; 32: .set noreorder
; 32: .set nomacro
diff --git a/llvm/test/CodeGen/Mips/helloworld.ll b/llvm/test/CodeGen/Mips/helloworld.ll
index 709c12e1c67..36f4ad6b55c 100644
--- a/llvm/test/CodeGen/Mips/helloworld.ll
+++ b/llvm/test/CodeGen/Mips/helloworld.ll
@@ -15,7 +15,7 @@ entry:
%call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([13 x i8]* @.str, i32 0, i32 0))
ret i32 0
-; SR: .set mips16 # @main
+; SR: .set mips16
; SR32: .set nomips16
; SR32: .ent main
diff --git a/llvm/test/CodeGen/Mips/mips16_32_1.ll b/llvm/test/CodeGen/Mips/mips16_32_1.ll
index a72cfc84875..f6096b402f2 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_1.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_1.ll
@@ -6,7 +6,7 @@ entry:
ret void
}
-; CHECK: .set mips16 # @foo
+; CHECK: .set mips16
; CHECK: .ent foo
; CHECK: jrc $ra
; CHECK: .end foo
diff --git a/llvm/test/CodeGen/Mips/mips16_32_10.ll b/llvm/test/CodeGen/Mips/mips16_32_10.ll
index 686faa718e0..ff9831ed762 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_10.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_10.ll
@@ -4,7 +4,7 @@ define void @foo() #0 {
entry:
ret void
}
-; 16: .set nomips16 # @foo
+; 16: .set nomips16
; 16: .ent foo
; 16: .set noreorder
; 16: .set nomacro
@@ -21,7 +21,7 @@ entry:
ret void
}
-; 16: .set mips16 # @nofoo
+; 16: .set mips16
; 16: .ent nofoo
; 16: jrc $ra
@@ -32,7 +32,7 @@ entry:
ret i32 0
}
-; 16: .set nomips16 # @main
+; 16: .set nomips16
; 16: .ent main
; 16: .set noreorder
; 16: .set nomacro
diff --git a/llvm/test/CodeGen/Mips/mips16_32_3.ll b/llvm/test/CodeGen/Mips/mips16_32_3.ll
index 4ad427f0df7..c5a29a0b8fd 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_3.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_3.ll
@@ -6,11 +6,11 @@ entry:
ret void
}
-; 16: .set mips16 # @foo
+; 16: .set mips16
; 16: .ent foo
; 16: jrc $ra
; 16: .end foo
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: jrc $ra
; 32: .end foo
@@ -19,7 +19,7 @@ entry:
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
@@ -30,7 +30,7 @@ entry:
; 16: .set macro
; 16: .set reorder
; 16: .end nofoo
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
@@ -46,11 +46,11 @@ entry:
ret i32 0
}
-; 16: .set mips16 # @main
+; 16: .set mips16
; 16: .ent main
; 16: jrc $ra
; 16: .end main
-; 32: .set nomips16 # @main
+; 32: .set nomips16
; 32: .ent main
; 32: .set noreorder
; 32: .set nomacro
diff --git a/llvm/test/CodeGen/Mips/mips16_32_4.ll b/llvm/test/CodeGen/Mips/mips16_32_4.ll
index e8100e8237a..1238363d907 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_4.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_4.ll
@@ -6,11 +6,11 @@ entry:
ret void
}
-; 16: .set mips16 # @foo
+; 16: .set mips16
; 16: .ent foo
; 16: jrc $ra
; 16: .end foo
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: jrc $ra
; 32: .end foo
@@ -19,7 +19,7 @@ entry:
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
@@ -30,7 +30,7 @@ entry:
; 16: .set macro
; 16: .set reorder
; 16: .end nofoo
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
@@ -46,11 +46,11 @@ entry:
ret i32 0
}
-; 16: .set mips16 # @main
+; 16: .set mips16
; 16: .ent main
; 16: jrc $ra
; 16: .end main
-; 32: .set mips16 # @main
+; 32: .set mips16
; 32: .ent main
; 32: jrc $ra
; 32: .end main
diff --git a/llvm/test/CodeGen/Mips/mips16_32_5.ll b/llvm/test/CodeGen/Mips/mips16_32_5.ll
index 5bdeede5c66..5d4c8a1af56 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_5.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_5.ll
@@ -6,11 +6,11 @@ entry:
ret void
}
-; 16: .set mips16 # @foo
+; 16: .set mips16
; 16: .ent foo
; 16: jrc $ra
; 16: .end foo
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: jrc $ra
; 32: .end foo
@@ -19,7 +19,7 @@ entry:
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
@@ -30,7 +30,7 @@ entry:
; 16: .set macro
; 16: .set reorder
; 16: .end nofoo
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
@@ -46,7 +46,7 @@ entry:
ret i32 0
}
-; 16: .set nomips16 # @main
+; 16: .set nomips16
; 16: .ent main
; 16: .set noreorder
; 16: .set nomacro
@@ -58,7 +58,7 @@ entry:
; 16: .set reorder
; 16: .end main
-; 32: .set nomips16 # @main
+; 32: .set nomips16
; 32: .ent main
; 32: .set noreorder
; 32: .set nomacro
diff --git a/llvm/test/CodeGen/Mips/mips16_32_6.ll b/llvm/test/CodeGen/Mips/mips16_32_6.ll
index 45f71f01ec6..63323b608bc 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_6.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_6.ll
@@ -6,11 +6,11 @@ entry:
ret void
}
-; 16: .set mips16 # @foo
+; 16: .set mips16
; 16: .ent foo
; 16: jrc $ra
; 16: .end foo
-; 32: .set nomips16 # @foo
+; 32: .set nomips16
; 32: .ent foo
; 32: .set noreorder
; 32: .set nomacro
@@ -26,7 +26,7 @@ entry:
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
@@ -37,7 +37,7 @@ entry:
; 16: .set macro
; 16: .set reorder
; 16: .end nofoo
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
@@ -53,7 +53,7 @@ entry:
ret i32 0
}
-; 16: .set nomips16 # @main
+; 16: .set nomips16
; 16: .ent main
; 16: .set noreorder
; 16: .set nomacro
@@ -65,7 +65,7 @@ entry:
; 16: .set reorder
; 16: .end main
-; 32: .set nomips16 # @main
+; 32: .set nomips16
; 32: .ent main
; 32: .set noreorder
; 32: .set nomacro
diff --git a/llvm/test/CodeGen/Mips/mips16_32_7.ll b/llvm/test/CodeGen/Mips/mips16_32_7.ll
index e171b367c47..480a23c8b25 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_7.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_7.ll
@@ -6,11 +6,11 @@ entry:
ret void
}
-; 16: .set mips16 # @foo
+; 16: .set mips16
; 16: .ent foo
; 16: jrc $ra
; 16: .end foo
-; 32: .set nomips16 # @foo
+; 32: .set nomips16
; 32: .ent foo
; 32: .set noreorder
; 32: .set nomacro
@@ -26,7 +26,7 @@ entry:
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
@@ -37,7 +37,7 @@ entry:
; 16: .set macro
; 16: .set reorder
; 16: .end nofoo
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
@@ -53,12 +53,12 @@ entry:
ret i32 0
}
-; 16: .set mips16 # @main
+; 16: .set mips16
; 16: .ent main
; 16: jrc $ra
; 16: .end main
-; 32: .set mips16 # @main
+; 32: .set mips16
; 32: .ent main
; 32: jrc $ra
; 32: .end main
diff --git a/llvm/test/CodeGen/Mips/mips16_32_8.ll b/llvm/test/CodeGen/Mips/mips16_32_8.ll
index 3c8cc5a4e28..2f5bc219cf3 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_8.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_8.ll
@@ -14,7 +14,7 @@ entry:
ret void
}
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: jrc $ra
; 32: .end foo
@@ -32,7 +32,7 @@ entry:
ret void
}
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
@@ -56,7 +56,7 @@ entry:
ret i32 0
}
-; 32: .set nomips16 # @main
+; 32: .set nomips16
; 32: .ent main
; 32: .set noreorder
; 32: .set nomacro
diff --git a/llvm/test/CodeGen/Mips/mips16_32_9.ll b/llvm/test/CodeGen/Mips/mips16_32_9.ll
index 585a4e8408b..8543147bed0 100644
--- a/llvm/test/CodeGen/Mips/mips16_32_9.ll
+++ b/llvm/test/CodeGen/Mips/mips16_32_9.ll
@@ -5,7 +5,7 @@ entry:
ret void
}
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: jrc $ra
; 32: .end foo
@@ -14,7 +14,7 @@ entry:
ret void
}
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
@@ -30,7 +30,7 @@ entry:
ret i32 0
}
-; 32: .set mips16 # @main
+; 32: .set mips16
; 32: .ent main
; 32: jrc $ra
; 32: .end main
diff --git a/llvm/test/CodeGen/Mips/null.ll b/llvm/test/CodeGen/Mips/null.ll
index 00c66a9928f..bc78a27f199 100644
--- a/llvm/test/CodeGen/Mips/null.ll
+++ b/llvm/test/CodeGen/Mips/null.ll
@@ -5,7 +5,7 @@ define i32 @main() nounwind {
entry:
ret i32 0
-; 16: .set mips16 # @main
+; 16: .set mips16
; 16: jrc $ra
OpenPOWER on IntegriCloud