📄 ps_1_4.cpp
字号:
_rule_ sid_TEXSWIZZLE, "<TexSwizzle>"
_is_ sid_STQDQ, "_dw.xyw"
_or_ sid_STQDQ, "_dw"
_or_ sid_STQDQ, "_da.rga"
_or_ sid_STQDQ, "_da"
_or_ sid_STRDR, "_dz.xyz"
_or_ sid_STRDR, "_dz"
_or_ sid_STRDR, "_db.rgb"
_or_ sid_STRDR, "_db"
_or_ sid_STR, ".xyz"
_or_ sid_STR, ".rgb"
_or_ sid_STQ, ".xyw"
_or_ sid_STQ, ".rga"
_end_
_rule_ sid_TEXMASK, "<TexMask>"
_is_ sid_RGB, ".rgb"
_or_ sid_RGB, ".xyz"
_or_ sid_RG, ".rg"
_or_ sid_RG, ".xy"
_end_
_rule_ sid_SEPERATOR, "<Seperator>"
_is_ sid_COMMA, ","
_end_
_rule_ sid_REG_PS1_4, "<Reg_PS1_4>"
_is_ sid_R0, "r0"
_or_ sid_R1, "r1"
_or_ sid_R2, "r2"
_or_ sid_R3, "r3"
_or_ sid_R4, "r4"
_or_ sid_R5, "r5"
_end_
_rule_ sid_TEX_PS1_4, "<Tex_PS1_4>"
_is_ sid_T0, "t0"
_or_ sid_T1, "t1"
_or_ sid_T2, "t2"
_or_ sid_T3, "t3"
_or_ sid_T4, "t4"
_or_ sid_T5, "t5"
_end_
_rule_ sid_REG_PS1_1_3, "<Reg_PS1_1_3>"
_is_ sid_1R0, "r0"
_or_ sid_1R1, "r1"
_end_
_rule_ sid_TEX_PS1_1_3, "<Tex_PS1_1_3>"
_is_ sid_1T0, "t0"
_or_ sid_1T1, "t1"
_or_ sid_1T2, "t2"
_or_ sid_1T3, "t3"
_end_
_rule_ sid_COLOR, "<Color>"
_is_ sid_V0, "v0"
_or_ sid_V1, "v1"
_end_
_rule_ sid_TEMPREG, "<TempReg>"
_is_ sid_REG_PS1_4
_or_ sid_REG_PS1_1_3
_or_ sid_TEX_PS1_1_3
_end_
_rule_ sid_DSTMODSAT, "<DstModSat>"
_optional_ sid_DSTMOD
_optional_ sid_DSTSAT
_end_
_rule_ sid_UNARYOP, "<UnaryOp>"
_is_ sid_MOV, "mov"
_end_
_rule_ sid_BINARYOP, "<BinaryOP>"
_is_ sid_ADD, "add"
_or_ sid_MUL, "mul"
_or_ sid_SUB, "sub"
_or_ sid_DP3, "dp3"
_or_ sid_DP4, "dp4"
_or_ sid_BEM, "bem"
_end_
_rule_ sid_TERNARYOP, "<TernaryOp>"
_is_ sid_MAD, "mad"
_or_ sid_LRP, "lrp"
_or_ sid_CND, "cnd"
_or_ sid_CMP, "cmp"
_end_
_rule_ sid_DSTMASK, "<DstMask>"
_is_ sid_RGBA, ".rgba"
_or_ sid_RGBA, ".xyzw"
_or_ sid_RGB, ".rgb"
_or_ sid_RGB, ".xyz"
_or_ sid_RGA, ".xyw"
_or_ sid_RGA, ".rga"
_or_ sid_RBA, ".rba"
_or_ sid_RBA, ".xzw"
_or_ sid_GBA, ".gba"
_or_ sid_GBA, ".yzw"
_or_ sid_RG, ".rg"
_or_ sid_RG, ".xy"
_or_ sid_RB, ".xz"
_or_ sid_RB, ".rb"
_or_ sid_RA, ".xw"
_or_ sid_RA, ".ra"
_or_ sid_GB, ".gb"
_or_ sid_GB, ".yz"
_or_ sid_GA, ".yw"
_or_ sid_GA, ".ga"
_or_ sid_BA, ".zw"
_or_ sid_BA, ".ba"
_or_ sid_R, ".r"
_or_ sid_R, ".x"
_or_ sid_G, ".g"
_or_ sid_G, ".y"
_or_ sid_B, ".b"
_or_ sid_B, ".z"
_or_ sid_A, ".a"
_or_ sid_A, ".w"
_end_
_rule_ sid_SRCREP, "<SrcRep>"
_is_ sid_RRRR, ".r"
_or_ sid_RRRR, ".x"
_or_ sid_GGGG, ".g"
_or_ sid_GGGG, ".y"
_or_ sid_BBBB, ".b"
_or_ sid_BBBB, ".z"
_or_ sid_AAAA, ".a"
_or_ sid_AAAA, ".w"
_end_
_rule_ sid_PRESRCMOD, "<PreSrcMod>"
_is_ sid_INVERT, "1-"
_or_ sid_INVERT, "1 -"
_or_ sid_NEGATE, "-"
_end_
_rule_ sid_POSTSRCMOD, "<PostSrcMod>"
_is_ sid_BX2, "_bx2"
_or_ sid_X2, "_x2"
_or_ sid_BIAS, "_bias"
_end_
_rule_ sid_DSTMOD, "<DstMod>"
_is_ sid_X2, "_x2"
_or_ sid_X4, "_x4"
_or_ sid_D2, "_d2"
_or_ sid_X8, "_x8"
_or_ sid_D4, "_d4"
_or_ sid_D8, "_d8"
_end_
_rule_ sid_DSTSAT, "<DstSat>"
_is_ sid_SAT, "_sat"
_end_
_rule_ sid_COISSUE, "<CoIssue>"
_optional_ sid_PLUS, "+"
_end_
};
//***************************** MACROs for PS1_1 , PS1_2, PS1_3 CISC instructions **************************************
// macro to make the macro text data easier to read
#define _token_ },{
// macro token expansion for ps_1_2 instruction: texreg2ar
PS_1_4::TokenInst PS_1_4::texreg2ar[] = {
// mov r(x).r, r(y).a
{ sid_UNARYOP, sid_MOV
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_DSTMASK, sid_R
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
_token_ sid_SRCREP, sid_AAAA
// mov r(x).g, r(y).r
_token_ sid_UNARYOP, sid_MOV
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_DSTMASK, sid_G
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
_token_ sid_SRCREP, sid_RRRR
// texld r(x), r(x)
_token_ sid_TEXOP_PS1_4, sid_TEXLD
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
}
};
PS_1_4::RegModOffset PS_1_4::texreg2xx_RegMods[] = {
{1, R_BASE, 0},
{7, R_BASE, 0},
{13, R_BASE, 0},
{15, R_BASE, 0},
{4, R_BASE, 1},
{10, R_BASE, 1},
};
PS_1_4::MacroRegModify PS_1_4::texreg2ar_MacroMods = {
texreg2ar, ARRAYSIZE(texreg2ar),
texreg2xx_RegMods, ARRAYSIZE(texreg2xx_RegMods)
};
// macro token expansion for ps_1_2 instruction: texreg2gb
PS_1_4::TokenInst PS_1_4::texreg2gb[] = {
// mov r(x).r, r(y).g
{ sid_UNARYOP, sid_MOV
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_DSTMASK, sid_R
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
_token_ sid_SRCREP, sid_GGGG
// mov r(x).g, r(y).b
_token_ sid_UNARYOP, sid_MOV
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_DSTMASK, sid_G
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
_token_ sid_SRCREP, sid_BBBB
// texld r(x), r(x)
_token_ sid_TEXOP_PS1_4, sid_TEXLD
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
}
};
PS_1_4::MacroRegModify PS_1_4::texreg2gb_MacroMods = {
texreg2gb, ARRAYSIZE(texreg2gb),
texreg2xx_RegMods, ARRAYSIZE(texreg2xx_RegMods)
};
// macro token expansion for ps_1_1 instruction: texdp3
PS_1_4::TokenInst PS_1_4::texdp3[] = {
// texcoord t(x)
{ sid_TEXOP_PS1_1_3, sid_TEXCOORD
_token_ sid_TEX_PS1_1_3, sid_1T1
// dp3 r(x), r(x), r(y)
_token_ sid_BINARYOP, sid_DP3
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
}
};
PS_1_4::RegModOffset PS_1_4::texdp3_RegMods[] = {
{1, T_BASE, 0},
{3, R_BASE, 0},
{5, R_BASE, 0},
{7, R_BASE, 1},
};
PS_1_4::MacroRegModify PS_1_4::texdp3_MacroMods = {
texdp3, ARRAYSIZE(texdp3),
texdp3_RegMods, ARRAYSIZE(texdp3_RegMods)
};
// macro token expansion for ps_1_1 instruction: texdp3tex
PS_1_4::TokenInst PS_1_4::texdp3tex[] = {
// texcoord t(x)
{ sid_TEXOP_PS1_1_3, sid_TEXCOORD
_token_ sid_TEX_PS1_1_3, sid_1T1
// dp3 r1, r(x), r(y)
_token_ sid_BINARYOP, sid_DP3
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
// texld r(x), r(x)
_token_ sid_TEXOP_PS1_4, sid_TEXLD
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
}
};
PS_1_4::RegModOffset PS_1_4::texdp3tex_RegMods[] = {
{1, T_BASE, 0},
{3, R_BASE, 0},
{5, R_BASE, 0},
{7, R_BASE, 1},
{9, R_BASE, 1},
{11, R_BASE, 1},
};
PS_1_4::MacroRegModify PS_1_4::texdp3tex_MacroMods = {
texdp3tex, ARRAYSIZE(texdp3tex),
texdp3tex_RegMods, ARRAYSIZE(texdp3tex_RegMods)
};
// macro token expansion for ps_1_1 instruction: texm3x2pad
PS_1_4::TokenInst PS_1_4::texm3x2pad[] = {
// texcoord t(x)
{ sid_TEXOP_PS1_1_3, sid_TEXCOORD
_token_ sid_TEX_PS1_1_3, sid_1T0
// dp3 r4.r, r(x), r(y)
_token_ sid_BINARYOP, sid_DP3
_token_ sid_REG_PS1_4, sid_R4
_token_ sid_DSTMASK, sid_R
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
}
};
PS_1_4::RegModOffset PS_1_4::texm3xxpad_RegMods[] = {
{1, T_BASE, 0},
{6, R_BASE, 0},
{8, R_BASE, 1},
};
PS_1_4::MacroRegModify PS_1_4::texm3x2pad_MacroMods = {
texm3x2pad, ARRAYSIZE(texm3x2pad),
texm3xxpad_RegMods, ARRAYSIZE(texm3xxpad_RegMods)
};
// macro token expansion for ps_1_1 instruction: texm3x2tex
PS_1_4::TokenInst PS_1_4::texm3x2tex[] = {
// texcoord t(x)
{ sid_TEXOP_PS1_1_3, sid_TEXCOORD
_token_ sid_TEX_PS1_1_3, sid_1T1
// dp3 r4.g, r(x), r(y)
_token_ sid_BINARYOP, sid_DP3
_token_ sid_REG_PS1_4, sid_R4
_token_ sid_DSTMASK, sid_G
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
// texld r(x), r4
_token_ sid_TEXOP_PS1_4, sid_TEXLD
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R4
}
};
PS_1_4::RegModOffset PS_1_4::texm3xxtex_RegMods[] = {
{1, T_BASE, 0},
{6, R_BASE, 0},
{8, R_BASE, 1},
{10, R_BASE, 0}
};
PS_1_4::MacroRegModify PS_1_4::texm3x2tex_MacroMods = {
texm3x2tex, ARRAYSIZE(texm3x2tex),
texm3xxtex_RegMods, ARRAYSIZE(texm3xxtex_RegMods)
};
// macro token expansion for ps_1_1 instruction: texm3x3tex
PS_1_4::TokenInst PS_1_4::texm3x3pad[] = {
// texcoord t(x)
{ sid_TEXOP_PS1_1_3, sid_TEXCOORD
_token_ sid_TEX_PS1_1_3, sid_1T0
// dp3 r4.b, r(x), r(y)
_token_ sid_BINARYOP, sid_DP3
_token_ sid_REG_PS1_4, sid_R4
_token_ sid_DSTMASK, sid_B
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R1
_token_ sid_SEPERATOR, sid_COMMA
_token_ sid_REG_PS1_4, sid_R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -