Skip to content

Commit 4f5bb10

Browse files
Update spirv-llvm-translator.conf (#5499)
Signed-off-by: Whitney Tsang <[email protected]>
1 parent 318ed76 commit 4f5bb10

File tree

4 files changed

+133
-1
lines changed

4 files changed

+133
-1
lines changed

third_party/intel/cmake/FindSPIRVToLLVMTranslator.cmake

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,54 @@ if (NOT SPIRVToLLVMTranslator_FOUND)
7575
if(NOT PATCH_RESULT EQUAL 0)
7676
message(FATAL_ERROR "Failed to apply 3388.patch to SPIRV-LLVM-Translator")
7777
endif()
78+
79+
# FIXME: Don't apply patch when LLVM commit update to 6cba572.
80+
execute_process(
81+
COMMAND git apply --check ${CMAKE_CURRENT_LIST_DIR}/revert_3385.patch
82+
WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
83+
ERROR_QUIET
84+
RESULT_VARIABLE PATCH_RESULT
85+
)
86+
if(PATCH_RESULT EQUAL 0)
87+
execute_process(
88+
COMMAND git apply ${CMAKE_CURRENT_LIST_DIR}/revert_3385.patch
89+
WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
90+
RESULT_VARIABLE PATCH_RESULT
91+
)
92+
else()
93+
execute_process( # Check if the patch is already applied
94+
COMMAND git apply --reverse --check ${CMAKE_CURRENT_LIST_DIR}/revert_3385.patch
95+
WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
96+
RESULT_VARIABLE PATCH_RESULT
97+
)
98+
endif()
99+
if(NOT PATCH_RESULT EQUAL 0)
100+
message(FATAL_ERROR "Failed to apply revert_3385.patch to SPIRV-LLVM-Translator")
101+
endif()
102+
103+
# FIXME: Don't apply patch when LLVM commit update to 573ca36.
104+
execute_process(
105+
COMMAND git apply --check ${CMAKE_CURRENT_LIST_DIR}/revert_3406.patch
106+
WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
107+
ERROR_QUIET
108+
RESULT_VARIABLE PATCH_RESULT
109+
)
110+
if(PATCH_RESULT EQUAL 0)
111+
execute_process(
112+
COMMAND git apply ${CMAKE_CURRENT_LIST_DIR}/revert_3406.patch
113+
WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
114+
RESULT_VARIABLE PATCH_RESULT
115+
)
116+
else()
117+
execute_process( # Check if the patch is already applied
118+
COMMAND git apply --reverse --check ${CMAKE_CURRENT_LIST_DIR}/revert_3406.patch
119+
WORKING_DIRECTORY ${spirv-llvm-translator_SOURCE_DIR}
120+
RESULT_VARIABLE PATCH_RESULT
121+
)
122+
endif()
123+
if(NOT PATCH_RESULT EQUAL 0)
124+
message(FATAL_ERROR "Failed to apply revert_3406.patch to SPIRV-LLVM-Translator")
125+
endif()
78126
endif()
79127

80128
set(SPIRVToLLVMTranslator_INCLUDE_DIR "${SPIRVToLLVMTranslator_SOURCE_DIR}/include"
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
diff --git a/lib/SPIRV/LLVMToSPIRVDbgTran.cpp b/lib/SPIRV/LLVMToSPIRVDbgTran.cpp
2+
index d0648000..e6cc346d 100644
3+
--- a/lib/SPIRV/LLVMToSPIRVDbgTran.cpp
4+
+++ b/lib/SPIRV/LLVMToSPIRVDbgTran.cpp
5+
@@ -587,8 +587,8 @@ SPIRVEntry *LLVMToSPIRVDbgTran::transDbgCompileUnit(const DICompileUnit *CU) {
6+
if (isNonSemanticDebugInfo())
7+
generateBuildIdentifierAndStoragePath(CU);
8+
9+
- auto DwarfLang = static_cast<llvm::dwarf::SourceLanguage>(
10+
- CU->getSourceLanguage().getUnversionedName());
11+
+ auto DwarfLang =
12+
+ static_cast<llvm::dwarf::SourceLanguage>(CU->getSourceLanguage());
13+
Ops[LanguageIdx] =
14+
BM->getDebugInfoEIS() == SPIRVEIS_NonSemantic_Shader_DebugInfo_200
15+
? convertDWARFSourceLangToSPIRVNonSemanticDbgInfo(DwarfLang)
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
diff --git a/lib/SPIRV/SPIRVWriter.cpp b/lib/SPIRV/SPIRVWriter.cpp
2+
index f0c61024..b017e663 100644
3+
--- a/lib/SPIRV/SPIRVWriter.cpp
4+
+++ b/lib/SPIRV/SPIRVWriter.cpp
5+
@@ -5120,9 +5120,10 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
6+
}
7+
SPIRVType *Ty = transScavengedType(II);
8+
auto *PtrVector = transValue(II->getArgOperand(0), BB);
9+
- uint32_t Alignment = II->getParamAlign(0).valueOrOne().value();
10+
- auto *Mask = transValue(II->getArgOperand(1), BB);
11+
- auto *FillEmpty = transValue(II->getArgOperand(2), BB);
12+
+ uint32_t Alignment =
13+
+ cast<ConstantInt>(II->getArgOperand(1))->getZExtValue();
14+
+ auto *Mask = transValue(II->getArgOperand(2), BB);
15+
+ auto *FillEmpty = transValue(II->getArgOperand(3), BB);
16+
std::vector<SPIRVWord> Ops = {PtrVector->getId(), Alignment, Mask->getId(),
17+
FillEmpty->getId()};
18+
return BM->addInstTemplate(internal::OpMaskedGatherINTEL, Ops, BB, Ty);
19+
@@ -5139,8 +5140,9 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
20+
}
21+
auto *InputVector = transValue(II->getArgOperand(0), BB);
22+
auto *PtrVector = transValue(II->getArgOperand(1), BB);
23+
- uint32_t Alignment = II->getParamAlign(1).valueOrOne().value();
24+
- auto *Mask = transValue(II->getArgOperand(2), BB);
25+
+ uint32_t Alignment =
26+
+ cast<ConstantInt>(II->getArgOperand(2))->getZExtValue();
27+
+ auto *Mask = transValue(II->getArgOperand(3), BB);
28+
std::vector<SPIRVWord> Ops = {InputVector->getId(), PtrVector->getId(),
29+
Alignment, Mask->getId()};
30+
return BM->addInstTemplate(internal::OpMaskedScatterINTEL, Ops, BB,
31+
diff --git a/test/extensions/INTEL/SPV_INTEL_masked_gather_scatter/intel-gather-scatter.ll b/test/extensions/INTEL/SPV_INTEL_masked_gather_scatter/intel-gather-scatter.ll
32+
index 02e6c961..2db4f044 100644
33+
--- a/test/extensions/INTEL/SPV_INTEL_masked_gather_scatter/intel-gather-scatter.ll
34+
+++ b/test/extensions/INTEL/SPV_INTEL_masked_gather_scatter/intel-gather-scatter.ll
35+
@@ -42,11 +42,11 @@
36+
37+
; CHECK-LLVM: %[[#VECGATHER:]] = load <4 x ptr addrspace(4)>, ptr
38+
; CHECK-LLVM: %[[#VECSCATTER:]] = load <4 x ptr addrspace(4)>, ptr
39+
-; CHECK-LLVM: %[[GATHER:[a-z0-9]+]] = call <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)> align 4 %[[#VECGATHER]], <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x i32> <i32 4, i32 0, i32 1, i32 0>)
40+
-; CHECK-LLVM: call void @llvm.masked.scatter.v4i32.v4p4(<4 x i32> %[[GATHER]], <4 x ptr addrspace(4)> align 4 %[[#VECSCATTER]], <4 x i1> splat (i1 true))
41+
+; CHECK-LLVM: %[[GATHER:[a-z0-9]+]] = call <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)> %[[#VECGATHER]], i32 4, <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x i32> <i32 4, i32 0, i32 1, i32 0>)
42+
+; CHECK-LLVM: call void @llvm.masked.scatter.v4i32.v4p4(<4 x i32> %[[GATHER]], <4 x ptr addrspace(4)> %[[#VECSCATTER]], i32 4, <4 x i1> splat (i1 true))
43+
44+
-; CHECK-LLVM-DAG: declare <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)>, <4 x i1>, <4 x i32>)
45+
-; CHECK-LLVM-DAG: declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, <4 x i1>)
46+
+; CHECK-LLVM-DAG: declare <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)>, i32 immarg, <4 x i1>, <4 x i32>)
47+
+; CHECK-LLVM-DAG: declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, i32 immarg, <4 x i1>)
48+
49+
target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"
50+
target triple = "spir"
51+
@@ -58,14 +58,14 @@ entry:
52+
%arg1 = alloca <4 x ptr addrspace(4)>
53+
%0 = load <4 x ptr addrspace(4)>, ptr %arg0
54+
%1 = load <4 x ptr addrspace(4)>, ptr %arg1
55+
- %res = call <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)> align 4 %0, <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x i32> <i32 4, i32 0, i32 1, i32 0>)
56+
- call void @llvm.masked.scatter.v4i32.v4p4(<4 x i32> %res, <4 x ptr addrspace(4)> align 4 %1, <4 x i1> splat (i1 true))
57+
+ %res = call <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)> %0, i32 4, <4 x i1> <i1 true, i1 false, i1 true, i1 true>, <4 x i32> <i32 4, i32 0, i32 1, i32 0>)
58+
+ call void @llvm.masked.scatter.v4i32.v4p4(<4 x i32> %res, <4 x ptr addrspace(4)> %1, i32 4, <4 x i1> splat (i1 true))
59+
ret void
60+
}
61+
62+
-declare <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)>, <4 x i1>, <4 x i32>)
63+
+declare <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)>, i32, <4 x i1>, <4 x i32>)
64+
65+
-declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, <4 x i1>)
66+
+declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, i32, <4 x i1>)
67+
68+
!llvm.module.flags = !{!0}
69+
!opencl.spir.version = !{!1}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
b12cb1c7371fc53cd0a6880795caec4f81a8eed0
1+
daba8b217bc266806ac00095262d1af0ba2ee610

0 commit comments

Comments
 (0)