Lines Matching refs:imm
605 ImmediateT32::ImmediateT32(uint32_t imm) {
607 if ((imm & ~0xff) == 0) {
608 SetEncodingValue(imm);
611 if ((imm >> 16) == (imm & 0xffff)) {
612 if ((imm & 0xff00) == 0) {
614 SetEncodingValue((imm & 0xff) | (0x1 << 8));
617 if ((imm & 0xff) == 0) {
619 SetEncodingValue(((imm >> 8) & 0xff) | (0x2 << 8));
622 if (((imm >> 8) & 0xff) == (imm & 0xff)) {
624 SetEncodingValue((imm & 0xff) | (0x3 << 8));
629 uint32_t imm8 = imm >> (24 - shift);
630 uint32_t overflow = imm << (8 + shift);
645 bool ImmediateT32::IsImmediateT32(uint32_t imm) {
647 if ((imm ^ ror(imm, 8)) == 0) return true;
650 if ((imm ^ ror(imm, 16)) == 0 &&
651 (((imm & 0xff00) == 0) || ((imm & 0xff) == 0)))
654 uint32_t lsb = imm & UnsignedNegate(imm);
655 /* if imm is less than lsb*256 then it fits, but instead we test imm/256 to
657 return ((imm >> 8) < lsb);
679 ImmediateA32::ImmediateA32(uint32_t imm) {
681 if (imm <= 0xff) {
682 SetEncodingValue(imm);
686 uint32_t imm8 = (imm << rot) | (imm >> (32 - rot));
695 bool ImmediateA32::IsImmediateA32(uint32_t imm) {
697 if (imm < 256) return true;
700 if (imm & 0xff000000) imm = ror(imm, 16);
703 imm = imm | ((imm >> 1) & 0x55555555);
705 uint32_t lsb = imm & UnsignedNegate(imm);
706 /* if imm is less than lsb*256 then it fits, but instead we test imm/256 to
708 return ((imm >> 8) < lsb);