Lines Matching refs:instr
303 Condition Assembler::GetCondition(Instr instr) {
304 switch (instr & kCondMask) {
314 bool Assembler::IsLis(Instr instr) {
315 return ((instr & kOpcodeMask) == ADDIS) && GetRA(instr) == r0;
318 bool Assembler::IsLi(Instr instr) {
319 return ((instr & kOpcodeMask) == ADDI) && GetRA(instr) == r0;
322 bool Assembler::IsAddic(Instr instr) { return (instr & kOpcodeMask) == ADDIC; }
324 bool Assembler::IsOri(Instr instr) { return (instr & kOpcodeMask) == ORI; }
326 bool Assembler::IsBranch(Instr instr) { return ((instr & kOpcodeMask) == BCX); }
328 Register Assembler::GetRA(Instr instr) {
329 return Register::from_code(Instruction::RAValue(instr));
332 Register Assembler::GetRB(Instr instr) {
333 return Register::from_code(Instruction::RBValue(instr));
360 bool Assembler::IsCmpRegister(Instr instr) {
361 return (((instr & kOpcodeMask) == EXT2) &&
362 ((EXT2 | (instr & kExt2OpcodeMask)) == CMP));
365 bool Assembler::IsRlwinm(Instr instr) {
366 return ((instr & kOpcodeMask) == RLWINMX);
369 bool Assembler::IsAndi(Instr instr) { return ((instr & kOpcodeMask) == ANDIx); }
372 bool Assembler::IsRldicl(Instr instr) {
373 return (((instr & kOpcodeMask) == EXT5) &&
374 ((EXT5 | (instr & kExt5OpcodeMask)) == RLDICL));
378 bool Assembler::IsCmpImmediate(Instr instr) {
379 return ((instr & kOpcodeMask) == CMPI);
382 bool Assembler::IsCrSet(Instr instr) {
383 return (((instr & kOpcodeMask) == EXT1) &&
384 ((EXT1 | (instr & kExt1OpcodeMask)) == CREQV));
387 Register Assembler::GetCmpImmediateRegister(Instr instr) {
388 DCHECK(IsCmpImmediate(instr));
389 return GetRA(instr);
392 int Assembler::GetCmpImmediateRawImmediate(Instr instr) {
393 DCHECK(IsCmpImmediate(instr));
394 return instr & kOff16Mask;
420 Instr instr = instr_at(pos);
422 uint32_t opcode = instr & kOpcodeMask;
426 link = SIGN_EXT_IMM26(instr & kImm26Mask);
430 link = SIGN_EXT_IMM16((instr & kImm16Mask));
438 link = SIGN_EXT_IMM26(instr & kImm26Mask);
451 Instr instr = instr_at(pos);
452 uint32_t opcode = instr & kOpcodeMask;
462 if (imm26 == kInstrSize && !(instr & kLKMask)) {
463 // Branch to next instr without link.
464 instr = ORI; // nop: ori, 0,0,0
466 instr &= ((~kImm26Mask) | kAAMask | kLKMask);
467 instr |= (imm26 & kImm26Mask);
469 instr_at_put(pos, instr);
475 if (imm16 == kInstrSize && !(instr & kLKMask)) {
476 // Branch to next instr without link.
477 instr = ORI; // nop: ori, 0,0,0
479 instr &= ((~kImm16Mask) | kAAMask | kLKMask);
480 instr |= (imm16 & kImm16Mask);
482 instr_at_put(pos, instr);
537 Instr instr = instr_at(pos);
538 uint32_t opcode = instr & kOpcodeMask;
614 void Assembler::a_form(Instr instr, DoubleRegister frt, DoubleRegister fra,
616 emit(instr | frt.code() * B21 | fra.code() * B16 | frb.code() * B11 | r);
619 void Assembler::d_form(Instr instr, Register rt, Register ra,
634 emit(instr | rt.code() * B21 | ra.code() * B16 | (kImm16Mask & val));
637 void Assembler::xo_form(Instr instr, Register rt, Register ra, Register rb,
639 emit(instr | rt.code() * B21 | ra.code() * B16 | rb.code() * B11 | o | r);
642 void Assembler::md_form(Instr instr, Register ra, Register rs, int shift,
649 emit(instr | rs.code() * B21 | ra.code() * B16 | sh0_4 * B11 | m0_4 * B6 |
653 void Assembler::mds_form(Instr instr, Register ra, Register rs, Register rb,
658 emit(instr | rs.code() * B21 | ra.code() * B16 | rb.code() * B11 | m0_4 * B6 |
2041 bool Assembler::IsNop(Instr instr, int type) {
2056 return instr == (ORI | reg * B21 | reg * B16);