Skip to content

Commit 96f5ade

Browse files
authored
[LLVM->SPV-IR] Add const to pointer arg of prefetch, change num_elements arg type to unsigned (#3188)
Per SPIR-V OpenCL.ExtendedInstructionSet spec, the num_elements arg must be size_t. So this PR changes its type to unsigned in SPV-IR. Adding const to pointer arg aligns with OpenCL spec and allows const pointer input.
1 parent 6f53bc4 commit 96f5ade

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

lib/SPIRV/SPIRVUtil.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2617,6 +2617,10 @@ class OpenCLStdToSPIRVFriendlyIRMangleInfo : public BuiltinFuncMangleInfo {
26172617
case OpenCLLIB::Nan:
26182618
addUnsignedArg(0);
26192619
break;
2620+
case OpenCLLIB::Prefetch:
2621+
setArgAttr(0, SPIR::ATTR_CONST);
2622+
addUnsignedArg(1);
2623+
break;
26202624
case OpenCLLIB::Shuffle:
26212625
addUnsignedArg(1);
26222626
break;

test/extensions/INTEL/SPV_INTEL_cache_controls/decorate-prefetch-w-cache-controls.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ $_ZTSZ4mainEUlvE_ = comdat any
4242
; translation
4343

4444
; CHECK-LLVM: %[[CALL1:.*]] = call spir_func ptr addrspace(1) @_Z41__spirv_GenericCastToPtrExplicit_ToGlobal{{.*}} !spirv.Decorations ![[MD1:.*]]
45-
; CHECK-LLVM: call spir_func void @_Z20__spirv_ocl_prefetch{{.*}}(ptr addrspace(1) %[[CALL1]], i64 1)
45+
; CHECK-LLVM: call spir_func void @_Z20__spirv_ocl_prefetchPU3AS1Kcm(ptr addrspace(1) %[[CALL1]], i64 1)
4646
; CHECK-LLVM: %[[CALL2:.*]] = call spir_func ptr addrspace(1) @_Z41__spirv_GenericCastToPtrExplicit_ToGlobal{{.*}} !spirv.Decorations ![[MD2:.*]]
47-
; CHECK-LLVM: call spir_func void @_Z20__spirv_ocl_prefetch{{.*}}(ptr addrspace(1) %[[CALL2]], i64 1)
47+
; CHECK-LLVM: call spir_func void @_Z20__spirv_ocl_prefetchPU3AS1Kcm(ptr addrspace(1) %[[CALL2]], i64 1)
4848
; CHECK-LLVM: %[[CALL3:.*]] = call spir_func ptr addrspace(1) @_Z41__spirv_GenericCastToPtrExplicit_ToGlobal{{.*}} !spirv.Decorations ![[MD3:.*]]
49-
; CHECK-LLVM: call spir_func void @_Z20__spirv_ocl_prefetch{{.*}}(ptr addrspace(1) %[[CALL3]], i64 2)
49+
; CHECK-LLVM: call spir_func void @_Z20__spirv_ocl_prefetchPU3AS1Kcm(ptr addrspace(1) %[[CALL3]], i64 2)
5050

5151

5252
; Function Attrs: convergent norecurse nounwind

0 commit comments

Comments
 (0)