@@ -321,7 +321,7 @@ Value* WIFuncResolution::getLocalId(CallInst& CI, ImplicitArg::ArgType argType)
321321 // %localIdX
322322
323323 Value* V = nullptr ;
324- auto F = CI.getFunction ();
324+ auto F = CI.getParent ()-> getParent ();
325325 if (hasStackCallAttr (*F))
326326 {
327327 // LocalIDBase = oword_ld
@@ -396,7 +396,7 @@ Value* WIFuncResolution::getLocalId(CallInst& CI, ImplicitArg::ArgType argType)
396396 }
397397 else
398398 {
399- Argument* localId = getImplicitArg (CI , argType);
399+ Argument* localId = m_implicitArgs. getImplicitArg (*F , argType);
400400 V = localId;
401401 }
402402
@@ -420,7 +420,7 @@ Value* WIFuncResolution::getGroupId(CallInst& CI)
420420 // if dim = 2 then we need to access R0.7
421421
422422 Value* V = nullptr ;
423- auto F = CI.getFunction ();
423+ auto F = CI.getParent ()-> getParent ();
424424 if (hasStackCallAttr (*F))
425425 {
426426 auto Ctx = getAnalysis<CodeGenContextWrapper>().getCodeGenContext ();
@@ -433,7 +433,7 @@ Value* WIFuncResolution::getGroupId(CallInst& CI)
433433 }
434434 else
435435 {
436- Argument* arg = getImplicitArg (CI , ImplicitArg::R0);
436+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::R0);
437437 V = arg;
438438 }
439439
@@ -461,7 +461,7 @@ Value* WIFuncResolution::getLocalThreadId(CallInst &CI)
461461 // we need to access R0.2 bits 0 to 7, which contain HW local thread ID on XeHP_SDV+
462462
463463 Value* V = nullptr ;
464- auto F = CI.getFunction ();
464+ auto F = CI.getParent ()-> getParent ();
465465 if (hasStackCallAttr (*F))
466466 {
467467 auto Ctx = getAnalysis<CodeGenContextWrapper>().getCodeGenContext ();
@@ -474,7 +474,7 @@ Value* WIFuncResolution::getLocalThreadId(CallInst &CI)
474474 }
475475 else
476476 {
477- Argument* arg = getImplicitArg (CI , ImplicitArg::R0);
477+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::R0);
478478 V = arg;
479479 }
480480
@@ -495,7 +495,7 @@ Value* WIFuncResolution::getGlobalSize(CallInst& CI)
495495 // %globalSize1 = extractelement <3 x i32> %globalSize, i32 %dim
496496
497497 Value* V = nullptr ;
498- auto F = CI.getFunction ();
498+ auto F = CI.getParent ()-> getParent ();
499499 if (hasStackCallAttr (*F))
500500 {
501501 llvm::IRBuilder<> Builder (&CI);
@@ -516,7 +516,7 @@ Value* WIFuncResolution::getGlobalSize(CallInst& CI)
516516 }
517517 else
518518 {
519- Argument* arg = getImplicitArg (CI , ImplicitArg::GLOBAL_SIZE);
519+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::GLOBAL_SIZE);
520520 V = arg;
521521 }
522522
@@ -536,7 +536,7 @@ Value* WIFuncResolution::getLocalSize(CallInst& CI)
536536 // %localSize = extractelement <3 x i32> %localSize, i32 %dim
537537
538538 Value* V = nullptr ;
539- auto F = CI.getFunction ();
539+ auto F = CI.getParent ()-> getParent ();
540540 if (hasStackCallAttr (*F))
541541 {
542542 llvm::IRBuilder<> Builder (&CI);
@@ -548,7 +548,7 @@ Value* WIFuncResolution::getLocalSize(CallInst& CI)
548548 }
549549 else
550550 {
551- Argument* arg = getImplicitArg (CI , ImplicitArg::LOCAL_SIZE);
551+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::LOCAL_SIZE);
552552 V = arg;
553553 }
554554
@@ -567,7 +567,7 @@ Value* WIFuncResolution::getEnqueuedLocalSize(CallInst& CI) {
567567 // %enqueuedLocalSize1 = extractelement <3 x i32> %enqueuedLocalSize, %dim
568568
569569 Value* V = nullptr ;
570- auto F = CI.getFunction ();
570+ auto F = CI.getParent ()-> getParent ();
571571 if (hasStackCallAttr (*F))
572572 {
573573 // Assume that enqueued local size is same as local size
@@ -580,7 +580,7 @@ Value* WIFuncResolution::getEnqueuedLocalSize(CallInst& CI) {
580580 }
581581 else
582582 {
583- Argument* arg = getImplicitArg (CI , ImplicitArg::ENQUEUED_LOCAL_WORK_SIZE);
583+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::ENQUEUED_LOCAL_WORK_SIZE);
584584 V = arg;
585585 }
586586
@@ -600,7 +600,7 @@ Value* WIFuncResolution::getGlobalOffset(CallInst& CI)
600600 // %globalOffset = extractelement <8 x i32> %payloadHeader, i32 %dim
601601
602602 Value* V = nullptr ;
603- auto F = CI.getFunction ();
603+ auto F = CI.getParent ()-> getParent ();
604604 if (hasStackCallAttr (*F))
605605 {
606606 llvm::IRBuilder<> Builder (&CI);
@@ -621,7 +621,7 @@ Value* WIFuncResolution::getGlobalOffset(CallInst& CI)
621621 }
622622 else
623623 {
624- Argument* arg = getImplicitArg (CI , ImplicitArg::PAYLOAD_HEADER);
624+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::PAYLOAD_HEADER);
625625 V = arg;
626626 }
627627
@@ -641,7 +641,7 @@ Value* WIFuncResolution::getWorkDim(CallInst& CI)
641641 // %workDim
642642
643643 Value* V = nullptr ;
644- auto F = CI.getFunction ();
644+ auto F = CI.getParent ()-> getParent ();
645645 if (hasStackCallAttr (*F))
646646 {
647647 llvm::IRBuilder<> Builder (&CI);
@@ -654,7 +654,7 @@ Value* WIFuncResolution::getWorkDim(CallInst& CI)
654654 }
655655 else
656656 {
657- Argument* workDim = getImplicitArg (CI , ImplicitArg::WORK_DIM);
657+ Argument* workDim = m_implicitArgs. getImplicitArg (*F , ImplicitArg::WORK_DIM);
658658 V = workDim;
659659 }
660660
@@ -670,7 +670,7 @@ Value* WIFuncResolution::getNumGroups(CallInst& CI)
670670 // %numGroups1 = extractelement <3 x i32> %numGroups, i32 %dim
671671
672672 Value* V = nullptr ;
673- auto F = CI.getFunction ();
673+ auto F = CI.getParent ()-> getParent ();
674674 if (hasStackCallAttr (*F))
675675 {
676676 llvm::IRBuilder<> Builder (&CI);
@@ -682,7 +682,7 @@ Value* WIFuncResolution::getNumGroups(CallInst& CI)
682682 }
683683 else
684684 {
685- Argument* arg = getImplicitArg (CI , ImplicitArg::NUM_GROUPS);
685+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::NUM_GROUPS);
686686 V = arg;
687687 }
688688
@@ -700,8 +700,8 @@ Value* WIFuncResolution::getStageInGridOrigin(CallInst& CI)
700700
701701 // Creates:
702702 // %grid_origin1 = extractelement <3 x i32> %globalSize, i32 %dim
703-
704- Argument* arg = getImplicitArg (CI , ImplicitArg::STAGE_IN_GRID_ORIGIN);
703+ auto F = CI. getParent ()-> getParent ();
704+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::STAGE_IN_GRID_ORIGIN);
705705
706706 Value* dim = CI.getArgOperand (0 );
707707 Instruction* globalSize = ExtractElementInst::Create (arg, dim, " grid_origin" , &CI);
@@ -719,7 +719,7 @@ Value* WIFuncResolution::getStageInGridSize(CallInst& CI)
719719 // %grid_size1 = extractelement <3 x i32> %globalSize, i32 %dim
720720
721721 Value* V = nullptr ;
722- auto F = CI.getFunction ();
722+ auto F = CI.getParent ()-> getParent ();
723723 if (hasStackCallAttr (*F))
724724 {
725725 llvm::IRBuilder<> Builder (&CI);
@@ -740,7 +740,7 @@ Value* WIFuncResolution::getStageInGridSize(CallInst& CI)
740740 }
741741 else
742742 {
743- Argument* arg = getImplicitArg (CI , ImplicitArg::STAGE_IN_GRID_SIZE);
743+ Argument* arg = m_implicitArgs. getImplicitArg (*F , ImplicitArg::STAGE_IN_GRID_SIZE);
744744 V = arg;
745745 }
746746
@@ -758,23 +758,9 @@ Value* WIFuncResolution::getSyncBufferPtr(CallInst& CI)
758758
759759 // Creates:
760760 // i8 addrspace(1)* %syncBuffer
761-
762- Argument* syncBuffer = getImplicitArg (CI , ImplicitArg::SYNC_BUFFER);
761+ auto F = CI. getParent ()-> getParent ();
762+ Argument* syncBuffer = m_implicitArgs. getImplicitArg (*F , ImplicitArg::SYNC_BUFFER);
763763
764764 return syncBuffer;
765765}
766766
767- Argument* WIFuncResolution::getImplicitArg (CallInst& CI, ImplicitArg::ArgType argType)
768- {
769- unsigned int numImplicitArgs = m_implicitArgs.size ();
770- unsigned int implicitArgIndex = m_implicitArgs.getArgIndex (argType);
771-
772- Function* pFunc = CI.getParent ()->getParent ();
773- IGC_ASSERT_MESSAGE (pFunc->arg_size () >= numImplicitArgs, " Function arg size does not match meta data args." );
774- unsigned int implicitArgIndexInFunc = pFunc->arg_size () - numImplicitArgs + implicitArgIndex;
775-
776- Function::arg_iterator arg = pFunc->arg_begin ();
777- for (unsigned int i = 0 ; i < implicitArgIndexInFunc; ++i, ++arg);
778-
779- return &(*arg);
780- }
0 commit comments