Lines Matching defs:data

45    if (defExists(0) && def(0).rep()->reg.data.id < 0) {
47 if (def(d).rep()->reg.data.id >= 0)
74 if (getDef(d)->refCount() || getDef(d)->reg.data.id >= 0)
110 if (mov->getDef(0)->reg.data.id < 0 && si && si->op != OP_PHI) {
328 !targ->insnCanLoadOffset(i, s, imm.reg.data.s32))
332 i->src(s).get()->reg.data.offset += imm.reg.data.u32;
336 !targ->insnCanLoadOffset(i, s, -imm.reg.data.s32))
340 i->src(s).get()->reg.data.offset -= imm.reg.data.u32;
343 !targ->insnCanLoadOffset(i, s, imm.reg.data.s32))
347 i->src(s).get()->reg.data.offset += imm.reg.data.u32;
350 !targ->insnCanLoadOffset(i, s, imm.reg.data.s32))
355 i->src(s).get()->reg.data.offset += imm.reg.data.u32;
469 if (imm.reg.data.f32 != 1.0f)
488 imm.reg.data.f32 = fabsf(imm.reg.data.f32);
490 imm.reg.data.f32 = -imm.reg.data.f32;
492 if (imm.reg.data.f32 < 0.0f)
493 imm.reg.data.f32 = 0.0f;
495 if (imm.reg.data.f32 > 1.0f)
496 imm.reg.data.f32 = 1.0f;
508 imm.reg.data.s32 = (imm.reg.data.s32 >= 0) ?
509 imm.reg.data.s32 : -imm.reg.data.s32;
511 imm.reg.data.s32 = -imm.reg.data.s32;
513 imm.reg.data.s32 = ~imm.reg.data.s32;
518 imm.reg.data.f64 = fabs(imm.reg.data.f64);
520 imm.reg.data.f64 = -imm.reg.data.f64;
522 if (imm.reg.data.f64 < 0.0)
523 imm.reg.data.f64 = 0.0;
525 if (imm.reg.data.f64 > 1.0)
526 imm.reg.data.f64 = 1.0;
533 imm.reg.data.u64 = 0;
561 memset(&res.data, 0, sizeof(res.data));
565 int bits = b->data.u32;
567 uint32_t data = a->data.u32 & (0xffffffff >> (32 - bits));
568 if (bits < 32 && (data & (1 << (bits - 1))))
569 data = data - (1 << bits);
570 res.data.u32 = data;
575 res.data.u32 = ((1 << b->data.u32) - 1) << a->data.u32;
581 if (!isfinite(a->data.f32))
582 a->data.f32 = 0.0f;
583 if (!isfinite(b->data.f32))
584 b->data.f32 = 0.0f;
588 res.data.f32 = a->data.f32 * b->data.f32 * exp2f(i->postFactor);
590 case TYPE_F64: res.data.f64 = a->data.f64 * b->data.f64; break;
593 res.data.s32 = ((int64_t)a->data.s32 * b->data.s32) >> 32;
599 res.data.u32 = ((uint64_t)a->data.u32 * b->data.u32) >> 32;
602 res.data.u32 = a->data.u32 * b->data.u32; break;
608 if (b->data.u32 == 0)
611 case TYPE_F32: res.data.f32 = a->data.f32 / b->data.f32; break;
612 case TYPE_F64: res.data.f64 = a->data.f64 / b->data.f64; break;
613 case TYPE_S32: res.data.s32 = a->data.s32 / b->data.s32; break;
614 case TYPE_U32: res.data.u32 = a->data.u32 / b->data.u32; break;
621 case TYPE_F32: res.data.f32 = a->data.f32 + b->data.f32; break;
622 case TYPE_F64: res.data.f64 = a->data.f64 + b->data.f64; break;
624 case TYPE_U32: res.data.u32 = a->data.u32 + b->data.u32; break;
631 case TYPE_F32: res.data.f32 = a->data.f32 - b->data.f32; break;
632 case TYPE_F64: res.data.f64 = a->data.f64 - b->data.f64; break;
634 case TYPE_U32: res.data.u32 = a->data.u32 - b->data.u32; break;
641 case TYPE_F32: res.data.f32 = pow(a->data.f32, b->data.f32); break;
642 case TYPE_F64: res.data.f64 = pow(a->data.f64, b->data.f64); break;
649 case TYPE_F32: res.data.f32 = MAX2(a->data.f32, b->data.f32); break;
650 case TYPE_F64: res.data.f64 = MAX2(a->data.f64, b->data.f64); break;
651 case TYPE_S32: res.data.s32 = MAX2(a->data.s32, b->data.s32); break;
652 case TYPE_U32: res.data.u32 = MAX2(a->data.u32, b->data.u32); break;
659 case TYPE_F32: res.data.f32 = MIN2(a->data.f32, b->data.f32); break;
660 case TYPE_F64: res.data.f64 = MIN2(a->data.f64, b->data.f64); break;
661 case TYPE_S32: res.data.s32 = MIN2(a->data.s32, b->data.s32); break;
662 case TYPE_U32: res.data.u32 = MIN2(a->data.u32, b->data.u32); break;
668 res.data.u64 = a->data.u64 & b->data.u64;
671 res.data.u64 = a->data.u64 | b->data.u64;
674 res.data.u64 = a->data.u64 ^ b->data.u64;
677 res.data.u32 = a->data.u32 << b->data.u32;
681 case TYPE_S32: res.data.s32 = a->data.s32 >> b->data.u32; break;
682 case TYPE_U32: res.data.u32 = a->data.u32 >> b->data.u32; break;
688 if (a->data.u32 != b->data.u32)
690 res.data.u32 = a->data.u32;
693 int offset = b->data.u32 & 0xff;
694 int width = (b->data.u32 >> 8) & 0xff;
698 res.data.u32 = 0;
706 res.data.u32 = util_bitreverse(a->data.u32);
708 res.data.u32 = a->data.u32;
710 case TYPE_S32: res.data.s32 = (res.data.s32 << lshift) >> rshift; break;
711 case TYPE_U32: res.data.u32 = (res.data.u32 << lshift) >> rshift; break;
718 res.data.u32 = util_bitcount(a->data.u32 & b->data.u32);
723 res.data.u32 = a->data.u32 + b->data.u32;
731 res.data.u64 = (((uint64_t)b->data.u32) << 32) | a->data.u32;
746 i->setSrc(0, new_ImmediateValue(i->bb->getProgram(), res.data.u32));
749 i->getSrc(0)->reg.data = res.data;
796 memset(&res.data, 0, sizeof(res.data));
801 uint8_t lut = ((a->data.u32 >> n) & 1) << 2 |
802 ((b->data.u32 >> n) & 1) << 1 |
803 ((c->data.u32 >> n) & 1);
804 res.data.u32 |= !!(i->subOp & (1 << lut)) << n;
809 uint64_t input = (uint64_t)c->data.u32 << 32 | a->data.u32;
810 uint16_t permt = b->data.u32;
812 res.data.u32 |= ((input >> ((permt & 0xf) * 8)) & 0xff) << n * 8;
817 int offset = b->data.u32 & 0xff;
818 int width = (b->data.u32 >> 8) & 0xff;
820 res.data.u32 = ((a->data.u32 << offset) & bitmask) | (c->data.u32 & ~bitmask);
827 res.data.f32 = a->data.f32 * b->data.f32 * exp2f(i->postFactor) +
828 c->data.f32;
831 res.data.f64 = a->data.f64 * b->data.f64 + c->data.f64;
835 res.data.s32 = ((int64_t)a->data.s32 * b->data.s32 >> 32) + c->data.s32;
841 res.data.u32 = ((uint64_t)a->data.u32 * b->data.u32 >> 32) + c->data.u32;
844 res.data.u32 = a->data.u32 * b->data.u32 + c->data.u32;
852 res.data.u32 = (a->data.u32 << b->data.u32) + c->data.u32;
863 i->setSrc(0, new_ImmediateValue(i->bb->getProgram(), res.data.u32));
867 i->getSrc(0)->reg.data = res.data;
882 case OP_NEG: res.data.f32 = -imm.reg.data.f32; break;
883 case OP_ABS: res.data.f32 = fabsf(imm.reg.data.f32); break;
884 case OP_SAT: res.data.f32 = SATURATE(imm.reg.data.f32); break;
885 case OP_RCP: res.data.f32 = 1.0f / imm.reg.data.f32; break;
886 case OP_RSQ: res.data.f32 = 1.0f / sqrtf(imm.reg.data.f32); break;
887 case OP_LG2: res.data.f32 = log2f(imm.reg.data.f32); break;
888 case OP_EX2: res.data.f32 = exp2f(imm.reg.data.f32); break;
889 case OP_SIN: res.data.f32 = sinf(imm.reg.data.f32); break;
890 case OP_COS: res.data.f32 = cosf(imm.reg.data.f32); break;
891 case OP_SQRT: res.data.f32 = sqrtf(imm.reg.data.f32); break;
895 res.data.f32 = imm.reg.data.f32;
901 i->setSrc(0, new_ImmediateValue(i->bb->getProgram(), res.data.f32));
913 float f = imm2.reg.data.f32 * exp2f(mul2->postFactor);
930 mul1->setSrc(s1, bld.loadImm(NULL, f * imm1.reg.data.f32));
1068 uint64_t val = imm0.reg.data.u64;
1106 imm0.reg.data.u32 = 32 - imm0.reg.data.u32;
1109 i->setSrc(1, new_ImmediateValue(prog, imm0.reg.data.u32));
1145 int64_t b = typeSizeof(i->dType) == 8 ? imm0.reg.data.s64 : imm0.reg.data.s32;
1154 prog, imm0.reg.data.f32 * exp2f(i->postFactor)));
1186 int64_t b = typeSizeof(i->dType) == 8 ? imm0.reg.data.s64 : imm0.reg.data.s32;
1219 if (imm0.reg.data.u32 == 0) {
1222 if (imm0.reg.data.u32 == 1) {
1228 i->setSrc(1, bld.mkImm(util_logbase2(imm0.reg.data.u32)));
1233 const uint32_t d = imm0.reg.data.u32;
1262 if (imm0.reg.data.s32 == -1) {
1268 const int32_t d = imm0.reg.data.s32;
1302 i->setSrc(1, bld.loadImm(NULL, imm0.reg.data.u32 - 1));
1317 bld.loadImm(NULL, imm0.reg.data.u32 - 1));
1354 if (imm0.reg.data.u32 != 0 || !si)
1401 if (imm0.reg.data.u32 == 0) {
1406 } else if (imm0.reg.data.u32 == ~0U) {
1419 if (imm0.reg.data.f32 != 1.0)
1440 util_is_power_of_two_or_zero(imm0.reg.data.u32 + 1)) {
1442 uint32_t ext = (util_last_bit(imm0.reg.data.u32) << 8) | imm1.reg.data.u32;
1449 util_is_power_of_two_or_zero(~imm0.reg.data.u32 + 1) &&
1450 util_last_bit(~imm0.reg.data.u32) <= imm1.reg.data.u32) {
1466 if (imm0.reg.data.u32 == 0) {
1481 i->setSrc(1, bld.loadImm(NULL, imm0.reg.data.u32 + imm1.reg.data.u32));
1485 if (si->src(1).getImmediate(imm1) && imm0.reg.data.u32 == imm1.reg.data.u32) {
1489 i->setSrc(1, bld.loadImm(NULL, ~((1 << imm0.reg.data.u32) - 1)));
1511 i->setSrc(1, bld.loadImm(NULL, imm1.reg.data.u32 << imm0.reg.data.u32));
1533 i->setSrc(adds, bld.loadImm(NULL, imm1.reg.data.u32 << imm0.reg.data.u32));
1537 bld.mkImm(imm0.reg.data.u32)));
1562 case TYPE_S32: res = util_last_bit_signed(imm0.reg.data.s32) - 1; break;
1563 case TYPE_U32: res = util_last_bit(imm0.reg.data.u32) - 1; break;
1577 uint32_t res = util_bitreverse(imm0.reg.data.u32);
1586 uint32_t res = util_bitcount(imm0.reg.data.u32);
1609 res.data.dst = util_iround(i->saturate ? \
1610 CLAMP(imm0.reg.data.f64, fmin, fmax) : \
1611 imm0.reg.data.f64); \
1614 res.data.dst = util_iround(i->saturate ? \
1615 CLAMP(imm0.reg.data.f32, fmin, fmax) : \
1616 imm0.reg.data.f32); \
1619 res.data.dst = i->saturate ? \
1620 CLAMP(imm0.reg.data.s32, imin, imax) : \
1621 imm0.reg.data.s32; \
1624 res.data.dst = i->saturate ? \
1625 CLAMP(imm0.reg.data.u32, umin, umax) : \
1626 imm0.reg.data.u32; \
1629 res.data.dst = i->saturate ? \
1630 CLAMP(imm0.reg.data.s16, imin, imax) : \
1631 imm0.reg.data.s16; \
1634 res.data.dst = i->saturate ? \
1635 CLAMP(imm0.reg.data.u16, umin, umax) : \
1636 imm0.reg.data.u16; \
1640 i->setSrc(0, bld.mkImm(res.data.dst)); \
1651 res.data.f32 = i->saturate ?
1652 SATURATE(imm0.reg.data.f64) :
1653 imm0.reg.data.f64;
1656 res.data.f32 = i->saturate ?
1657 SATURATE(imm0.reg.data.f32) :
1658 imm0.reg.data.f32;
1660 case TYPE_U16: res.data.f32 = (float) imm0.reg.data.u16; break;
1661 case TYPE_U32: res.data.f32 = (float) imm0.reg.data.u32; break;
1662 case TYPE_S16: res.data.f32 = (float) imm0.reg.data.s16; break;
1663 case TYPE_S32: res.data.f32 = (float) imm0.reg.data.s32; break;
1667 i->setSrc(0, bld.mkImm(res.data.f32));
1672 res.data.f64 = i->saturate ?
1673 SATURATE(imm0.reg.data.f64) :
1674 imm0.reg.data.f64;
1677 res.data.f64 = i->saturate ?
1678 SATURATE(imm0.reg.data.f32) :
1679 imm0.reg.data.f32;
1681 case TYPE_U16: res.data.f64 = (double) imm0.reg.data.u16; break;
1682 case TYPE_U32: res.data.f64 = (double) imm0.reg.data.u32; break;
1683 case TYPE_S16: res.data.f64 = (double) imm0.reg.data.s16; break;
1684 case TYPE_S32: res.data.f64 = (double) imm0.reg.data.s32; break;
1688 i->setSrc(0, bld.mkImm(res.data.f64));
2185 width = (imm.reg.data.u32 >> 8) & 0xff;
2186 offset = imm.reg.data.u32 & 0xff;
2204 if (imm.reg.data.u32 == 0xff)
2206 else if (imm.reg.data.u32 == 0xffff)
2217 ((width == 8 && (imm.reg.data.u32 & 0x7) == 0) ||
2218 (width == 16 && (imm.reg.data.u32 & 0xf) == 0))) {
2220 offset = imm.reg.data.u32;
2229 if (imm.reg.data.u32 == 24) {
2232 } else if (imm.reg.data.u32 == 16) {
2248 ((width == 8 && (imm.reg.data.u32 & 0x7) == 0) ||
2249 (width == 16 && (imm.reg.data.u32 & 0xf) == 0)) &&
2250 imm.reg.data.u32 <= offset) {
2252 offset -= imm.reg.data.u32;
2273 int32_t val = insn->getSrc(2)->asImm()->reg.data.s32;
2296 val += imm.reg.data.s32;
2343 rdsv->getSrc(0)->asSym()->reg.data.sv.sv != SV_COMBINED_TID)
2492 add->setSrc(1, new_ImmediateValue(shl->bb->getProgram(), imm.reg.data.u32));
2683 if (offset != ldst->getSrc(0)->reg.data.offset) {
2686 ldst->getSrc(0)->reg.data.offset = offset;
2778 int32_t offLd = ld->getSrc(0)->reg.data.offset;
2813 rec->offset = rec->insn->getSrc(0)->reg.data.offset = offLd;
2838 int32_t offSt = st->getSrc(0)->reg.data.offset;
2915 offset = mem->reg.data.offset;
2972 if ((it->offset >> 4) != (sym->reg.data.offset >> 4) ||
2978 if (it->offset < sym->reg.data.offset) {
2979 if (it->offset + it->size >= sym->reg.data.offset) {
2980 isAdj = (it->offset + it->size == sym->reg.data.offset);
2987 isAdj = it->offset != sym->reg.data.offset;
2991 if (!(sym->reg.data.offset & 0x7))
2992 if (it->offset - size <= sym->reg.data.offset)
3004 int32_t offLd = ld->getSrc(0)->reg.data.offset;
3028 int32_t offE = ldE->getSrc(0)->reg.data.offset;
3053 int32_t offS = st->getSrc(0)->reg.data.offset;
3095 rec->offset = st->getSrc(0)->reg.data.offset;
3317 int bytes = v->reg.data.id * MIN2(v->reg.size, 4);
3351 pred->join->reg.data.id = -1; // deallocate
3562 i->getDef(0)->reg.data.id != i->getSrc(2)->reg.data.id)
3565 if (i->getDef(0)->reg.data.id >= 64 ||
3566 i->getSrc(0)->reg.data.id >= 64)
3569 if (i->flagsSrc >= 0 && i->getSrc(i->flagsSrc)->reg.data.id != 0)
3590 if (i->getSrc(1)->reg.data.id & 1)
3591 val.reg.data.u32 >>= 16;
3592 val.reg.data.u32 &= 0xffff;
3593 i->setSrc(1, new_ImmediateValue(prog, val.reg.data.u32));
3618 i->getDef(0)->reg.data.id != i->getSrc(2)->reg.data.id)
3994 if (!ld1->getDef(d)->refCount() && ld1->getDef(d)->reg.data.id < 0)
3999 addr1 = ld1->getSrc(0)->reg.data.offset;