Lines Matching defs:Inst

517   bool processInstruction(MCInst &Inst,
839 void addExpr(MCInst &Inst, const MCExpr *Expr) const {
842 Inst.addOperand(MCOperand::CreateImm(CE->getValue()));
844 Inst.addOperand(MCOperand::CreateExpr(Expr));
847 void addRegOperands(MCInst &Inst, unsigned N) const {
849 Inst.addOperand(MCOperand::CreateReg(getReg()));
852 void addImmOperands(MCInst &Inst, unsigned N) const {
854 addExpr(Inst, getImm());
857 void addMem8Operands(MCInst &Inst, unsigned N) const {
858 addMemOperands(Inst, N);
860 void addMem16Operands(MCInst &Inst, unsigned N) const {
861 addMemOperands(Inst, N);
863 void addMem32Operands(MCInst &Inst, unsigned N) const {
864 addMemOperands(Inst, N);
866 void addMem64Operands(MCInst &Inst, unsigned N) const {
867 addMemOperands(Inst, N);
869 void addMem80Operands(MCInst &Inst, unsigned N) const {
870 addMemOperands(Inst, N);
872 void addMem128Operands(MCInst &Inst, unsigned N) const {
873 addMemOperands(Inst, N);
875 void addMem256Operands(MCInst &Inst, unsigned N) const {
876 addMemOperands(Inst, N);
878 void addMemVX32Operands(MCInst &Inst, unsigned N) const {
879 addMemOperands(Inst, N);
881 void addMemVY32Operands(MCInst &Inst, unsigned N) const {
882 addMemOperands(Inst, N);
884 void addMemVX64Operands(MCInst &Inst, unsigned N) const {
885 addMemOperands(Inst, N);
887 void addMemVY64Operands(MCInst &Inst, unsigned N) const {
888 addMemOperands(Inst, N);
891 void addMemOperands(MCInst &Inst, unsigned N) const {
893 Inst.addOperand(MCOperand::CreateReg(getMemBaseReg()));
894 Inst.addOperand(MCOperand::CreateImm(getMemScale()));
895 Inst.addOperand(MCOperand::CreateReg(getMemIndexReg()));
896 addExpr(Inst, getMemDisp());
897 Inst.addOperand(MCOperand::CreateReg(getMemSegReg()));
900 void addAbsMemOperands(MCInst &Inst, unsigned N) const {
904 Inst.addOperand(MCOperand::CreateImm(CE->getValue()));
906 Inst.addOperand(MCOperand::CreateExpr(getMemDisp()));
2127 static bool convertToSExti8(MCInst &Inst, unsigned Opcode, unsigned Reg,
2134 TmpInst.addOperand(Inst.getOperand(0));
2135 Inst = TmpInst;
2139 static bool convert16i16to16ri8(MCInst &Inst, unsigned Opcode,
2141 if (!Inst.getOperand(0).isImm() ||
2142 !isImmSExti16i8Value(Inst.getOperand(0).getImm()))
2145 return convertToSExti8(Inst, Opcode, X86::AX, isCmp);
2148 static bool convert32i32to32ri8(MCInst &Inst, unsigned Opcode,
2150 if (!Inst.getOperand(0).isImm() ||
2151 !isImmSExti32i8Value(Inst.getOperand(0).getImm()))
2154 return convertToSExti8(Inst, Opcode, X86::EAX, isCmp);
2157 static bool convert64i32to64ri8(MCInst &Inst, unsigned Opcode,
2159 if (!Inst.getOperand(0).isImm() ||
2160 !isImmSExti64i8Value(Inst.getOperand(0).getImm()))
2163 return convertToSExti8(Inst, Opcode, X86::RAX, isCmp);
2167 processInstruction(MCInst &Inst,
2169 switch (Inst.getOpcode()) {
2171 case X86::AND16i16: return convert16i16to16ri8(Inst, X86::AND16ri8);
2172 case X86::AND32i32: return convert32i32to32ri8(Inst, X86::AND32ri8);
2173 case X86::AND64i32: return convert64i32to64ri8(Inst, X86::AND64ri8);
2174 case X86::XOR16i16: return convert16i16to16ri8(Inst, X86::XOR16ri8);
2175 case X86::XOR32i32: return convert32i32to32ri8(Inst, X86::XOR32ri8);
2176 case X86::XOR64i32: return convert64i32to64ri8(Inst, X86::XOR64ri8);
2177 case X86::OR16i16: return convert16i16to16ri8(Inst, X86::OR16ri8);
2178 case X86::OR32i32: return convert32i32to32ri8(Inst, X86::OR32ri8);
2179 case X86::OR64i32: return convert64i32to64ri8(Inst, X86::OR64ri8);
2180 case X86::CMP16i16: return convert16i16to16ri8(Inst, X86::CMP16ri8, true);
2181 case X86::CMP32i32: return convert32i32to32ri8(Inst, X86::CMP32ri8, true);
2182 case X86::CMP64i32: return convert64i32to64ri8(Inst, X86::CMP64ri8, true);
2183 case X86::ADD16i16: return convert16i16to16ri8(Inst, X86::ADD16ri8);
2184 case X86::ADD32i32: return convert32i32to32ri8(Inst, X86::ADD32ri8);
2185 case X86::ADD64i32: return convert64i32to64ri8(Inst, X86::ADD64ri8);
2186 case X86::SUB16i16: return convert16i16to16ri8(Inst, X86::SUB16ri8);
2187 case X86::SUB32i32: return convert32i32to32ri8(Inst, X86::SUB32ri8);
2188 case X86::SUB64i32: return convert64i32to64ri8(Inst, X86::SUB64ri8);
2189 case X86::ADC16i16: return convert16i16to16ri8(Inst, X86::ADC16ri8);
2190 case X86::ADC32i32: return convert32i32to32ri8(Inst, X86::ADC32ri8);
2191 case X86::ADC64i32: return convert64i32to64ri8(Inst, X86::ADC64ri8);
2192 case X86::SBB16i16: return convert16i16to16ri8(Inst, X86::SBB16ri8);
2193 case X86::SBB32i32: return convert32i32to32ri8(Inst, X86::SBB32ri8);
2194 case X86::SBB64i32: return convert64i32to64ri8(Inst, X86::SBB64ri8);
2217 MCInst Inst;
2218 Inst.setOpcode(X86::WAIT);
2219 Inst.setLoc(IDLoc);
2221 Out.EmitInstruction(Inst);
2240 MCInst Inst;
2243 switch (MatchInstructionImpl(Operands, Inst,
2252 while (processInstruction(Inst, Operands))
2255 Inst.setLoc(IDLoc);
2257 Out.EmitInstruction(Inst);
2258 Opcode = Inst.getOpcode();
2308 Match1 = MatchInstructionImpl(Operands, Inst, ErrorInfoIgnore,
2314 Match2 = MatchInstructionImpl(Operands, Inst, ErrorInfoIgnore,
2320 Match3 = MatchInstructionImpl(Operands, Inst, ErrorInfoIgnore,
2326 Match4 = MatchInstructionImpl(Operands, Inst, ErrorInfoIgnore,
2342 Inst.setLoc(IDLoc);
2344 Out.EmitInstruction(Inst);
2345 Opcode = Inst.getOpcode();