GBE_ASSERT(c);
if(isa<UndefValue>(c)) {
- uint32_t n = c->getNumOperands();
- Type * opTy = type->getArrayElementType();
- uint32_t size = opTy->getIntegerBitWidth()/ 8;
- offset += size*n;
+ uint32_t size = getTypeByteSize(unit, type);
+ offset += size;
+ return;
+ } else if(isa<ConstantAggregateZero>(c)) {
+ uint32_t size = getTypeByteSize(unit, type);
+ memset((char*)mem+offset, 0, size);
+ offset += size;
return;
}
+
switch(id) {
case Type::TypeID::StructTyID:
{
char a0;
int a1;
};
+struct Test3 {
+ int a0;
+ int a1;
+};
+struct Test4 {
+ float a0;
+ float a1;
+};
constant struct Person james= {{"james"}, (int3)(1, 2, 3)};
-
constant struct Test1 t0 = {1, 2};
constant struct Test2 t1 = {1, 2};
constant char4 d[3] = {(char4)(0, 1, 2, 3), (char4)(4, 5, 6, 7), (char4)(8, 9, 10, 11)};
constant struct Person members[3] = {{{"abc"}, (int3)(1, 2, 3)}, { {"defg"}, (int3)(4,5,6)}, { {"hijk"}, (int3)(7,8,9)} };
+constant struct Test3 zero_struct = {0, 0};
+constant int3 zero_vec = {0,0,0};
+constant int zero_arr[3] = {0,0,0};
+constant float zero_flt[3] = {0.0f, 0.0f, 0.0f};
__kernel void
compiler_global_constant(__global int *dst, int e, int r)
int id = (int)get_global_id(0);
int4 x = a + b;
- dst[id] = m[id%3] * n * o[2] + e + r *x.y * a.x;
+ dst[id] = m[id%3] * n * o[2] + e + r *x.y * a.x + zero_struct.a0 + zero_vec.x + zero_arr[1] + (int)zero_flt[2];
}
// array of vectors
__kernel void