[llvm-commits] [llvm] r140378 - in /llvm/trunk: lib/Target/PTX/PTXAsmPrinter.cpp lib/Target/PTX/PTXISelLowering.cpp test/CodeGen/PTX/simple-call.ll
Justin Holewinski
justin.holewinski at gmail.com
Fri Sep 23 07:31:12 PDT 2011
Author: jholewinski
Date: Fri Sep 23 09:31:12 2011
New Revision: 140378
URL: http://llvm.org/viewvc/llvm-project?rev=140378&view=rev
Log:
PTX: Start fixing function calls
Modified:
llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp
llvm/trunk/lib/Target/PTX/PTXISelLowering.cpp
llvm/trunk/test/CodeGen/PTX/simple-call.ll
Modified: llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp?rev=140378&r1=140377&r2=140378&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PTX/PTXAsmPrinter.cpp Fri Sep 23 09:31:12 2011
@@ -222,6 +222,7 @@
OutStreamer.EmitRawText(Twine("{"));
const PTXMachineFunctionInfo *MFI = MF->getInfo<PTXMachineFunctionInfo>();
+ const PTXParamManager &PM = MFI->getParamManager();
// Print register definitions
std::string regDefs;
@@ -275,6 +276,16 @@
regDefs += ">;\n";
}
+ // Local params
+ for (PTXParamManager::param_iterator i = PM.local_begin(), e = PM.local_end();
+ i != e; ++i) {
+ regDefs += "\t.param .b";
+ regDefs += utostr(PM.getParamSize(*i));
+ regDefs += " ";
+ regDefs += PM.getParamName(*i);
+ regDefs += ";\n";
+ }
+
OutStreamer.EmitRawText(Twine(regDefs));
@@ -677,7 +688,7 @@
for (unsigned i = 3; i < MI->getNumOperands(); ++i) {
//const MachineOperand& MO = MI->getOperand(i);
- printReturnOperand(MI, i, O);
+ printParamOperand(MI, i, O);
if (i < MI->getNumOperands()-1) {
O << ", ";
}
Modified: llvm/trunk/lib/Target/PTX/PTXISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PTX/PTXISelLowering.cpp?rev=140378&r1=140377&r2=140378&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PTX/PTXISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/PTX/PTXISelLowering.cpp Fri Sep 23 09:31:12 2011
@@ -435,6 +435,7 @@
MachineFunction& MF = DAG.getMachineFunction();
PTXMachineFunctionInfo *MFI = MF.getInfo<PTXMachineFunctionInfo>();
+ PTXParamManager &PM = MFI->getParamManager();
assert(getTargetMachine().getSubtarget<PTXSubtarget>().callsAreHandled() &&
"Calls are not handled for the target device");
@@ -454,7 +455,8 @@
for (unsigned i = 0; i != OutVals.size(); ++i) {
unsigned Size = OutVals[i].getValueType().getSizeInBits();
- SDValue Index = DAG.getTargetConstant(MFI->getNextParam(Size), MVT::i32);
+ unsigned Param = PM.addLocalParam(Size);
+ SDValue Index = DAG.getTargetConstant(Param, MVT::i32);
Chain = DAG.getNode(PTXISD::STORE_PARAM, dl, MVT::Other, Chain,
Index, OutVals[i]);
ops[i+2] = Index;
Modified: llvm/trunk/test/CodeGen/PTX/simple-call.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PTX/simple-call.ll?rev=140378&r1=140377&r2=140378&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/PTX/simple-call.ll (original)
+++ llvm/trunk/test/CodeGen/PTX/simple-call.ll Fri Sep 23 09:31:12 2011
@@ -1,5 +1,4 @@
; RUN: llc < %s -march=ptx32 -mattr=sm20 | FileCheck %s
-; XFAIL: *
define ptx_device void @test_add(float %x, float %y) {
; CHECK: ret;
@@ -9,7 +8,7 @@
define ptx_device float @test_call(float %x, float %y) {
%a = fadd float %x, %y
-; CHECK: call.uni test_add, (__ret_{{[0-9]+}}, __ret_{{[0-9]+}});
+; CHECK: call.uni test_add, (__localparam_{{[0-9]+}}, __localparam_{{[0-9]+}});
call void @test_add(float %a, float %y)
ret float %a
}
More information about the llvm-commits
mailing list