Skip to content

Commit 28fd12a

Browse files
MrSidimsjsji
authored andcommitted
Update gather/scatter translation after 573ca36 (#3406)
llvm/llvm-project@573ca36: "[IR] Replace alignment argument with attribute on masked intrinsics" Signed-off-by: Sidorov, Dmitry <[email protected]> Original commit: KhronosGroup/SPIRV-LLVM-Translator@8dceb118d10b954
1 parent 0409708 commit 28fd12a

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

llvm-spirv/lib/SPIRV/SPIRVWriter.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5094,10 +5094,9 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
50945094
}
50955095
SPIRVType *Ty = transScavengedType(II);
50965096
auto *PtrVector = transValue(II->getArgOperand(0), BB);
5097-
uint32_t Alignment =
5098-
cast<ConstantInt>(II->getArgOperand(1))->getZExtValue();
5099-
auto *Mask = transValue(II->getArgOperand(2), BB);
5100-
auto *FillEmpty = transValue(II->getArgOperand(3), BB);
5097+
uint32_t Alignment = II->getParamAlign(0).valueOrOne().value();
5098+
auto *Mask = transValue(II->getArgOperand(1), BB);
5099+
auto *FillEmpty = transValue(II->getArgOperand(2), BB);
51015100
std::vector<SPIRVWord> Ops = {PtrVector->getId(), Alignment, Mask->getId(),
51025101
FillEmpty->getId()};
51035102
return BM->addInstTemplate(internal::OpMaskedGatherINTEL, Ops, BB, Ty);
@@ -5114,9 +5113,8 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
51145113
}
51155114
auto *InputVector = transValue(II->getArgOperand(0), BB);
51165115
auto *PtrVector = transValue(II->getArgOperand(1), BB);
5117-
uint32_t Alignment =
5118-
cast<ConstantInt>(II->getArgOperand(2))->getZExtValue();
5119-
auto *Mask = transValue(II->getArgOperand(3), BB);
5116+
uint32_t Alignment = II->getParamAlign(1).valueOrOne().value();
5117+
auto *Mask = transValue(II->getArgOperand(2), BB);
51205118
std::vector<SPIRVWord> Ops = {InputVector->getId(), PtrVector->getId(),
51215119
Alignment, Mask->getId()};
51225120
return BM->addInstTemplate(internal::OpMaskedScatterINTEL, Ops, BB,

llvm-spirv/test/extensions/INTEL/SPV_INTEL_masked_gather_scatter/intel-gather-scatter.ll

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@
4242

4343
; CHECK-LLVM: %[[#VECGATHER:]] = load <4 x ptr addrspace(4)>, ptr
4444
; CHECK-LLVM: %[[#VECSCATTER:]] = load <4 x ptr addrspace(4)>, ptr
45-
; 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>)
46-
; 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))
45+
; 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>)
46+
; 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))
4747

48-
; 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>)
49-
; CHECK-LLVM-DAG: declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, i32 immarg, <4 x i1>)
48+
; CHECK-LLVM-DAG: declare <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)>, <4 x i1>, <4 x i32>)
49+
; CHECK-LLVM-DAG: declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, <4 x i1>)
5050

5151
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"
5252
target triple = "spir"
@@ -58,14 +58,14 @@ entry:
5858
%arg1 = alloca <4 x ptr addrspace(4)>
5959
%0 = load <4 x ptr addrspace(4)>, ptr %arg0
6060
%1 = load <4 x ptr addrspace(4)>, ptr %arg1
61-
%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>)
62-
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))
61+
%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>)
62+
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))
6363
ret void
6464
}
6565

66-
declare <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)>, i32, <4 x i1>, <4 x i32>)
66+
declare <4 x i32> @llvm.masked.gather.v4i32.v4p4(<4 x ptr addrspace(4)>, <4 x i1>, <4 x i32>)
6767

68-
declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, i32, <4 x i1>)
68+
declare void @llvm.masked.scatter.v4i32.v4p4(<4 x i32>, <4 x ptr addrspace(4)>, <4 x i1>)
6969

7070
!llvm.module.flags = !{!0}
7171
!opencl.spir.version = !{!1}

0 commit comments

Comments
 (0)