intel/fs: Allow UB, B, and HF types in brw_nir_reduction_op_identity
authorJason Ekstrand <jason@jlekstrand.net>
Sat, 27 Apr 2019 09:31:31 +0000 (04:31 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Fri, 20 Sep 2019 18:02:15 +0000 (18:02 +0000)
Because byte immediates aren't a thing on GEN hardware, we return a
signed or unsigned word immediate in the byte case.

Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
src/intel/compiler/brw_fs_nir.cpp

index b6bdd7a5f291bbefb0688210a037b636f5f6e224..abce29c92f5a54b4ae6aa6abd0cf2574624e8fab 100644 (file)
@@ -3870,8 +3870,14 @@ brw_nir_reduction_op_identity(const fs_builder &bld,
 {
    nir_const_value value = nir_alu_binop_identity(op, type_sz(type) * 8);
    switch (type_sz(type)) {
+   case 1:
+      if (type == BRW_REGISTER_TYPE_UB) {
+         return brw_imm_uw(value.u8);
+      } else {
+         assert(type == BRW_REGISTER_TYPE_B);
+         return brw_imm_w(value.i8);
+      }
    case 2:
-      assert(type != BRW_REGISTER_TYPE_HF);
       return retype(brw_imm_uw(value.u16), type);
    case 4:
       return retype(brw_imm_ud(value.u32), type);