void CVPParser::ParseInstruction(struct nvfx_insn *insn,opcode *opc,const char *param_str) { u32 i; char *token = SkipSpaces(strtok((char*)param_str,",")); if(opc->is_imm) ParseMaskedDstAddr(token,insn); else ParseMaskedDstReg(token,insn); for(i=0;i<opc->nr_src;i++) { token = SkipSpaces(strtok(NULL,",")); ParseSwizzledSrcReg(token,&insn->src[opc->src_slots[i]]); } if(opc->opcode == OPCODE_TEX) { uint8_t unit = ~0, target = ~0; token = SkipSpaces(strtok(NULL,",")); ParseTextureUnit(token,&unit); token = SkipSpaces(strtok(NULL,",")); ParseTextureTarget(token,&target); insn->src[1] = nvfx_src(nvfx_reg(NVFXSR_VPTEXINPUT,unit)); } }
void CVPParser::ParseInstruction(struct nvfx_insn *insn,opcode *opc,const char *param_str) { u32 i; char *token = SkipSpaces(strtok((char*)param_str,",")); if(opc->is_imm) ParseMaskedDstAddr(token,insn); else ParseMaskedDstReg(token,insn); for(i=0; i<opc->nr_src; i++) { token = SkipSpaces(strtok(NULL,",")); ParseSwizzledSrcReg(token,&insn->src[opc->src_slots[i]]); } }