Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Added DIV preshader opcode.
After poking around with a hex editor and fxc.exe /dumpbin, I _think_ this
is everything from the 0x1000, 0x2000, and 0xA000 blocks. There might be some
0x3000 or 0x5000 opcodes out there still.
  • Loading branch information
icculus committed May 31, 2011
1 parent b2fc751 commit fa99a49
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 2 deletions.
2 changes: 2 additions & 0 deletions mojoshader.c
Expand Up @@ -7279,6 +7279,7 @@ static void parse_preshader(Context *ctx, uint32 tokcount)
case 0x2040: opcode = MOJOSHADER_PRESHADEROP_ADD; break;
case 0x2050: opcode = MOJOSHADER_PRESHADEROP_MUL; break;
case 0x2060: opcode = MOJOSHADER_PRESHADEROP_ATAN2; break;
case 0x2080: opcode = MOJOSHADER_PRESHADEROP_DIV; break;
case 0x3000: opcode = MOJOSHADER_PRESHADEROP_CMP; break;
case 0x5000: opcode = MOJOSHADER_PRESHADEROP_DOT; break;
case 0xA000: opcode = MOJOSHADER_PRESHADEROP_MIN_SCALAR; break;
Expand All @@ -7288,6 +7289,7 @@ static void parse_preshader(Context *ctx, uint32 tokcount)
case 0xA040: opcode = MOJOSHADER_PRESHADEROP_ADD_SCALAR; break;
case 0xA050: opcode = MOJOSHADER_PRESHADEROP_MUL_SCALAR; break;
case 0xA060: opcode = MOJOSHADER_PRESHADEROP_ATAN2_SCALAR; break;
case 0xA080: opcode = MOJOSHADER_PRESHADEROP_DIV_SCALAR; break;
case 0xD000: opcode = MOJOSHADER_PRESHADEROP_DOT_SCALAR; break;
default: fail(ctx, "Unknown preshader opcode."); break;
} // switch
Expand Down
2 changes: 2 additions & 0 deletions mojoshader.h
Expand Up @@ -377,6 +377,7 @@ typedef enum MOJOSHADER_preshaderOpcode
MOJOSHADER_PRESHADEROP_ADD,
MOJOSHADER_PRESHADEROP_MUL,
MOJOSHADER_PRESHADEROP_ATAN2,
MOJOSHADER_PRESHADEROP_DIV,
MOJOSHADER_PRESHADEROP_CMP,
MOJOSHADER_PRESHADEROP_DOT,
MOJOSHADER_PRESHADEROP_SCALAR_OPS,
Expand All @@ -387,6 +388,7 @@ typedef enum MOJOSHADER_preshaderOpcode
MOJOSHADER_PRESHADEROP_ADD_SCALAR,
MOJOSHADER_PRESHADEROP_MUL_SCALAR,
MOJOSHADER_PRESHADEROP_ATAN2_SCALAR,
MOJOSHADER_PRESHADEROP_DIV_SCALAR,
MOJOSHADER_PRESHADEROP_DOT_SCALAR,
} MOJOSHADER_preshaderOpcode;

Expand Down
4 changes: 2 additions & 2 deletions utils/testparse.c
Expand Up @@ -116,8 +116,8 @@ static void print_preshader(const MOJOSHADER_preshader *preshader,
static const char *opcodestr[] = {
"nop", "mov", "neg", "rcp", "frc", "exp", "log", "rsq", "sin", "cos",
"asin", "acos", "atan", "min", "max", "cmplt", "cmpge", "add", "mul",
"atan2", "cmp", "dot", "min", "max", "cmplt", "cmpge", "add", "mul",
"atan2", "dot"
"atan2", "div", "cmp", "dot", "min", "max", "cmplt", "cmpge", "add",
"mul", "atan2", "div", "dot"
};

static char mask[] = { 'x', 'y', 'z', 'w' };
Expand Down

0 comments on commit fa99a49

Please sign in to comment.