diff options
author | Karol Herbst <kherbst@redhat.com> | 2018-04-21 18:14:30 +0200 |
---|---|---|
committer | Karol Herbst <kherbst@redhat.com> | 2018-07-21 12:57:20 +0200 |
commit | 3de998e305252a96116dcd292e6f578f7ecc01a8 (patch) | |
tree | 9880d29e8bc04351c7fa4e0c1de9f1afed68d081 | |
parent | 17a7f033dc7304ddb19763e524c7bde8b72b8cc9 (diff) |
nvir/nir: add support for 8 and 16 bit conversion
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 18 |
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; |