class R300VSInstruction opcode, dag ool, dag iol> : Instruction { let Namespace = "R300VS"; bits<6> Opcode = opcode; dag OutOperandList = ool; dag InOperandList = iol; } class VectInst opcode, dag ool, dag iol> : R300VSInstruction { } class MathInst opcode, dag ool, dag iol> : R300VSInstruction { } def VECTOR_NO_OP : VectInst<0x00, (outs), (ins)>; def VE_DOT_PRODUCT : VectInst<0x01, (outs v4f32), (ins v4f32, v4f32)>; def VE_MULTIPLY : VectInst<0x02, (outs v4f32), (ins v4f32, v4f32)>; def VE_ADD : VectInst<0x03, (outs v4f32), (ins v4f32, v4f32)>; def VE_MULTIPLY_ADD : VectInst<0x04, (outs v4f32), (ins v4f32, v4f32, v4f32)>; def VE_DISTANCE_VECTOR : VectInst<0x05, (outs v4f32), (ins v4f32, v4f32)>; def VE_FRACTION : VectInst<0x06, (outs v4f32), (ins v4f32)>; def VE_MAXIMUM : VectInst<0x07, (outs v4f32), (ins v4f32, v4f32)>; def VE_MINIMUM : VectInst<0x08, (outs v4f32), (ins v4f32, v4f32)>; def VE_SET_GREATER_THAN_EQUAL : VectInst<0x09, (outs v4f32), (ins v4f32, v4f32)>; def VE_SET_LESS_THAN : VectInst<0x0A, (outs v4f32), (ins v4f32, v4f32)>; def VE_MULTIPLYX2_ADD : VectInst<0x0B, (outs v4f32), (ins v4f32, v4f32)>; def VE_MULTIPLY_CLAMP : VectInst<0x0C, (outs v4f32), (ins v4f32, v4f32)>; def VE_FLT2FIX_DX : VectInst<0x0D, (outs v4f32), (ins v4f32)>; def VE_FLT2FIX_DX_RND : VectInst<0x0E>, (outs v4f32), (ins v4f32); /*def VE_PRED_SET_EQ_PUSH : VectInst<0x0F>; def VE_PRED_SET_GT_PUSH : VectInst<0x10>; def VE_PRED_SET_GTE_PUSH : VectInst<0x11>; def VE_PRED_SET_NEQ_PUSH : VectInst<0x12>; def VE_COND_WRITE_EQ4 : VectInst<0x13>; def VE_COND_WRITE_GT4 : VectInst<0x14>; def VE_COND_WRITE_GTE4 : VectInst<0x15>; def VE_COND_WRITE_NEQ4 : VectInst<0x16>; def VE_COND_MUX_EQ4 : VectInst<0x17>; def VE_COND_MUX_GT4 : VectInst<0x18>; def VE_COND_MUX_GTE4 : VectInst<0x19>; def VE_SET_GREATER_THAN : VectInst<0x1A>; def VE_SET_EQUAL : VectInst<0x1B>; def VE_SET_NOT_EQUAL : VectInst<0x1C>; def MATH_NO_OP : MathInst<0x00>; def ME_EXP_BASE2_DX : MathInst<0x00>; def ME_LOG_BASE2_DX : MathInst<0x01>; def ME_EXP_BASEE_FF : MathInst<0x02>; def ME_LIGHT_COEFF_DX : MathInst<0x03>; def ME_POWER_FUNC_FF : MathInst<0x04>; def ME_RECIP_DX : MathInst<0x05>; def ME_RECIP_FF : MathInst<0x06>; def ME_RECIP_SQRT_DX : MathInst<0x07>; def ME_RECIP_SQRT_FF : MathInst<0x08>; def ME_MULTIPLY : MathInst<0x0A>; def ME_EXP_BASE2 : MathInst<0x0B>; def ME_LOG_BASE2 : MathInst<0x0C>; def ME_POWER_FUNC_FF_CLAMP_B : MathInst<0x0D>; def ME_POWER_FUNC_FF_CLAMP_B1 : MathInst<0x0E>; def ME_POWER_FUNC_FF_CLAMP_01 : MathInst<0x0F>; def ME_SIN : MathInst<0x10>; def ME_COS : MathInst<0x11>; def ME_LOG_BASE2_IEEE : MathInst<0x12>; def ME_RECIP_IEEE : MathInst<0x13>; def ME_RECIP_SQRT_IEEE : MathInst<0x14>; def ME_PRED_SET_EQ : MathInst<0x15>; def ME_PRED_SET_GT : MathInst<0x16>; def ME_PRED_SET_GTE : MathInst<0x17>; def ME_PRED_SET_NEQ : MathInst<0x18>; def ME_PRED_SET_CLR : MathInst<0x19>; def ME_PRED_SET_INV : MathInst<0x1A>; def ME_PRED_SET_POP : MathInst<0x1B>; def ME_PRED_SET_RESTORE : MathInst<0x1C>;*/