llvmpipe: Utility function to get the pointer to a structure member.
This commit is contained in:
parent
866fbacf2b
commit
b1eff018c7
|
@ -41,18 +41,31 @@
|
||||||
#include "lp_bld_struct.h"
|
#include "lp_bld_struct.h"
|
||||||
|
|
||||||
|
|
||||||
|
LLVMValueRef
|
||||||
|
lp_build_struct_get_ptr(LLVMBuilderRef builder,
|
||||||
|
LLVMValueRef ptr,
|
||||||
|
unsigned member,
|
||||||
|
const char *name)
|
||||||
|
{
|
||||||
|
LLVMValueRef indices[2];
|
||||||
|
LLVMValueRef member_ptr;
|
||||||
|
indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
|
||||||
|
indices[1] = LLVMConstInt(LLVMInt32Type(), member, 0);
|
||||||
|
member_ptr = LLVMBuildGEP(builder, ptr, indices, Elements(indices), "");
|
||||||
|
lp_build_name(member_ptr, "%s.%s_ptr", LLVMGetValueName(ptr), name);
|
||||||
|
return member_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
LLVMValueRef
|
LLVMValueRef
|
||||||
lp_build_struct_get(LLVMBuilderRef builder,
|
lp_build_struct_get(LLVMBuilderRef builder,
|
||||||
LLVMValueRef ptr,
|
LLVMValueRef ptr,
|
||||||
unsigned member,
|
unsigned member,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
LLVMValueRef indices[2];
|
|
||||||
LLVMValueRef member_ptr;
|
LLVMValueRef member_ptr;
|
||||||
LLVMValueRef res;
|
LLVMValueRef res;
|
||||||
indices[0] = LLVMConstInt(LLVMInt32Type(), 0, 0);
|
member_ptr = lp_build_struct_get_ptr(builder, ptr, member, name);
|
||||||
indices[1] = LLVMConstInt(LLVMInt32Type(), member, 0);
|
|
||||||
member_ptr = LLVMBuildGEP(builder, ptr, indices, Elements(indices), "");
|
|
||||||
res = LLVMBuildLoad(builder, member_ptr, "");
|
res = LLVMBuildLoad(builder, member_ptr, "");
|
||||||
lp_build_name(res, "%s.%s", LLVMGetValueName(ptr), name);
|
lp_build_name(res, "%s.%s", LLVMGetValueName(ptr), name);
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -53,6 +53,18 @@
|
||||||
offsetof(_ctype, _cmember))
|
offsetof(_ctype, _cmember))
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get value pointer to a structure member.
|
||||||
|
*/
|
||||||
|
LLVMValueRef
|
||||||
|
lp_build_struct_get_ptr(LLVMBuilderRef builder,
|
||||||
|
LLVMValueRef ptr,
|
||||||
|
unsigned member,
|
||||||
|
const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the value of a structure member.
|
||||||
|
*/
|
||||||
LLVMValueRef
|
LLVMValueRef
|
||||||
lp_build_struct_get(LLVMBuilderRef builder,
|
lp_build_struct_get(LLVMBuilderRef builder,
|
||||||
LLVMValueRef ptr,
|
LLVMValueRef ptr,
|
||||||
|
|
Loading…
Reference in New Issue