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";
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();
}
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);
}
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;
};
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();
};
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();
};
ret float 1.000000e+00
}
-; 32: .set nomips16 # @fv
+; 32: .set nomips16
; 32: .ent fv
; 32: .set noreorder
; 32: .set nomacro
ret double 2.000000e+00
}
-; 32: .set nomips16 # @dv
+; 32: .set nomips16
; 32: .ent dv
; 32: .set noreorder
; 32: .set nomacro
ret void
}
-; 32: .set nomips16 # @vf
+; 32: .set nomips16
; 32: .ent vf
; 32: .set noreorder
; 32: .set nomacro
ret void
}
-; 32: .set nomips16 # @vd
+; 32: .set nomips16
; 32: .ent vd
; 32: .set noreorder
; 32: .set nomacro
ret void
}
-; 32: .set nomips16 # @foo1
+; 32: .set nomips16
; 32: .ent foo1
; 32: .set noreorder
; 32: .set nomacro
}
-; 32: .set nomips16 # @foo2
+; 32: .set nomips16
; 32: .ent foo2
; 32: .set noreorder
; 32: .set nomacro
ret void
}
-; 32: .set nomips16 # @foo3
+; 32: .set nomips16
; 32: .ent foo3
; 32: .set noreorder
; 32: .set nomacro
ret void
}
-; 32: .set mips16 # @vv
+; 32: .set mips16
; 32: .ent vv
; 32: save {{.+}}
ret void
}
-; 32: .set mips16 # @vv
+; 32: .set mips16
; 32: .ent vv
; 32: save {{.+}}
ret i32 %0
}
-; 32: .set mips16 # @iv
+; 32: .set mips16
; 32: .ent iv
; 32: save {{.+}}
ret void
}
-; 32: .set mips16 # @vif
+; 32: .set mips16
; 32: .ent vif
; 32: save {{.+}}
ret void
}
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: save {{.+}}
ret float 1.000000e+00
}
-; 32: .set nomips16 # @fv
+; 32: .set nomips16
; 32: .ent fv
; 32: .set noreorder
; 32: .set nomacro
%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
ret void
}
-; CHECK: .set mips16 # @foo
+; CHECK: .set mips16
; CHECK: .ent foo
; CHECK: jrc $ra
; CHECK: .end foo
entry:
ret void
}
-; 16: .set nomips16 # @foo
+; 16: .set nomips16
; 16: .ent foo
; 16: .set noreorder
; 16: .set nomacro
ret void
}
-; 16: .set mips16 # @nofoo
+; 16: .set mips16
; 16: .ent nofoo
; 16: jrc $ra
ret i32 0
}
-; 16: .set nomips16 # @main
+; 16: .set nomips16
; 16: .ent main
; 16: .set noreorder
; 16: .set nomacro
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
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
; 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
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
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
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
; 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
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
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
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
; 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
ret i32 0
}
-; 16: .set nomips16 # @main
+; 16: .set nomips16
; 16: .ent main
; 16: .set noreorder
; 16: .set nomacro
; 16: .set reorder
; 16: .end main
-; 32: .set nomips16 # @main
+; 32: .set nomips16
; 32: .ent main
; 32: .set noreorder
; 32: .set nomacro
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
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
; 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
ret i32 0
}
-; 16: .set nomips16 # @main
+; 16: .set nomips16
; 16: .ent main
; 16: .set noreorder
; 16: .set nomacro
; 16: .set reorder
; 16: .end main
-; 32: .set nomips16 # @main
+; 32: .set nomips16
; 32: .ent main
; 32: .set noreorder
; 32: .set nomacro
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
ret void
}
-; 16: .set nomips16 # @nofoo
+; 16: .set nomips16
; 16: .ent nofoo
; 16: .set noreorder
; 16: .set nomacro
; 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
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
ret void
}
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: jrc $ra
; 32: .end foo
ret void
}
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
ret i32 0
}
-; 32: .set nomips16 # @main
+; 32: .set nomips16
; 32: .ent main
; 32: .set noreorder
; 32: .set nomacro
ret void
}
-; 32: .set mips16 # @foo
+; 32: .set mips16
; 32: .ent foo
; 32: jrc $ra
; 32: .end foo
ret void
}
-; 32: .set nomips16 # @nofoo
+; 32: .set nomips16
; 32: .ent nofoo
; 32: .set noreorder
; 32: .set nomacro
ret i32 0
}
-; 32: .set mips16 # @main
+; 32: .set mips16
; 32: .ent main
; 32: jrc $ra
; 32: .end main
entry:
ret i32 0
-; 16: .set mips16 # @main
+; 16: .set mips16
; 16: jrc $ra