MCPcopy Create free account
hub / github.com/KhronosGroup/OpenCL-CTS / initCmpBuffer

Function initCmpBuffer

test_conformance/select/test_select.cpp:123–175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

121
122{
123 assert(cmptype != kfloat);
124 switch (type_size[cmptype]) {
125 case 1: {
126 uint8_t *ub = (uint8_t *)cmp;
127 if (vecsize == 1)
128 for (uint32_t i = 0; i < count; i++)
129 ub[i] = i % 2 ? 0 : (start + i) / 2;
130 else
131 for (uint32_t i = 0; i < count; i++)
132 {
133 uint16_t vec_bitmask = (start + i) / vecsize;
134 uint16_t vec_idx = (start + i) % vecsize;
135 uint8_t gen = genrand_int32(d) & 0xff;
136 ub[i] = ((vec_bitmask >> vec_idx) & 0x1) ? gen | 0x80
137 : gen & 0x7f;
138 }
139 break;
140 }
141 case 2: {
142 uint16_t* us = (uint16_t *)cmp;
143 if (vecsize == 1)
144 {
145 for (uint32_t i = 0; i < count; i++)
146 us[i] = i % 2 ? 0 : genrand_int32(d) & 0xffff;
147 }
148 else
149 {
150 for (uint32_t i = 0; i < count; i++)
151 {
152 uint16_t vec_bitmask = (start + i) / vecsize;
153 uint16_t vec_idx = (start + i) % vecsize;
154 uint16_t gen = genrand_int32(d) & 0xffff;
155 us[i] = ((vec_bitmask >> vec_idx) & 0x1) ? gen | 0x8000
156 : gen & 0x7fff;
157 }
158 }
159 break;
160 }
161 case 4: {
162 uint32_t *ui = (uint32_t *)cmp;
163 if (vecsize == 1)
164 {
165 for (uint32_t i = 0; i < count; i++)
166 ui[i] = i % 2 ? 0 : genrand_int32(d);
167 }
168 else
169 {
170 for (uint32_t i = 0; i < count; i++)
171 {
172 uint16_t vec_bitmask = (start + i) / vecsize;
173 uint16_t vec_idx = (start + i) % vecsize;
174 uint32_t gen = genrand_int32(d);
175 ui[i] = ((vec_bitmask >> vec_idx) & 0x1) ? gen | 0x80000000
176 : gen & 0x7fffffff;
177 }
178 }

Callers 1

doTestFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected