Lines Matching full:decision
291 /// getDecisionType - Determines whether a ModRM decision with 255 entries can
294 /// @param decision - The decision to be compacted.
295 /// @return - The compactest available representation for the decision.
296 static ModRMDecisionType getDecisionType(ModRMDecision &decision) {
303 if (decision.instructionIDs[index] != decision.instructionIDs[0])
307 (decision.instructionIDs[index] != decision.instructionIDs[0xc0]))
311 (decision.instructionIDs[index] != decision.instructionIDs[0x00]))
315 (decision.instructionIDs[index] != decision.instructionIDs[index&0xf8]))
319 (decision.instructionIDs[index] != decision.instructionIDs[index&0x38]))
339 /// to a particular decision type.
341 /// @param dt - The decision type.
348 llvm_unreachable("Unknown decision type");
390 ModRMDecision &decision) const {
393 ModRMDecisionType dt = getDecisionType(decision);
395 if (dt == MODRM_ONEENTRY && decision.instructionIDs[0] == 0)
413 llvm_unreachable("Unknown decision type");
415 emitOneID(o1, i1, decision.instructionIDs[0], true);
418 emitOneID(o1, i1, decision.instructionIDs[0x00], true); // mod = 0b00
419 emitOneID(o1, i1, decision.instructionIDs[0xc0], true); // mod = 0b11
423 emitOneID(o1, i1, decision.instructionIDs[index], true);
425 emitOneID(o1, i1, decision.instructionIDs[index], true);
429 emitOneID(o1, i1, decision.instructionIDs[index], true);
431 emitOneID(o1, i1, decision.instructionIDs[index], true);
435 emitOneID(o1, i1, decision.instructionIDs[index], true);
452 llvm_unreachable("Unknown decision type");
479 OpcodeDecision &decision) const {
490 emitModRMDecision(o1, o2, i1, i2, decision.modRMDecisions[index]);
506 ContextDecision &decision,
519 emitOpcodeDecision(o1, o2, i1, i2, decision.opcodeDecisions[index]);
742 void DisassemblerTables::setTableFields(ModRMDecision &decision,
748 if (decision.instructionIDs[index] == uid)
751 if (decision.instructionIDs[index] != 0) {
755 InstructionSpecifiers[decision.instructionIDs[index]];
781 decision.instructionIDs[index] = uid;
793 ContextDecision &decision = *Tables[type];
801 setTableFields(decision.opcodeDecisions[index].modRMDecisions[opcode],