projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cso: move cso hashes to a more table driven scheme
[mesa.git]
/
src
/
gallium
/
auxiliary
/
gallivm
/
lp_bld_type.c
diff --git
a/src/gallium/auxiliary/gallivm/lp_bld_type.c
b/src/gallium/auxiliary/gallivm/lp_bld_type.c
index 06f1aae6dcc1c604c02defabddb6cf2476677ff8..c5cf6d4a6c4f85480287f7750304996b3e18fbf4 100644
(file)
--- a/
src/gallium/auxiliary/gallivm/lp_bld_type.c
+++ b/
src/gallium/auxiliary/gallivm/lp_bld_type.c
@@
-30,34
+30,35
@@
#include "lp_bld_type.h"
#include "lp_bld_const.h"
#include "lp_bld_type.h"
#include "lp_bld_const.h"
+#include "lp_bld_init.h"
LLVMTypeRef
LLVMTypeRef
-lp_build_elem_type(struct lp_type type)
+lp_build_elem_type(struct
gallivm_state *gallivm, struct
lp_type type)
{
if (type.floating) {
switch(type.width) {
case 32:
{
if (type.floating) {
switch(type.width) {
case 32:
- return LLVMFloatType
(
);
+ return LLVMFloatType
InContext(gallivm->context
);
break;
case 64:
break;
case 64:
- return LLVMDoubleType
(
);
+ return LLVMDoubleType
InContext(gallivm->context
);
break;
default:
assert(0);
break;
default:
assert(0);
- return LLVMFloatType
(
);
+ return LLVMFloatType
InContext(gallivm->context
);
}
}
else {
}
}
else {
- return LLVMIntType
(
type.width);
+ return LLVMIntType
InContext(gallivm->context,
type.width);
}
}
LLVMTypeRef
}
}
LLVMTypeRef
-lp_build_vec_type(struct lp_type type)
+lp_build_vec_type(struct
gallivm_state *gallivm,struct
lp_type type)
{
{
- LLVMTypeRef elem_type = lp_build_elem_type(type);
+ LLVMTypeRef elem_type = lp_build_elem_type(
gallivm,
type);
if (type.length == 1)
return elem_type;
else
if (type.length == 1)
return elem_type;
else
@@
-149,16
+150,16
@@
lp_check_value(struct lp_type type, LLVMValueRef val)
LLVMTypeRef
LLVMTypeRef
-lp_build_int_elem_type(struct lp_type type)
+lp_build_int_elem_type(struct
gallivm_state *gallivm, struct
lp_type type)
{
{
- return LLVMIntType
(
type.width);
+ return LLVMIntType
InContext(gallivm->context,
type.width);
}
LLVMTypeRef
}
LLVMTypeRef
-lp_build_int_vec_type(struct lp_type type)
+lp_build_int_vec_type(struct
gallivm_state *gallivm, struct
lp_type type)
{
{
- LLVMTypeRef elem_type = lp_build_int_elem_type(type);
+ LLVMTypeRef elem_type = lp_build_int_elem_type(
gallivm,
type);
if (type.length == 1)
return elem_type;
else
if (type.length == 1)
return elem_type;
else
@@
-170,7
+171,7
@@
lp_build_int_vec_type(struct lp_type type)
* Build int32[4] vector type
*/
LLVMTypeRef
* Build int32[4] vector type
*/
LLVMTypeRef
-lp_build_int32_vec4_type(
void
)
+lp_build_int32_vec4_type(
struct gallivm_state *gallivm
)
{
struct lp_type t;
LLVMTypeRef type;
{
struct lp_type t;
LLVMTypeRef type;
@@
-182,11
+183,27
@@
lp_build_int32_vec4_type(void)
t.width = 32; /* 32-bit int */
t.length = 4; /* 4 elements per vector */
t.width = 32; /* 32-bit int */
t.length = 4; /* 4 elements per vector */
- type = lp_build_int_elem_type(t);
+ type = lp_build_int_elem_type(
gallivm,
t);
return LLVMVectorType(type, t.length);
}
return LLVMVectorType(type, t.length);
}
+/**
+ * Create element of vector type
+ */
+struct lp_type
+lp_elem_type(struct lp_type type)
+{
+ struct lp_type res_type;
+
+ assert(type.length > 1);
+ res_type = type;
+ res_type.length = 1;
+
+ return res_type;
+}
+
+
/**
* Create unsigned integer type variation of given type.
*/
/**
* Create unsigned integer type variation of given type.
*/
@@
-367,15
+384,15
@@
lp_dump_llvmtype(LLVMTypeRef t)
void
lp_build_context_init(struct lp_build_context *bld,
void
lp_build_context_init(struct lp_build_context *bld,
-
LLVMBuilderRef builder
,
+
struct gallivm_state *gallivm
,
struct lp_type type)
{
struct lp_type type)
{
- bld->
builder = builder
;
+ bld->
gallivm = gallivm
;
bld->type = type;
bld->type = type;
- bld->int_elem_type = lp_build_int_elem_type(type);
+ bld->int_elem_type = lp_build_int_elem_type(
gallivm,
type);
if (type.floating)
if (type.floating)
- bld->elem_type = lp_build_elem_type(type);
+ bld->elem_type = lp_build_elem_type(
gallivm,
type);
else
bld->elem_type = bld->int_elem_type;
else
bld->elem_type = bld->int_elem_type;
@@
-390,5
+407,5
@@
lp_build_context_init(struct lp_build_context *bld,
bld->undef = LLVMGetUndef(bld->vec_type);
bld->zero = LLVMConstNull(bld->vec_type);
bld->undef = LLVMGetUndef(bld->vec_type);
bld->zero = LLVMConstNull(bld->vec_type);
- bld->one = lp_build_one(type);
+ bld->one = lp_build_one(
gallivm,
type);
}
}