Lines Matching refs:instr

246 Register Assembler::GetRkReg(Instr instr) {
247 return Register::from_code((instr & kRkFieldMask) >> kRkShift);
250 Register Assembler::GetRjReg(Instr instr) {
251 return Register::from_code((instr & kRjFieldMask) >> kRjShift);
254 Register Assembler::GetRdReg(Instr instr) {
255 return Register::from_code((instr & kRdFieldMask) >> kRdShift);
258 uint32_t Assembler::GetRk(Instr instr) {
259 return (instr & kRkFieldMask) >> kRkShift;
262 uint32_t Assembler::GetRkField(Instr instr) { return instr & kRkFieldMask; }
264 uint32_t Assembler::GetRj(Instr instr) {
265 return (instr & kRjFieldMask) >> kRjShift;
268 uint32_t Assembler::GetRjField(Instr instr) { return instr & kRjFieldMask; }
270 uint32_t Assembler::GetRd(Instr instr) {
271 return (instr & kRdFieldMask) >> kRdShift;
274 uint32_t Assembler::GetRdField(Instr instr) { return instr & kRdFieldMask; }
276 uint32_t Assembler::GetSa2(Instr instr) {
277 return (instr & kSa2FieldMask) >> kSaShift;
280 uint32_t Assembler::GetSa2Field(Instr instr) { return instr & kSa2FieldMask; }
282 uint32_t Assembler::GetSa3(Instr instr) {
283 return (instr & kSa3FieldMask) >> kSaShift;
286 uint32_t Assembler::GetSa3Field(Instr instr) { return instr & kSa3FieldMask; }
307 bool Assembler::IsBranch(Instr instr) {
308 uint32_t opcode = (instr >> 26) << 26;
317 bool Assembler::IsB(Instr instr) {
318 uint32_t opcode = (instr >> 26) << 26;
324 bool Assembler::IsBz(Instr instr) {
325 uint32_t opcode = (instr >> 26) << 26;
331 bool Assembler::IsEmittedConstant(Instr instr) {
333 uint32_t label_constant = instr & ~kImm16Mask;
337 bool Assembler::IsJ(Instr instr) {
338 uint32_t opcode = (instr >> 26) << 26;
343 bool Assembler::IsLu12i_w(Instr instr) {
344 uint32_t opcode = (instr >> 25) << 25;
348 bool Assembler::IsOri(Instr instr) {
349 uint32_t opcode = (instr >> 22) << 22;
353 bool Assembler::IsLu32i_d(Instr instr) {
354 uint32_t opcode = (instr >> 25) << 25;
358 bool Assembler::IsLu52i_d(Instr instr) {
359 uint32_t opcode = (instr >> 22) << 22;
363 bool Assembler::IsMov(Instr instr, Register rd, Register rj) {
367 return instr == instr1;
370 bool Assembler::IsPcAddi(Instr instr, Register rd, int32_t si20) {
373 return instr == instr1;
376 bool Assembler::IsNop(Instr instr, unsigned int type) {
383 return instr == instr1;
386 static inline int32_t GetOffsetOfBranch(Instr instr,
390 result = (instr << 6) >> 16;
392 uint32_t low16 = instr << 6;
395 int32_t hi5 = (instr << 27) >> 11;
398 uint32_t low16 = instr << 6;
401 int32_t hi10 = (instr << 22) >> 6;
408 static Assembler::OffsetSize OffsetSizeInBits(Instr instr) {
409 if (Assembler::IsB(instr)) {
411 } else if (Assembler::IsBz(instr)) {
414 DCHECK(Assembler::IsBranch(instr));
419 static inline int32_t AddBranchOffset(int pos, Instr instr) {
420 Assembler::OffsetSize bits = OffsetSizeInBits(instr);
422 int32_t imm = GetOffsetOfBranch(instr, bits);
449 Instr instr = instr_at(pos);
452 if ((instr & ~kImm16Mask) == 0) {
454 if (instr == 0) {
457 int32_t imm18 = ((instr & static_cast<int32_t>(kImm16Mask)) << 16) >> 14;
463 DCHECK(IsBranch(instr) || IsPcAddi(instr, t8, 16));
466 if (IsBranch(instr)) {
467 return AddBranchOffset(pos, instr);
469 DCHECK(IsPcAddi(instr, t8, 16));
486 Instr instr) {
487 int32_t bits = OffsetSizeInBits(instr);
496 instr &= ~mask;
497 return instr | ((imm << 10) & mask);
500 instr &= ~mask;
503 return instr | low16 | hi5;
507 instr &= ~mask;
510 return instr | low16 | hi10;
520 Instr instr = instr_at(pos);
521 if ((instr & ~kImm16Mask) == 0) {
529 DCHECK(IsBranch(instr));
530 instr = SetBranchOffset(pos, target_pos, instr);
531 instr_at_put(pos, instr);
545 Instr instr = instr_at(l.pos());
546 if ((instr & ~kImm16Mask) == 0) {
549 PrintF("%d\n", instr);
575 Instr instr = instr_at(fixup_pos);
579 if (IsBranch(instr)) {
580 int branch_offset = BranchOffset(instr);
592 DCHECK(IsJ(instr) || IsLu12i_w(instr) || IsEmittedConstant(instr) ||
593 IsPcAddi(instr, t8, 8));
640 int Assembler::BranchOffset(Instr instr) {
643 uint32_t opcode = (instr >> 26) << 26;
681 Instr instr = opcode | (si21 & kImm16Mask) << kRkShift |
683 emit(instr);
691 Instr instr = opcode | (si21 & kImm16Mask) << kRkShift | (sc << kRjShift) |
693 emit(instr);
699 Instr instr =
701 emit(instr);
707 Instr instr = opcode | ((si16 & kImm16Mask) << kRkShift) |
709 emit(instr);
715 Instr instr = opcode | cond << kCondShift | (fk.code() << kFkShift) |
717 emit(instr);
723 Instr instr = opcode | ca << kCondShift | (fk.code() << kFkShift) |
725 emit(instr);
731 Instr instr = 0;
732 instr = opcode | (rj.code() << kRjShift) | rd.code();
733 emit(instr);
737 Instr instr = opcode | (fj.code() << kFjShift) | fd.code();
738 emit(instr);
744 Instr instr = opcode | (rj.code() << kRjShift) | fd.code();
745 emit(instr);
751 Instr instr = opcode | (fj.code() << kFjShift) | rd.code();
752 emit(instr);
757 Instr instr = opcode | (rj.code() << kRjShift) | fd.code();
758 emit(instr);
763 Instr instr = opcode | (fj.code() << kFjShift) | rd.code();
764 emit(instr);
769 Instr instr = opcode | (fj.code() << kFjShift) | cd;
770 emit(instr);
775 Instr instr = opcode | cj << kFjShift | fd.code();
776 emit(instr);
781 Instr instr = opcode | (rj.code() << kRjShift) | cd;
782 emit(instr);
787 Instr instr = opcode | cj << kFjShift | rd.code();
788 emit(instr);
793 Instr instr =
795 emit(instr);
800 Instr instr =
802 emit(instr);
807 Instr instr = opcode | (fa.code() << kFaShift) | (fk.code() << kFkShift) |
809 emit(instr);
814 Instr instr =
816 emit(instr);
822 Instr instr = opcode | (bit3 & 0x7) << kSaShift | (rk.code() << kRkShift) |
824 emit(instr);
830 Instr instr = opcode | (bit6m & 0x3f) << 16 | (bit6l & 0x3f) << kRkShift |
832 emit(instr);
837 Instr instr = opcode | (bit20 & 0xfffff) << kRjShift | rd.code();
838 emit(instr);
843 Instr instr = opcode | (bit15 & 0x7fff);
844 emit(instr);
859 Instr instr = opcode | imm << kRkShift | (rj.code() << kRjShift) | rd.code();
860 emit(instr);
866 Instr instr = opcode | ((bit12 & kImm12Mask) << kRkShift) |
868 emit(instr);
2101 Instr instr = instr_at(pc);
2102 int32_t offset = instr & kImm26Mask;
2108 *p = (instr & ~kImm26Mask) | offset;
2325 Instr instr = instr_at(pc);
2327 if (IsB(instr)) {
2332 *p = (instr & ~kImm26Mask) | offset;
2338 uint32_t rd_code = GetRd(instr);