Skip to content

Commit 8dceb11

Browse files
authored
[NFC] 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]>
1 parent a08ef75 commit 8dceb11

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

lib/SPIRV/SPIRVWriter.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5067,10 +5067,9 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
50675067
}
50685068
SPIRVType *Ty = transScavengedType(II);
50695069
auto *PtrVector = transValue(II->getArgOperand(0), BB);
5070-
uint32_t Alignment =
5071-
cast<ConstantInt>(II->getArgOperand(1))->getZExtValue();
5072-
auto *Mask = transValue(II->getArgOperand(2), BB);
5073-
auto *FillEmpty = transValue(II->getArgOperand(3), BB);
5070+
uint32_t Alignment = II->getParamAlign(0).valueOrOne().value();
5071+
auto *Mask = transValue(II->getArgOperand(1), BB);
5072+
auto *FillEmpty = transValue(II->getArgOperand(2), BB);
50745073
std::vector<SPIRVWord> Ops = {PtrVector->getId(), Alignment, Mask->getId(),
50755074
FillEmpty->getId()};
50765075
return BM->addInstTemplate(internal::OpMaskedGatherINTEL, Ops, BB, Ty);
@@ -5087,9 +5086,8 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
50875086
}
50885087
auto *InputVector = transValue(II->getArgOperand(0), BB);
50895088
auto *PtrVector = transValue(II->getArgOperand(1), BB);
5090-
uint32_t Alignment =
5091-
cast<ConstantInt>(II->getArgOperand(2))->getZExtValue();
5092-
auto *Mask = transValue(II->getArgOperand(3), BB);
5089+
uint32_t Alignment = II->getParamAlign(1).valueOrOne().value();
5090+
auto *Mask = transValue(II->getArgOperand(2), BB);
50935091
std::vector<SPIRVWord> Ops = {InputVector->getId(), PtrVector->getId(),
50945092
Alignment, Mask->getId()};
50955093
return BM->addInstTemplate(internal::OpMaskedScatterINTEL, Ops, BB,

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)