diff --git a/llvm/lib/Transforms/FuseHPVMTensorNodes/FuseHPVMTensorNodes.cpp b/llvm/lib/Transforms/FuseHPVMTensorNodes/FuseHPVMTensorNodes.cpp index 492ba390938d2c8d9addeb3a80c1c10c153c00c1..06916b969c1c88ddf6e824dee9fcfa89baccd8aa 100644 --- a/llvm/lib/Transforms/FuseHPVMTensorNodes/FuseHPVMTensorNodes.cpp +++ b/llvm/lib/Transforms/FuseHPVMTensorNodes/FuseHPVMTensorNodes.cpp @@ -157,8 +157,8 @@ IntrinsicInst* FuseHPVMTensorNodes::createIdenticalBindWithDifferentPort( void FuseHPVMTensorNodes::createArgTypes(IntrinsicInst* II1, IntrinsicInst* II2, std::vector<Type*> &ArgTypes) { - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); // Arguments of the first node are simply added for(auto& arg: F1->getArgumentList()) { @@ -193,8 +193,8 @@ void FuseHPVMTensorNodes::createArgTypes(IntrinsicInst* II1, /* Get the return type of the function for fused node II1-II2 */ StructType* FuseHPVMTensorNodes::createReturnType(IntrinsicInst* II1, IntrinsicInst* II2) { - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); // Based on the HPVM tensor node assumptions and the patterns we want to // support, when two nodes are fused the result will always be the result @@ -211,8 +211,8 @@ StructType* FuseHPVMTensorNodes::createReturnType(IntrinsicInst* II1, void FuseHPVMTensorNodes::copyArgumentNames(IntrinsicInst* II1, IntrinsicInst* II2, Function* F) { - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); Function::arg_iterator dest_it = F->arg_begin(); @@ -254,8 +254,8 @@ void FuseHPVMTensorNodes::copyArgumentNames(IntrinsicInst* II1, void FuseHPVMTensorNodes::copyAttrList(IntrinsicInst* II1, IntrinsicInst* II2, Function* F) { - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); Function::arg_iterator f1_ai = F1->arg_begin(), f1_ae = F1->arg_end(); Function::arg_iterator f2_ai = F2->arg_begin(), f2_ae = F2->arg_end(); @@ -306,8 +306,8 @@ void FuseHPVMTensorNodes::copyAttrList(IntrinsicInst* II1, Function* FuseHPVMTensorNodes::createEmptyDFNodeFunction(IntrinsicInst* II1, IntrinsicInst* II2, Module &M) { - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); DEBUG(errs () << "Constructing argument list\n"); // Construct argument list @@ -487,8 +487,8 @@ Function* FuseHPVMTensorNodes::createLeafDFNodeFunction(IntrinsicInst* II1, ReturnInst::Create(M.getContext(), UndefValue::get(FfusedRetTy), BB); // Get the node functions - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); // Initially, update FusedValueMap: it is populated with the arguments of F1 Function::arg_iterator fused_arg_it = Ffused->arg_begin(); @@ -541,8 +541,8 @@ void FuseHPVMTensorNodes::updateParentNodeFunction(IntrinsicInst* II1, // Compute the required shifting of positions for edges/binds to the second // fusion node. No shifting is required for the first fusion node. - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); std::vector<unsigned> ShiftMap(F2->getFunctionType()->getNumParams(), 0); unsigned shiftCount = F1->getFunctionType()->getNumParams(); @@ -675,8 +675,8 @@ IntrinsicInst* FuseHPVMTensorNodes::FuseHPVMTensorNodesStep(IntrinsicInst* II1, IntrinsicInst* II2, Module &M) { // Get the node functions - Function* F1 = cast<Function>((II1->getOperand(1))->stripPointerCasts()); - Function* F2 = cast<Function>((II2->getOperand(1))->stripPointerCasts()); + Function* F1 = cast<Function>((II1->getOperand(0))->stripPointerCasts()); + Function* F2 = cast<Function>((II2->getOperand(0))->stripPointerCasts()); // Create fused node function Function *Ffused = createLeafDFNodeFunction(II1, II2, M);