[llvm-commits] [llvm] r71424 - in /llvm/trunk/lib/Target/PIC16: PIC16.h PIC16AsmPrinter.cpp PIC16ISelLowering.cpp PIC16ISelLowering.h
Sanjiv Gupta
sanjiv.gupta at microchip.com
Mon May 11 01:52:14 PDT 2009
Author: sgupta
Date: Mon May 11 03:52:04 2009
New Revision: 71424
URL: http://llvm.org/viewvc/llvm-project?rev=71424&view=rev
Log:
Fix more naming issues.
compiler libcalls start with .lib. now.
fixed section names.
Modified:
llvm/trunk/lib/Target/PIC16/PIC16.h
llvm/trunk/lib/Target/PIC16/PIC16AsmPrinter.cpp
llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.cpp
llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.h
Modified: llvm/trunk/lib/Target/PIC16/PIC16.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16.h?rev=71424&r1=71423&r2=71424&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16.h Mon May 11 03:52:04 2009
@@ -72,11 +72,11 @@
// Its temp data: @foo.temp.
// Its arg passing: @foo.args.
//----------------------------------------------
- // Libcall - compiler generated libcall names must have a .lib.
+ // Libcall - compiler generated libcall names must start with .lib.
// This id will be used to emit extern decls for libcalls.
- // Example - libcall name: @sra_i8.lib.
- // To pass args: @sra_i8.args.
- // To return val: @sra_i8.ret.
+ // Example - libcall name: @.lib.sra.i8
+ // To pass args: @.lib.sra.i8.args.
+ // To return val: @.lib.sra.i8.ret.
//----------------------------------------------
// SECTION Names
// uninitialized globals - @udata.<num>.#
@@ -114,10 +114,10 @@
case TEMPS_LABEL: return ".temp.";
case ARGS_LABEL: return ".args.";
case RET_LABEL: return ".ret.";
- case LIBCALL: return "__intrinsics";
- case FRAME_SECTION: return ".fpdata.";
- case AUTOS_SECTION: return ".fadata.";
- case CODE_SECTION: return "code";
+ case LIBCALL: return ".lib.";
+ case FRAME_SECTION: return ".frame_section.";
+ case AUTOS_SECTION: return ".autos_section.";
+ case CODE_SECTION: return ".code_section.";
}
}
@@ -205,19 +205,19 @@
static std::string getFrameSectionName(const std::string &Func) {
std::string Func1 = addPrefix(Func);
std::string tag = getTagName(FRAME_SECTION);
- return Func1 + tag + " UDATA_OVR";
+ return Func1 + tag + "# UDATA_OVR";
}
static std::string getAutosSectionName(const std::string &Func) {
std::string Func1 = addPrefix(Func);
std::string tag = getTagName(AUTOS_SECTION);
- return Func1 + tag + " UDATA_OVR";
+ return Func1 + tag + "# UDATA_OVR";
}
static std::string getCodeSectionName(const std::string &Func) {
std::string Func1 = addPrefix(Func);
std::string tag = getTagName(CODE_SECTION);
- return Func1 + tag + " CODE";
+ return Func1 + tag + "# CODE";
}
// udata and idata section names are generated by a given number.
@@ -235,7 +235,15 @@
}
static std::string getDeclSectionName(void) {
- std::string dsname = "decl_section.1";
+ std::string dsname = "section.0";
+ dsname = addPrefix(dsname);
+ return dsname;
+ }
+
+ // FIXME: currently decls for libcalls are into a separate section.
+ // merge the rest of decls to one.
+ static std::string getLibDeclSectionName(void) {
+ std::string dsname = "lib_decls.0";
dsname = addPrefix(dsname);
return dsname;
}
@@ -285,7 +293,6 @@
}
}
}
-
}; // class PAN.
Modified: llvm/trunk/lib/Target/PIC16/PIC16AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16AsmPrinter.cpp?rev=71424&r1=71423&r2=71424&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16AsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16AsmPrinter.cpp Mon May 11 03:52:04 2009
@@ -157,7 +157,7 @@
// If no libcalls used, return.
if (Decls.empty()) return;
- const Section *S = TAI->getNamedSection(PAN::getDeclSectionName().c_str());
+ const Section *S = TAI->getNamedSection(PAN::getLibDeclSectionName().c_str());
SwitchToSection(S);
// Remove duplicate entries.
Decls.sort();
@@ -166,8 +166,8 @@
I != Decls.end(); I++) {
O << TAI->getExternDirective() << *I << "\n";
// FIXME: Use PAN::getXXXLabel() funtions hrer.
- O << TAI->getExternDirective() << *I << ".args." << "\n";
- O << TAI->getExternDirective() << *I << ".ret." << "\n";
+ O << TAI->getExternDirective() << PAN::getArgsLabel(*I) << "\n";
+ O << TAI->getExternDirective() << PAN::getRetvalLabel(*I) << "\n";
}
}
@@ -191,7 +191,7 @@
void PIC16AsmPrinter::EmitExternsAndGlobals (Module &M) {
// Emit declarations for external functions.
- O << "section.0" <<"\n";
+ O << PAN::getDeclSectionName() <<"\n";
for (Module::iterator I = M.begin(), E = M.end(); I != E; I++) {
std::string Name = Mang->getValueName(I);
if (Name.compare("@abort") == 0)
Modified: llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.cpp?rev=71424&r1=71423&r2=71424&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.cpp Mon May 11 03:52:04 2009
@@ -27,6 +27,38 @@
using namespace llvm;
+static const char *getIntrinsicName(unsigned opcode) {
+ std::string Basename;
+ switch(opcode) {
+ default: assert (0 && "do not know intrinsic name");
+ case PIC16ISD::SRA_I8: Basename = "sra.i8"; break;
+ case RTLIB::SRA_I16: Basename = "sra.i16"; break;
+ case RTLIB::SRA_I32: Basename = "sra.i32"; break;
+
+ case PIC16ISD::SLL_I8: Basename = "sll.i8"; break;
+ case RTLIB::SHL_I16: Basename = "sll.i16"; break;
+ case RTLIB::SHL_I32: Basename = "sll.i32"; break;
+
+ case PIC16ISD::SRL_I8: Basename = "srl.i8"; break;
+ case RTLIB::SRL_I16: Basename = "srl.i16"; break;
+ case RTLIB::SRL_I32: Basename = "srl.i32"; break;
+
+ case PIC16ISD::MUL_I8: Basename = "mul.i8"; break;
+ case RTLIB::MUL_I16: Basename = "mul.i16"; break;
+ case RTLIB::MUL_I32: Basename = "mul.i32"; break;
+ }
+
+ std::string prefix = PAN::getTagName(PAN::PREFIX_SYMBOL);
+ std::string tagname = PAN::getTagName(PAN::LIBCALL);
+ std::string Fullname = prefix + tagname + Basename;
+
+ // The name has to live through program life.
+ char *tmp = new char[Fullname.size() + 1];
+ strcpy (tmp, Fullname.c_str());
+
+ return tmp;
+}
+
// PIC16TargetLowering Constructor.
PIC16TargetLowering::PIC16TargetLowering(PIC16TargetMachine &TM)
: TargetLowering(TM), TmpSize(0) {
@@ -39,24 +71,24 @@
setShiftAmountFlavor(Extend);
// SRA library call names
- setPIC16LibcallName(PIC16ISD::SRA_I8, "@__intrinsics.sra.i8");
- setLibcallName(RTLIB::SRA_I16, "@__intrinsics.sra.i16");
- setLibcallName(RTLIB::SRA_I32, "@__intrinsics.sra.i32");
+ setPIC16LibcallName(PIC16ISD::SRA_I8, getIntrinsicName(PIC16ISD::SRA_I8));
+ setLibcallName(RTLIB::SRA_I16, getIntrinsicName(RTLIB::SRA_I16));
+ setLibcallName(RTLIB::SRA_I32, getIntrinsicName(RTLIB::SRA_I32));
// SHL library call names
- setPIC16LibcallName(PIC16ISD::SLL_I8, "@__intrinsics.sll.i8");
- setLibcallName(RTLIB::SHL_I16, "@__intrinsics.sll.i16");
- setLibcallName(RTLIB::SHL_I32, "@__intrinsics.sll.i32");
+ setPIC16LibcallName(PIC16ISD::SLL_I8, getIntrinsicName(PIC16ISD::SLL_I8));
+ setLibcallName(RTLIB::SHL_I16, getIntrinsicName(RTLIB::SHL_I16));
+ setLibcallName(RTLIB::SHL_I32, getIntrinsicName(RTLIB::SHL_I32));
// SRL library call names
- setPIC16LibcallName(PIC16ISD::SRL_I8, "@__intrinsics.srl.i8");
- setLibcallName(RTLIB::SRL_I16, "@__intrinsics.srl.i16");
- setLibcallName(RTLIB::SRL_I32, "@__intrinsics.srl.i32");
+ setPIC16LibcallName(PIC16ISD::SRL_I8, getIntrinsicName(PIC16ISD::SRL_I8));
+ setLibcallName(RTLIB::SRL_I16, getIntrinsicName(RTLIB::SRL_I16));
+ setLibcallName(RTLIB::SRL_I32, getIntrinsicName(RTLIB::SRL_I32));
// MUL Library call names
- setPIC16LibcallName(PIC16ISD::MUL_I8, "@__intrinsics.mul.i8");
- setLibcallName(RTLIB::MUL_I16, "@__intrinsics.mul.i16");
- setLibcallName(RTLIB::MUL_I32, "@__intrinsics.mul.i32");
+ setPIC16LibcallName(PIC16ISD::MUL_I8, getIntrinsicName(PIC16ISD::MUL_I8));
+ setLibcallName(RTLIB::MUL_I16, getIntrinsicName(RTLIB::MUL_I16));
+ setLibcallName(RTLIB::MUL_I32, getIntrinsicName(RTLIB::MUL_I32));
setOperationAction(ISD::GlobalAddress, MVT::i16, Custom);
setOperationAction(ISD::ExternalSymbol, MVT::i16, Custom);
Modified: llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.h?rev=71424&r1=71423&r2=71424&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16ISelLowering.h Mon May 11 03:52:04 2009
@@ -61,7 +61,7 @@
ROM_SPACE = 1 // ROM address space number is 1
};
enum PIC16Libcall {
- MUL_I8,
+ MUL_I8 = RTLIB::UNKNOWN_LIBCALL + 1,
SRA_I8,
SLL_I8,
SRL_I8,
More information about the llvm-commits
mailing list