mirror of https://gitlab.freedesktop.org/mesa/mesa
gallivm: LLVM-15 opaque pointers: disable LLVMGetElementType(ptr_type)
with opaque pointers, we can't query the element type of a pointer type Reviewed-by: Marek Olšák <marek.olsak@amd.com> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18334>
This commit is contained in:
parent
08615f2807
commit
adf2895516
|
@ -209,8 +209,9 @@ void lp_exec_mask_store(struct lp_exec_mask *mask,
|
|||
|
||||
assert(lp_check_value(bld_store->type, val));
|
||||
assert(LLVMGetTypeKind(LLVMTypeOf(dst_ptr)) == LLVMPointerTypeKind);
|
||||
assert(LLVMGetElementType(LLVMTypeOf(dst_ptr)) == LLVMTypeOf(val) ||
|
||||
LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(dst_ptr))) == LLVMArrayTypeKind);
|
||||
assert(LLVM_VERSION_MAJOR >= 15
|
||||
|| (LLVMGetElementType(LLVMTypeOf(dst_ptr)) == LLVMTypeOf(val)
|
||||
|| LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(dst_ptr))) == LLVMArrayTypeKind));
|
||||
|
||||
if (exec_mask) {
|
||||
LLVMValueRef res, dst;
|
||||
|
|
|
@ -120,7 +120,7 @@ lp_build_array_get_ptr(struct gallivm_state *gallivm,
|
|||
LLVMValueRef indices[2];
|
||||
LLVMValueRef element_ptr;
|
||||
assert(LLVMGetTypeKind(LLVMTypeOf(ptr)) == LLVMPointerTypeKind);
|
||||
assert(LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(ptr))) == LLVMArrayTypeKind);
|
||||
assert(LLVM_VERSION_MAJOR >= 15 || LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(ptr))) == LLVMArrayTypeKind);
|
||||
indices[0] = lp_build_const_int32(gallivm, 0);
|
||||
indices[1] = index;
|
||||
element_ptr = LLVMBuildGEP(gallivm->builder, ptr, indices, ARRAY_SIZE(indices), "");
|
||||
|
@ -140,7 +140,7 @@ lp_build_array_get(struct gallivm_state *gallivm,
|
|||
LLVMValueRef element_ptr;
|
||||
LLVMValueRef res;
|
||||
assert(LLVMGetTypeKind(LLVMTypeOf(ptr)) == LLVMPointerTypeKind);
|
||||
assert(LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(ptr))) == LLVMArrayTypeKind);
|
||||
assert(LLVM_VERSION_MAJOR >= 15 || LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(ptr))) == LLVMArrayTypeKind);
|
||||
element_ptr = lp_build_array_get_ptr(gallivm, ptr, index);
|
||||
res = LLVMBuildLoad(gallivm->builder, element_ptr, "");
|
||||
#ifdef DEBUG
|
||||
|
@ -158,7 +158,7 @@ lp_build_array_set(struct gallivm_state *gallivm,
|
|||
{
|
||||
LLVMValueRef element_ptr;
|
||||
assert(LLVMGetTypeKind(LLVMTypeOf(ptr)) == LLVMPointerTypeKind);
|
||||
assert(LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(ptr))) == LLVMArrayTypeKind);
|
||||
assert(LLVM_VERSION_MAJOR >= 15 || LLVMGetTypeKind(LLVMGetElementType(LLVMTypeOf(ptr))) == LLVMArrayTypeKind);
|
||||
element_ptr = lp_build_array_get_ptr(gallivm, ptr, index);
|
||||
LLVMBuildStore(gallivm->builder, value, element_ptr);
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ lp_build_broadcast(struct gallivm_state *gallivm,
|
|||
LLVMTypeRef i32_type = LLVMInt32TypeInContext(gallivm->context);
|
||||
LLVMTypeRef i32_vec_type = LLVMVectorType(i32_type, length);
|
||||
|
||||
assert(LLVMGetElementType(vec_type) == LLVMTypeOf(scalar));
|
||||
assert(LLVM_VERSION_MAJOR >= 15 || LLVMGetElementType(vec_type) == LLVMTypeOf(scalar));
|
||||
|
||||
res = LLVMBuildInsertElement(builder, undef, scalar, LLVMConstNull(i32_type), "");
|
||||
res = LLVMBuildShuffleVector(builder, res, undef, LLVMConstNull(i32_vec_type), "");
|
||||
|
|
Loading…
Reference in New Issue