mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-03 01:12:59 +00:00
[AVX-512] Fix the valid immediates for the scatter/gather prefetch intrinsics.
The immediate should be 1 or 2, not 0 or 1. This was found while adding bounds checking to clang. In fact the existing clang builtin test failed if we ran it all the way to assembly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@297591 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc9614d291
commit
acde888274
@ -20203,8 +20203,9 @@ static SDValue LowerINTRINSIC_W_CHAIN(SDValue Op, const X86Subtarget &Subtarget,
|
||||
case PREFETCH: {
|
||||
SDValue Hint = Op.getOperand(6);
|
||||
unsigned HintVal = cast<ConstantSDNode>(Hint)->getZExtValue();
|
||||
assert(HintVal < 2 && "Wrong prefetch hint in intrinsic: should be 0 or 1");
|
||||
unsigned Opcode = (HintVal ? IntrData->Opc1 : IntrData->Opc0);
|
||||
assert((HintVal == 1 || HintVal == 2) &&
|
||||
"Wrong prefetch hint in intrinsic: should be 1 or 2");
|
||||
unsigned Opcode = (HintVal != 1 ? IntrData->Opc1 : IntrData->Opc0);
|
||||
SDValue Chain = Op.getOperand(0);
|
||||
SDValue Mask = Op.getOperand(2);
|
||||
SDValue Index = Op.getOperand(3);
|
||||
|
@ -284,10 +284,10 @@ define void @prefetch(<8 x i64> %ind, i8* %base) {
|
||||
; CHECK-NEXT: vscatterpf1qps (%rdi,%zmm0,2) {%k1}
|
||||
; CHECK-NEXT: vzeroupper
|
||||
; CHECK-NEXT: retq
|
||||
call void @llvm.x86.avx512.gatherpf.qps.512(i8 -1, <8 x i64> %ind, i8* %base, i32 4, i32 0)
|
||||
call void @llvm.x86.avx512.gatherpf.qps.512(i8 0, <8 x i64> %ind, i8* %base, i32 4, i32 1)
|
||||
call void @llvm.x86.avx512.scatterpf.qps.512(i8 1, <8 x i64> %ind, i8* %base, i32 2, i32 0)
|
||||
call void @llvm.x86.avx512.scatterpf.qps.512(i8 120, <8 x i64> %ind, i8* %base, i32 2, i32 1)
|
||||
call void @llvm.x86.avx512.gatherpf.qps.512(i8 -1, <8 x i64> %ind, i8* %base, i32 4, i32 1)
|
||||
call void @llvm.x86.avx512.gatherpf.qps.512(i8 0, <8 x i64> %ind, i8* %base, i32 4, i32 2)
|
||||
call void @llvm.x86.avx512.scatterpf.qps.512(i8 1, <8 x i64> %ind, i8* %base, i32 2, i32 1)
|
||||
call void @llvm.x86.avx512.scatterpf.qps.512(i8 120, <8 x i64> %ind, i8* %base, i32 2, i32 2)
|
||||
ret void
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user