gallivm: use LLVM opaque pointers in lp_bld_struct.c

Acked-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/15893>
This commit is contained in:
Mihai Preda 2022-05-02 16:08:16 +03:00 committed by Mihai Preda
parent 1f636e7fb2
commit c8520c2a8f
1 changed files with 5 additions and 12 deletions

View File

@ -134,15 +134,7 @@ lp_build_pointer_get(LLVMBuilderRef builder,
LLVMValueRef ptr,
LLVMValueRef index)
{
LLVMValueRef element_ptr;
LLVMValueRef res;
assert(LLVMGetTypeKind(LLVMTypeOf(ptr)) == LLVMPointerTypeKind);
element_ptr = LLVMBuildGEP(builder, ptr, &index, 1, "");
res = LLVMBuildLoad(builder, element_ptr, "");
#ifdef DEBUG
lp_build_name(res, "%s[%s]", LLVMGetValueName(ptr), LLVMGetValueName(index));
#endif
return res;
return lp_build_pointer_get_unaligned(builder, ptr, index, 0);
}
@ -157,7 +149,8 @@ lp_build_pointer_get_unaligned(LLVMBuilderRef builder,
assert(LLVMGetTypeKind(LLVMTypeOf(ptr)) == LLVMPointerTypeKind);
element_ptr = LLVMBuildGEP(builder, ptr, &index, 1, "");
res = LLVMBuildLoad(builder, element_ptr, "");
LLVMSetAlignment(res, alignment);
if (alignment)
LLVMSetAlignment(res, alignment);
#ifdef DEBUG
lp_build_name(res, "%s[%s]", LLVMGetValueName(ptr), LLVMGetValueName(index));
#endif
@ -172,7 +165,7 @@ lp_build_pointer_set(LLVMBuilderRef builder,
LLVMValueRef value)
{
LLVMValueRef element_ptr;
element_ptr = LLVMBuildGEP(builder, ptr, &index, 1, "");
element_ptr = LLVMBuildGEP2(builder, LLVMTypeOf(value), ptr, &index, 1, "");
LLVMBuildStore(builder, value, element_ptr);
}
@ -186,7 +179,7 @@ lp_build_pointer_set_unaligned(LLVMBuilderRef builder,
{
LLVMValueRef element_ptr;
LLVMValueRef instr;
element_ptr = LLVMBuildGEP(builder, ptr, &index, 1, "");
element_ptr = LLVMBuildGEP2(builder, LLVMTypeOf(value), ptr, &index, 1, "");
instr = LLVMBuildStore(builder, value, element_ptr);
LLVMSetAlignment(instr, alignment);
}