Don't rely on VectorType::get() default parameter
LLVM 11 deprecates the default boolean parameter which indicates whether
vector types are variable-length. Explicitly pass 'false'.
LLVM 11 introduces a FixedVectorType for this as well, which would help
readability, but we're still at LLVM 10.
Bug: b/165000222
Change-Id: I5404cfc8eea9553e15bfb54b2d3278bdf079612f
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47768
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index c55bc8d..8eb4c7f 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -367,12 +367,12 @@
auto i8Ty = ::llvm::Type::getInt8Ty(jit->context);
auto i8PtrTy = i8Ty->getPointerTo();
auto elPtrTy = elTy->getPointerTo();
- auto elVecTy = ::llvm::VectorType::get(elTy, numEls);
- auto elPtrVecTy = ::llvm::VectorType::get(elPtrTy, numEls);
+ auto elVecTy = ::llvm::VectorType::get(elTy, numEls, false);
+ auto elPtrVecTy = ::llvm::VectorType::get(elPtrTy, numEls, false);
auto i8Base = jit->builder->CreatePointerCast(base, i8PtrTy);
auto i8Ptrs = jit->builder->CreateGEP(i8Base, offsets);
auto elPtrs = jit->builder->CreatePointerCast(i8Ptrs, elPtrVecTy);
- auto i8Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+ auto i8Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls, false), false); // vec<int, int, ...> -> vec<bool, bool, ...>
auto passthrough = zeroMaskedLanes ? ::llvm::Constant::getNullValue(elVecTy) : llvm::UndefValue::get(elVecTy);
auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_gather, { elVecTy, elPtrVecTy });
@@ -394,11 +394,11 @@
auto elVecTy = val->getType();
auto elTy = llvm::cast<llvm::VectorType>(elVecTy)->getElementType();
auto elPtrTy = elTy->getPointerTo();
- auto elPtrVecTy = ::llvm::VectorType::get(elPtrTy, numEls);
+ auto elPtrVecTy = ::llvm::VectorType::get(elPtrTy, numEls, false);
auto i8Base = jit->builder->CreatePointerCast(base, i8PtrTy);
auto i8Ptrs = jit->builder->CreateGEP(i8Base, offsets);
auto elPtrs = jit->builder->CreatePointerCast(i8Ptrs, elPtrVecTy);
- auto i1Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+ auto i1Mask = jit->builder->CreateIntCast(mask, ::llvm::VectorType::get(i1Ty, numEls, false), false); // vec<int, int, ...> -> vec<bool, bool, ...>
auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_scatter, { elVecTy, elPtrVecTy });
jit->builder->CreateCall(func, { val, elPtrs, align, i1Mask });
@@ -934,7 +934,7 @@
case Type_v2f32:
return createBitCast(
createInsertElement(
- V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::type()), 2))),
+ V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::type()), 2, false))),
createLoad(createBitCast(ptr, Pointer<Long>::type()), Long::type(), isVolatile, alignment, atomic, memoryOrder),
0),
type);
@@ -942,7 +942,7 @@
case Type_v4i8:
if(alignment != 0) // Not a local variable (all vectors are 128-bit).
{
- Value *u = V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::type()), 2)));
+ Value *u = V(llvm::UndefValue::get(llvm::VectorType::get(T(Long::type()), 2, false)));
Value *i = createLoad(createBitCast(ptr, Pointer<Int>::type()), Int::type(), isVolatile, alignment, atomic, memoryOrder);
i = createZExt(i, Long::type());
Value *v = createInsertElement(u, i, 0);
@@ -1018,7 +1018,7 @@
case Type_v2f32:
createStore(
createExtractElement(
- createBitCast(value, T(llvm::VectorType::get(T(Long::type()), 2))), Long::type(), 0),
+ createBitCast(value, T(llvm::VectorType::get(T(Long::type()), 2, false))), Long::type(), 0),
createBitCast(ptr, Pointer<Long>::type()),
Long::type(), isVolatile, alignment, atomic, memoryOrder);
return value;
@@ -1117,9 +1117,9 @@
auto numEls = llvm::cast<llvm::VectorType>(V(mask)->getType())->getNumElements();
auto i1Ty = ::llvm::Type::getInt1Ty(jit->context);
auto i32Ty = ::llvm::Type::getInt32Ty(jit->context);
- auto elVecTy = ::llvm::VectorType::get(T(elTy), numEls);
+ auto elVecTy = ::llvm::VectorType::get(T(elTy), numEls, false);
auto elVecPtrTy = elVecTy->getPointerTo();
- auto i8Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+ auto i8Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls, false), false); // vec<int, int, ...> -> vec<bool, bool, ...>
auto passthrough = zeroMaskedLanes ? ::llvm::Constant::getNullValue(elVecTy) : llvm::UndefValue::get(elVecTy);
auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_load, { elVecTy, elVecPtrTy });
@@ -1139,7 +1139,7 @@
auto i32Ty = ::llvm::Type::getInt32Ty(jit->context);
auto elVecTy = V(val)->getType();
auto elVecPtrTy = elVecTy->getPointerTo();
- auto i1Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls), false); // vec<int, int, ...> -> vec<bool, bool, ...>
+ auto i1Mask = jit->builder->CreateIntCast(V(mask), ::llvm::VectorType::get(i1Ty, numEls, false), false); // vec<int, int, ...> -> vec<bool, bool, ...>
auto align = ::llvm::ConstantInt::get(i32Ty, alignment);
auto func = ::llvm::Intrinsic::getDeclaration(jit->module.get(), llvm::Intrinsic::masked_store, { elVecTy, elVecPtrTy });
jit->builder->CreateCall(func, { V(val), V(ptr), align, i1Mask });
@@ -1882,12 +1882,12 @@
Type *Byte16::type()
{
- return T(llvm::VectorType::get(T(Byte::type()), 16));
+ return T(llvm::VectorType::get(T(Byte::type()), 16, false));
}
Type *SByte16::type()
{
- return T(llvm::VectorType::get(T(SByte::type()), 16));
+ return T(llvm::VectorType::get(T(SByte::type()), 16, false));
}
Type *Short2::type()
@@ -2205,7 +2205,7 @@
Type *Short8::type()
{
- return T(llvm::VectorType::get(T(Short::type()), 8));
+ return T(llvm::VectorType::get(T(Short::type()), 8, false));
}
RValue<UShort8> operator<<(RValue<UShort8> lhs, unsigned char rhs)
@@ -2240,7 +2240,7 @@
Type *UShort8::type()
{
- return T(llvm::VectorType::get(T(UShort::type()), 8));
+ return T(llvm::VectorType::get(T(UShort::type()), 8, false));
}
RValue<Int> operator++(Int &val, int) // Post-increment
@@ -2674,7 +2674,7 @@
Type *Int4::type()
{
- return T(llvm::VectorType::get(T(Int::type()), 4));
+ return T(llvm::VectorType::get(T(Int::type()), 4, false));
}
UInt4::UInt4(RValue<Float4> cast)
@@ -2788,7 +2788,7 @@
Type *UInt4::type()
{
- return T(llvm::VectorType::get(T(UInt::type()), 4));
+ return T(llvm::VectorType::get(T(UInt::type()), 4, false));
}
Type *Half::type()
@@ -3381,7 +3381,7 @@
Type *Float4::type()
{
- return T(llvm::VectorType::get(T(Float::type()), 4));
+ return T(llvm::VectorType::get(T(Float::type()), 4, false));
}
RValue<Long> Ticks()