i965: implement OPCODE_TRUNC (round toward zero) on vertex path.
authorBrian Paul <brianp@vmware.com>
Mon, 5 Jan 2009 17:09:28 +0000 (10:09 -0700)
committerBrian Paul <brianp@vmware.com>
Mon, 5 Jan 2009 17:09:28 +0000 (10:09 -0700)
Also, fix some RNDD vs. RNDZ confusion elsewhere.

src/mesa/drivers/dri/i965/brw_eu.h
src/mesa/drivers/dri/i965/brw_eu_emit.c
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/brw_wm_glsl.c

index 31e9ceb42ed180d52a2a8ea75e3ba12818b1e1ff..9e2b39af9bba7dd9e71dca08cbb91c6ee0e1cb9e 100644 (file)
@@ -753,6 +753,7 @@ ALU2(ADD)
 ALU2(MUL)
 ALU1(FRC)
 ALU1(RNDD)
+ALU1(RNDZ)
 ALU2(MAC)
 ALU2(MACH)
 ALU1(LZD)
index ce4cf46cfa6fe8d4b64c0c126a96ed20ac99a907..4e099b5945cc82b33d7394b3dcdd16e48e778b0d 100644 (file)
@@ -439,6 +439,7 @@ ALU2(ADD)
 ALU2(MUL)
 ALU1(FRC)
 ALU1(RNDD)
+ALU1(RNDZ)
 ALU2(MAC)
 ALU2(MACH)
 ALU1(LZD)
index 80ff7437ba2d99d04e751c5da5325430a3e9fdec..71e2a95bfd91b1985856c6895e99e3f1f15c044c 100644 (file)
@@ -1133,6 +1133,10 @@ void brw_vs_emit(struct brw_vs_compile *c )
          */
         emit_swz(c, dst, inst->SrcReg[0] );
         break;
+      case OPCODE_TRUNC:
+         /* round toward zero */
+        brw_RNDZ(p, dst, args[0]);
+        break;
       case OPCODE_XPD:
         emit_xpd(p, dst, args[0], args[1]);
         break;
index baecfdcb7997e0c4c08541ee89ed496c911dbfb3..d43e326f7d198352b9cf73deb3fbbf815cec74be 100644 (file)
@@ -267,7 +267,7 @@ static void emit_trunc( struct brw_wm_compile *c,
            struct brw_reg src, dst;
            dst = get_dst_reg(c, inst, i, 1) ;
            src = get_src_reg(c, &inst->SrcReg[0], i, 1);
-           brw_RNDD(p, dst, src);
+           brw_RNDZ(p, dst, src);
        }
     }
     brw_set_saturate(p, 0);