nir/lower_int64: Lower 8 and 16-bit downcasts with nir_lower_mov64
[mesa.git] / src / compiler / nir / nir_lower_int64.c
index 6e3f8526f7be52899f11befa62ae9dc8dedf26c1..e18a54812259f8d3ee4f5fdc6d1b382e8e18c1a9 100644 (file)
@@ -692,8 +692,12 @@ nir_lower_int64_op_to_options_mask(nir_op opcode)
       return nir_lower_divmod64;
    case nir_op_b2i64:
    case nir_op_i2b1:
+   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:
    case nir_op_bcsel:
@@ -855,7 +859,11 @@ should_lower_int64_alu_instr(const nir_instr *instr, const void *_options)
 
    switch (alu->op) {
    case nir_op_i2b1:
+   case nir_op_i2i8:
+   case nir_op_i2i16:
    case nir_op_i2i32:
+   case nir_op_u2u8:
+   case nir_op_u2u16:
    case nir_op_u2u32:
       assert(alu->src[0].src.is_ssa);
       if (alu->src[0].src.ssa->bit_size != 64)