Home | History | Annotate | Download | only in codeflinger

Lines Matching refs:dbits

176 void GGLAssembler::expand(integer_t& d, const component_t& s, int dbits)
180 expand(d, d, dbits);
182 expand(d, integer_t(s.reg, s.size(), s.flags), dbits);
186 void GGLAssembler::expand(component_t& d, const component_t& s, int dbits)
189 expand(r, s, dbits);
193 void GGLAssembler::expand(integer_t& dst, const integer_t& src, int dbits)
202 dst.s = dbits;
205 if (dbits<=sbits) {
213 RSB(AL, 0, d, s, reg_imm(s, LSL, dbits));
214 // d = (s<<dbits) - s;
218 if (dbits % sbits) {
219 MOV(AL, 0, d, reg_imm(s, LSL, dbits-sbits));
220 // d = s << (dbits-sbits);
221 dbits -= sbits;
225 dbits -= sbits;
227 } while(dbits>0);
231 dbits -= sbits;
236 dbits -= sbits;
237 if (sbits*2 < dbits) {
240 } while(dbits>0);
257 int dbits = dh - dl;
260 LOGE_IF(sbits<dbits, "sbits (%d) < dbits (%d) in downshift", sbits, dbits);
262 if (sbits>dbits) {
283 const int offset = sh - dbits;
284 if (dbits<=8 && offset >= 0) {
285 const uint32_t mask = ((1<<dbits)-1) << offset;
290 sbits = dbits;
319 // V * ((1<<dbits)-1) / ((1<<sbits)-1)
320 // V * [(1<<dbits)/((1<<sbits)-1) - 1/((1<<sbits)-1)]
321 // V * [1/((1<<sbits)-1)>>dbits - 1/((1<<sbits)-1)]
322 // V/((1<<(sbits-dbits))-(1>>dbits)) - (V>>sbits)/((1<<sbits)-1)>>sbits
323 // V/((1<<(sbits-dbits))-(1>>dbits)) - (V>>sbits)/(1-(1>>sbits))
325 // By approximating (1>>dbits) and (1>>sbits) to 0:
327 // V>>(sbits-dbits) - V>>sbits
329 // A good approximation is V>>(sbits-dbits),
332 // (V>>(sbits-dbits)<<sbits - V)>>sbits
333 // (V<<dbits - V)>>sbits
334 // (V - V>>dbits)>>(sbits-dbits)
345 // scaling (V-V>>dbits)
346 SUB(AL, 0, ireg, s.reg, reg_imm(s.reg, LSR, dbits));
347 const int shift = (GGL_DITHER_BITS - (sbits-dbits));
354 if ((maskLoBits|dithering) && (sh > dbits)) {
355 int shift = sh-dbits;