Commit ec47f985 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

d3d10/effect: Add support for 'iadd' instruction.

parent a8c78c0e
...@@ -388,6 +388,20 @@ static void pres_div(float **args, unsigned int n, const struct preshader_instr ...@@ -388,6 +388,20 @@ static void pres_div(float **args, unsigned int n, const struct preshader_instr
retval[i] = args[0][instr->scalar ? 0 : i] / args[1][i]; retval[i] = args[0][instr->scalar ? 0 : i] / args[1][i];
} }
static void pres_iadd(float **args, unsigned int n, const struct preshader_instr *instr)
{
int *arg1 = (int *)args[0];
int *arg2 = (int *)args[1];
float *retval = args[2];
unsigned int i;
for (i = 0; i < instr->comp_count; ++i)
{
int v = arg1[instr->scalar ? 0 : i] + arg2[i];
retval[i] = *(float *)&v;
}
}
static void pres_udiv(float **args, unsigned int n, const struct preshader_instr *instr) static void pres_udiv(float **args, unsigned int n, const struct preshader_instr *instr)
{ {
unsigned int *arg1 = (unsigned int *)args[0]; unsigned int *arg1 = (unsigned int *)args[0];
...@@ -492,6 +506,7 @@ static const struct preshader_op_info preshader_ops[] = ...@@ -492,6 +506,7 @@ static const struct preshader_op_info preshader_ops[] =
{ 0x205, "mul", pres_mul }, { 0x205, "mul", pres_mul },
{ 0x206, "atan2",pres_atan2}, { 0x206, "atan2",pres_atan2},
{ 0x208, "div", pres_div }, { 0x208, "div", pres_div },
{ 0x216, "iadd", pres_iadd },
{ 0x21a, "udiv", pres_udiv }, { 0x21a, "udiv", pres_udiv },
{ 0x21d, "imin", pres_imin }, { 0x21d, "imin", pres_imin },
{ 0x21e, "imax", pres_imax }, { 0x21e, "imax", pres_imax },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment