nv50: fix CEIL and TRUNC
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Fri, 25 Sep 2009 08:33:02 +0000 (10:33 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Fri, 25 Sep 2009 09:01:45 +0000 (11:01 +0200)
Separated the integer rounding mode flag for cvt.

src/gallium/drivers/nv50/nv50_program.c

index 8e66fdca49b909b79f2ba994c35fd4162e5663cc..2ad8cdf65c39e4fcd4043b000b93c298895e7250 100644 (file)
@@ -825,7 +825,8 @@ emit_precossin(struct nv50_pc *pc, struct nv50_reg *dst, struct nv50_reg *src)
 #define CVT_F32_U32 0x64
 #define CVT_S32_F32 0x8c
 #define CVT_S32_S32 0x0c
-#define CVT_F32_F32_ROP 0xcc
+#define CVT_NEG     0x20
+#define CVT_RI      0x08
 
 static void
 emit_cvt(struct nv50_pc *pc, struct nv50_reg *dst, struct nv50_reg *src,
@@ -933,7 +934,7 @@ map_tgsi_setop_cc(unsigned op)
 static INLINE void
 emit_flr(struct nv50_pc *pc, struct nv50_reg *dst, struct nv50_reg *src)
 {
-       emit_cvt(pc, dst, src, -1, CVTOP_FLOOR, CVT_F32_F32_ROP);
+       emit_cvt(pc, dst, src, -1, CVTOP_FLOOR, CVT_F32_F32 | CVT_RI);
 }
 
 static void
@@ -1623,7 +1624,7 @@ nv50_program_tx_insn(struct nv50_pc *pc,
                        if (!(mask & (1 << c)))
                                continue;
                        emit_cvt(pc, dst[c], src[0][c], -1,
-                                CVTOP_CEIL, CVT_F32_F32);
+                                CVTOP_CEIL, CVT_F32_F32 | CVT_RI);
                }
                break;
        case TGSI_OPCODE_COS:
@@ -1843,7 +1844,7 @@ nv50_program_tx_insn(struct nv50_pc *pc,
                        if (!(mask & (1 << c)))
                                continue;
                        emit_cvt(pc, dst[c], src[0][c], -1,
-                                CVTOP_TRUNC, CVT_F32_F32);
+                                CVTOP_TRUNC, CVT_F32_F32 | CVT_RI);
                }
                break;
        case TGSI_OPCODE_XPD: