[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaISelPattern.cpp AlphaInstrInfo.td
Andrew Lenharth
alenhar2 at cs.uiuc.edu
Wed Jun 29 11:54:13 PDT 2005
Changes in directory llvm/lib/Target/Alpha:
AlphaISelPattern.cpp updated: 1.142 -> 1.143
AlphaInstrInfo.td updated: 1.50 -> 1.51
---
Log message:
restore old srcValueNode behavior and try to to work around it
---
Diffs of the changes: (+72 -53)
AlphaISelPattern.cpp | 122 +++++++++++++++++++++++++++++----------------------
AlphaInstrInfo.td | 3 -
2 files changed, 72 insertions(+), 53 deletions(-)
Index: llvm/lib/Target/Alpha/AlphaISelPattern.cpp
diff -u llvm/lib/Target/Alpha/AlphaISelPattern.cpp:1.142 llvm/lib/Target/Alpha/AlphaISelPattern.cpp:1.143
--- llvm/lib/Target/Alpha/AlphaISelPattern.cpp:1.142 Wed Jun 29 10:57:19 2005
+++ llvm/lib/Target/Alpha/AlphaISelPattern.cpp Wed Jun 29 13:54:02 2005
@@ -604,37 +604,48 @@
}
}
-//Find the offset of the arg in it's parent's function
-static int getValueOffset(const Value* v)
+static void getValueInfo(const Value* v, int& type, int& fun, int& offset)
{
- if (v == NULL)
- return 0;
-
- const Instruction* itarget = dyn_cast<Instruction>(v);
- const BasicBlock* btarget = itarget->getParent();
- const Function* ftarget = btarget->getParent();
-
- //offset due to earlier BBs
- int i = 1;
- for(Function::const_iterator ii = ftarget->begin(); &*ii != btarget; ++ii)
- i += ii->size();
-
- for(BasicBlock::const_iterator ii = btarget->begin(); &*ii != itarget; ++ii)
- ++i;
-
- return i;
-}
-//Find the offset of the function in it's module
-static int getFunctionOffset(const Function* fun)
-{
- const Module* M = fun->getParent();
-
- //offset due to earlier BBs
- int i = 0;
- for(Module::const_iterator ii = M->begin(); &*ii != fun; ++ii)
- ++i;
-
- return i;
+ if (v == NULL) {
+ type = 0;
+ fun = 0;
+ offset = 0;
+ } else if (const GlobalValue* GV = dyn_cast<GlobalValue>(v)) {
+ type = 1;
+ fun = 1;
+ const Module* M = GV->getParent();
+ int i = 0;
+ for(Module::const_global_iterator ii = M->global_begin(); &*ii != GV; ++ii)
+ ++i;
+ offset = i;
+ } else if (const Argument* Arg = dyn_cast<Argument>(v)) {
+ type = 2;
+ const Function* F = Arg->getParent();
+ const Module* M = F->getParent();
+ int i = 0;
+ for(Module::const_iterator ii = M->begin(); &*ii != F; ++ii)
+ ++i;
+ fun = i;
+ i = 0;
+ for(Function::const_arg_iterator ii = F->arg_begin(); &*ii != Arg; ++ii)
+ ++i;
+ offset = i;
+ } else if (const Instruction* I = dyn_cast<Instruction>(v)) {
+ type = 3;
+ const BasicBlock* bb = I->getParent();
+ const Function* F = bb->getParent();
+ const Module* M = F->getParent();
+ int i = 0;
+ for(Module::const_iterator ii = M->begin(); &*ii != F; ++ii)
+ ++i;
+ fun = i;
+ i = 0;
+ for(Function::const_iterator ii = F->begin(); &*ii != bb; ++ii)
+ i += ii->size();
+ for(BasicBlock::const_iterator ii = bb->begin(); &*ii != I; ++ii)
+ ++i;
+ offset = i;
+ }
}
static int getUID()
@@ -1244,18 +1255,18 @@
assert(opcode != ISD::SEXTLOAD && "Not zext"); break;
}
- int i = 0, j = 0;
- if (EnableAlphaLSMark) {
- i = getValueOffset(dyn_cast<SrcValueSDNode>(N.getOperand(2))
- ->getValue());
- j = getFunctionOffset(BB->getParent()->getFunction());
- }
+ int i, j, k;
+ if (EnableAlphaLSMark)
+ getValueInfo(dyn_cast<SrcValueSDNode>(N.getOperand(2))->getValue(),
+ i, j, k);
+
if (GlobalAddressSDNode *GASD =
dyn_cast<GlobalAddressSDNode>(Address)) {
if (GASD->getGlobal()->isExternal()) {
Tmp1 = SelectExpr(Address);
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, Opc, 2, Result).addImm(0).addReg(Tmp1);
} else {
Tmp1 = MakeReg(MVT::i64);
@@ -1263,7 +1274,8 @@
BuildMI(BB, Alpha::LDAHr, 2, Tmp1)
.addGlobalAddress(GASD->getGlobal()).addReg(Alpha::R29);
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, GetRelVersion(Opc), 2, Result)
.addGlobalAddress(GASD->getGlobal()).addReg(Tmp1);
}
@@ -1274,12 +1286,14 @@
BuildMI(BB, Alpha::LDAHr, 2, Tmp1).addConstantPoolIndex(CP->getIndex())
.addReg(Alpha::R29);
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, GetRelVersion(Opc), 2, Result)
.addConstantPoolIndex(CP->getIndex()).addReg(Tmp1);
} else if(Address.getOpcode() == ISD::FrameIndex) {
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, Opc, 2, Result)
.addFrameIndex(cast<FrameIndexSDNode>(Address)->getIndex())
.addReg(Alpha::F31);
@@ -1287,7 +1301,8 @@
long offset;
SelectAddr(Address, Tmp1, offset);
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, Opc, 2, Result).addImm(offset).addReg(Tmp1);
}
return Result;
@@ -1298,7 +1313,8 @@
has_sym = true;
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(0).addImm(1).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(0).addImm(0).addImm(0)
+ .addImm(getUID());
BuildMI(BB, Alpha::LDQl, 2, Result)
.addGlobalAddress(cast<GlobalAddressSDNode>(N)->getGlobal())
@@ -2268,19 +2284,18 @@
}
}
- int i = 0, j = 0;
- if (EnableAlphaLSMark) {
- i =
- getValueOffset(dyn_cast<SrcValueSDNode>(N.getOperand(3))->getValue());
- j = getFunctionOffset(BB->getParent()->getFunction());
- }
+ int i, j, k;
+ if (EnableAlphaLSMark)
+ getValueInfo(dyn_cast<SrcValueSDNode>(N.getOperand(3))->getValue(),
+ i, j, k);
if (GlobalAddressSDNode *GASD =
dyn_cast<GlobalAddressSDNode>(Address)) {
if (GASD->getGlobal()->isExternal()) {
Tmp2 = SelectExpr(Address);
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, Opc, 3).addReg(Tmp1).addImm(0).addReg(Tmp2);
} else {
Tmp2 = MakeReg(MVT::i64);
@@ -2288,13 +2303,15 @@
BuildMI(BB, Alpha::LDAHr, 2, Tmp2)
.addGlobalAddress(GASD->getGlobal()).addReg(Alpha::R29);
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, GetRelVersion(Opc), 3).addReg(Tmp1)
.addGlobalAddress(GASD->getGlobal()).addReg(Tmp2);
}
} else if(Address.getOpcode() == ISD::FrameIndex) {
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, Opc, 3).addReg(Tmp1)
.addFrameIndex(cast<FrameIndexSDNode>(Address)->getIndex())
.addReg(Alpha::F31);
@@ -2302,7 +2319,8 @@
long offset;
SelectAddr(Address, Tmp2, offset);
if (EnableAlphaLSMark)
- BuildMI(BB, Alpha::MEMLABEL, 3).addImm(j).addImm(i).addImm(getUID());
+ BuildMI(BB, Alpha::MEMLABEL, 4).addImm(i).addImm(j).addImm(k)
+ .addImm(getUID());
BuildMI(BB, Opc, 3).addReg(Tmp1).addImm(offset).addReg(Tmp2);
}
return;
Index: llvm/lib/Target/Alpha/AlphaInstrInfo.td
diff -u llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.50 llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.51
--- llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.50 Tue Jun 28 19:39:17 2005
+++ llvm/lib/Target/Alpha/AlphaInstrInfo.td Wed Jun 29 13:54:02 2005
@@ -31,7 +31,8 @@
def ADJUSTSTACKDOWN : PseudoInstAlpha<(ops ), "ADJDOWN">;
def ALTENT : PseudoInstAlpha<(ops s64imm:$TARGET), "$TARGET:\n">;
def PCLABEL : PseudoInstAlpha<(ops s64imm:$num), "PCMARKER_$num:\n">;
-def MEMLABEL : PseudoInstAlpha<(ops s64imm:$i, s64imm:$j, s64imm:$k), "LSMARKER$$$i$$$j$$$k:\n">;
+def MEMLABEL : PseudoInstAlpha<(ops s64imm:$i, s64imm:$j, s64imm:$k, s64imm:$m),
+ "LSMARKER$$$i$$$j$$$k$$$m:\n">;
//*****************
//These are shortcuts, the assembler expands them
More information about the llvm-commits
mailing list