@@ -99,7 +99,7 @@ namespace hsa_utils {
9999// / Iterate elements using an HSA iterate function. Do not use this function
100100// / directly but the specialized ones below instead.
101101template <typename ElemTy, typename IterFuncTy, typename CallbackTy>
102- hsa_status_t iterate(IterFuncTy Func, CallbackTy Cb) {
102+ static hsa_status_t iterate(IterFuncTy Func, CallbackTy Cb) {
103103 auto L = [](ElemTy Elem, void *Data) -> hsa_status_t {
104104 CallbackTy *Unwrapped = static_cast <CallbackTy *>(Data);
105105 return (*Unwrapped)(Elem);
@@ -111,7 +111,8 @@ hsa_status_t iterate(IterFuncTy Func, CallbackTy Cb) {
111111// / use this function directly but the specialized ones below instead.
112112template <typename ElemTy, typename IterFuncTy, typename IterFuncArgTy,
113113 typename CallbackTy>
114- hsa_status_t iterate(IterFuncTy Func, IterFuncArgTy FuncArg, CallbackTy Cb) {
114+ static hsa_status_t iterate(IterFuncTy Func, IterFuncArgTy FuncArg,
115+ CallbackTy Cb) {
115116 auto L = [](ElemTy Elem, void *Data) -> hsa_status_t {
116117 CallbackTy *Unwrapped = static_cast <CallbackTy *>(Data);
117118 return (*Unwrapped)(Elem);
@@ -123,7 +124,8 @@ hsa_status_t iterate(IterFuncTy Func, IterFuncArgTy FuncArg, CallbackTy Cb) {
123124// / use this function directly but the specialized ones below instead.
124125template <typename Elem1Ty, typename Elem2Ty, typename IterFuncTy,
125126 typename IterFuncArgTy, typename CallbackTy>
126- hsa_status_t iterate(IterFuncTy Func, IterFuncArgTy FuncArg, CallbackTy Cb) {
127+ static hsa_status_t iterate(IterFuncTy Func, IterFuncArgTy FuncArg,
128+ CallbackTy Cb) {
127129 auto L = [](Elem1Ty Elem1, Elem2Ty Elem2, void *Data) -> hsa_status_t {
128130 CallbackTy *Unwrapped = static_cast <CallbackTy *>(Data);
129131 return (*Unwrapped)(Elem1, Elem2);
@@ -132,21 +134,21 @@ hsa_status_t iterate(IterFuncTy Func, IterFuncArgTy FuncArg, CallbackTy Cb) {
132134}
133135
134136// / Iterate agents.
135- template <typename CallbackTy> Error iterateAgents (CallbackTy Callback) {
137+ template <typename CallbackTy> static Error iterateAgents (CallbackTy Callback) {
136138 hsa_status_t Status = iterate<hsa_agent_t >(hsa_iterate_agents, Callback);
137139 return Plugin::check (Status, " error in hsa_iterate_agents: %s" );
138140}
139141
140142// / Iterate ISAs of an agent.
141143template <typename CallbackTy>
142- Error iterateAgentISAs (hsa_agent_t Agent, CallbackTy Cb) {
144+ static Error iterateAgentISAs (hsa_agent_t Agent, CallbackTy Cb) {
143145 hsa_status_t Status = iterate<hsa_isa_t >(hsa_agent_iterate_isas, Agent, Cb);
144146 return Plugin::check (Status, " error in hsa_agent_iterate_isas: %s" );
145147}
146148
147149// / Iterate memory pools of an agent.
148150template <typename CallbackTy>
149- Error iterateAgentMemoryPools (hsa_agent_t Agent, CallbackTy Cb) {
151+ static Error iterateAgentMemoryPools (hsa_agent_t Agent, CallbackTy Cb) {
150152 hsa_status_t Status = iterate<hsa_amd_memory_pool_t >(
151153 hsa_amd_agent_iterate_memory_pools, Agent, Cb);
152154 return Plugin::check (Status,
@@ -155,10 +157,12 @@ Error iterateAgentMemoryPools(hsa_agent_t Agent, CallbackTy Cb) {
155157
156158// / Dispatches an asynchronous memory copy.
157159// / Enables different SDMA engines for the dispatch in a round-robin fashion.
158- Error asyncMemCopy (bool UseMultipleSdmaEngines, void *Dst, hsa_agent_t DstAgent,
159- const void *Src, hsa_agent_t SrcAgent, size_t Size,
160- uint32_t NumDepSignals, const hsa_signal_t *DepSignals,
161- hsa_signal_t CompletionSignal) {
160+ static Error asyncMemCopy (bool UseMultipleSdmaEngines, void *Dst,
161+ hsa_agent_t DstAgent, const void *Src,
162+ hsa_agent_t SrcAgent, size_t Size,
163+ uint32_t NumDepSignals,
164+ const hsa_signal_t *DepSignals,
165+ hsa_signal_t CompletionSignal) {
162166 if (!UseMultipleSdmaEngines) {
163167 hsa_status_t S =
164168 hsa_amd_memory_async_copy (Dst, DstAgent, Src, SrcAgent, Size,
@@ -193,8 +197,8 @@ Error asyncMemCopy(bool UseMultipleSdmaEngines, void *Dst, hsa_agent_t DstAgent,
193197#endif
194198}
195199
196- Error getTargetTripleAndFeatures (hsa_agent_t Agent,
197- SmallVector<SmallString<32 >> &Targets) {
200+ static Error getTargetTripleAndFeatures (hsa_agent_t Agent,
201+ SmallVector<SmallString<32 >> &Targets) {
198202 auto Err = hsa_utils::iterateAgentISAs (Agent, [&](hsa_isa_t ISA) {
199203 uint32_t Length;
200204 hsa_status_t Status;
@@ -1222,7 +1226,7 @@ struct AMDGPUStreamTy {
12221226 assert (Args->Dst && " Invalid destination buffer" );
12231227 assert (Args->Src && " Invalid source buffer" );
12241228
1225- auto BasePtr = Args->Dst ;
1229+ auto * BasePtr = Args->Dst ;
12261230 for (size_t I = 0 ; I < Args->NumTimes ; I++) {
12271231 std::memcpy (BasePtr, Args->Src , Args->Size );
12281232 BasePtr = reinterpret_cast <uint8_t *>(BasePtr) + Args->Size ;
@@ -2673,11 +2677,10 @@ struct AMDGPUDeviceTy : public GenericDeviceTy, AMDGenericDeviceTy {
26732677 // hsa_amd_memory_fill doesn't signal completion using a signal, so use
26742678 // the existing host callback logic to handle that instead
26752679 return Stream->pushHostCallback (Fill, Args);
2676- } else {
2677- // If there is no pending work, do the fill synchronously
2678- auto Status = hsa_amd_memory_fill (TgtPtr, Pattern, Size / 4 );
2679- return Plugin::check (Status, " error in hsa_amd_memory_fill: %s\n " );
26802680 }
2681+ // If there is no pending work, do the fill synchronously
2682+ auto Status = hsa_amd_memory_fill (TgtPtr, Pattern, Size / 4 );
2683+ return Plugin::check (Status, " error in hsa_amd_memory_fill: %s\n " );
26812684 }
26822685
26832686 // Slow case; allocate an appropriate memory size and enqueue copies
@@ -2759,7 +2762,7 @@ struct AMDGPUDeviceTy : public GenericDeviceTy, AMDGenericDeviceTy {
27592762 }
27602763
27612764 Expected<bool > hasPendingWorkImpl (AsyncInfoWrapperTy &AsyncInfo) override {
2762- auto Stream = AsyncInfo.getQueueAs <AMDGPUStreamTy *>();
2765+ auto * Stream = AsyncInfo.getQueueAs <AMDGPUStreamTy *>();
27632766 if (!Stream)
27642767 return false ;
27652768
@@ -2772,7 +2775,7 @@ struct AMDGPUDeviceTy : public GenericDeviceTy, AMDGenericDeviceTy {
27722775 Expected<bool > isEventCompleteImpl (void *EventPtr,
27732776 AsyncInfoWrapperTy &AsyncInfo) override {
27742777 AMDGPUEventTy *Event = reinterpret_cast <AMDGPUEventTy *>(EventPtr);
2775- auto Stream = AsyncInfo.getQueueAs <AMDGPUStreamTy *>();
2778+ auto * Stream = AsyncInfo.getQueueAs <AMDGPUStreamTy *>();
27762779 return Stream && Stream->isEventComplete (*Event);
27772780 }
27782781
@@ -2829,7 +2832,7 @@ struct AMDGPUDeviceTy : public GenericDeviceTy, AMDGenericDeviceTy {
28292832 hsa_device_type_t DevType;
28302833 Status = getDeviceAttrRaw (HSA_AGENT_INFO_DEVICE, DevType);
28312834 if (Status == HSA_STATUS_SUCCESS) {
2832- switch (DevType) {
2835+ switch (static_cast < int >( DevType) ) {
28332836 case HSA_DEVICE_TYPE_CPU:
28342837 TmpCharPtr = " CPU" ;
28352838 break ;
@@ -3746,8 +3749,8 @@ Error AMDGPUKernelTy::printLaunchInfoDetails(GenericDeviceTy &GenericDevice,
37463749 return Plugin::success ();
37473750
37483751 // General Info
3749- auto NumGroups = NumBlocks;
3750- auto ThreadsPerGroup = NumThreads;
3752+ auto * NumGroups = NumBlocks;
3753+ auto * ThreadsPerGroup = NumThreads;
37513754
37523755 // Kernel Arguments Info
37533756 auto ArgNum = KernelArgs.NumArgs ;
0 commit comments