summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarol Herbst <kherbst@redhat.com>2018-04-21 18:14:30 +0200
committerKarol Herbst <kherbst@redhat.com>2018-07-21 12:57:20 +0200
commit3de998e305252a96116dcd292e6f578f7ecc01a8 (patch)
tree9880d29e8bc04351c7fa4e0c1de9f1afed68d081
parent17a7f033dc7304ddb19763e524c7bde8b72b8cc9 (diff)
nvir/nir: add support for 8 and 16 bit conversion
-rw-r--r--src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
index d731c4141b..afab1b29af 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp
@@ -354,16 +354,24 @@ Converter::getOperation(nir_op op)
return OP_COS;
case nir_op_f2f32:
case nir_op_f2f64:
+ case nir_op_f2i8:
+ case nir_op_f2i16:
case nir_op_f2i32:
case nir_op_f2i64:
+ case nir_op_f2u8:
+ case nir_op_f2u16:
case nir_op_f2u32:
case nir_op_f2u64:
case nir_op_i2f32:
case nir_op_i2f64:
+ case nir_op_i2i8:
+ case nir_op_i2i16:
case nir_op_i2i32:
case nir_op_i2i64:
case nir_op_u2f32:
case nir_op_u2f64:
+ case nir_op_u2u8:
+ case nir_op_u2u16:
case nir_op_u2u32:
case nir_op_u2u64:
return OP_CVT;
@@ -2558,18 +2566,26 @@ Converter::visit(nir_alu_instr *insn)
/* convert instructions */
CASE_OPFIU(2f32):
CASE_OPFIU(2f64):
+ case nir_op_f2i8:
+ case nir_op_f2i16:
case nir_op_f2i32:
case nir_op_f2i64:
+ case nir_op_f2u8:
+ case nir_op_f2u16:
case nir_op_f2u32:
case nir_op_f2u64:
+ case nir_op_i2i8:
+ case nir_op_i2i16:
case nir_op_i2i32:
case nir_op_i2i64:
+ case nir_op_u2u8:
+ case nir_op_u2u16:
case nir_op_u2u32:
case nir_op_u2u64: {
DEFAULT_CHECKS;
LValues &newDefs = convert(&insn->dest);
Instruction *i = mkOp1(getOperation(op), dType, newDefs[0], getSrc(&insn->src[0]));
- if (op == nir_op_f2i32 || op == nir_op_f2i64 || op == nir_op_f2u32 || op == nir_op_f2u64)
+ if (::isFloatType(sTypes[0]) && !::isFloatType(dType))
i->rnd = ROUND_Z;
i->sType = sTypes[0];
break;