summaryrefslogtreecommitdiff
path: root/src/intel
diff options
context:
space:
mode:
authorIago Toral Quiroga <itoral@igalia.com>2018-07-27 13:38:38 +0200
committerIago Toral Quiroga <itoral@igalia.com>2018-08-01 08:08:15 +0200
commit7e6c8b0cb75f41de18d3f2e7f91d6eb2522e939f (patch)
tree3228171927300c196938fd982fbf499033fcfe1d /src/intel
parentbd56e117ff8c4565388717cdfd30cf256c71c6cf (diff)
intel/compiler: add setup_imm_(u)b helpers
The hardware doesn't support byte immediates, so similar to setup_imm_df() for doubles, these helpers work by loading the constant value into a VGRF. Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/compiler/brw_fs.h6
-rw-r--r--src/intel/compiler/brw_fs_nir.cpp16
2 files changed, 22 insertions, 0 deletions
diff --git a/src/intel/compiler/brw_fs.h b/src/intel/compiler/brw_fs.h
index 8ccd1659075..d56e33715ee 100644
--- a/src/intel/compiler/brw_fs.h
+++ b/src/intel/compiler/brw_fs.h
@@ -540,6 +540,12 @@ fs_reg shuffle_for_32bit_write(const brw::fs_builder &bld,
fs_reg setup_imm_df(const brw::fs_builder &bld,
double v);
+fs_reg setup_imm_b(const brw::fs_builder &bld,
+ int8_t v);
+
+fs_reg setup_imm_ub(const brw::fs_builder &bld,
+ uint8_t v);
+
enum brw_barycentric_mode brw_barycentric_mode(enum glsl_interp_mode mode,
nir_intrinsic_op op);
diff --git a/src/intel/compiler/brw_fs_nir.cpp b/src/intel/compiler/brw_fs_nir.cpp
index a41dc2a47b8..2c8595b9730 100644
--- a/src/intel/compiler/brw_fs_nir.cpp
+++ b/src/intel/compiler/brw_fs_nir.cpp
@@ -5396,3 +5396,19 @@ setup_imm_df(const fs_builder &bld, double v)
return component(retype(tmp, BRW_REGISTER_TYPE_DF), 0);
}
+
+fs_reg
+setup_imm_b(const fs_builder &bld, int8_t v)
+{
+ const fs_reg tmp = bld.vgrf(BRW_REGISTER_TYPE_B);
+ bld.MOV(tmp, brw_imm_w(v));
+ return tmp;
+}
+
+fs_reg
+setup_imm_ub(const fs_builder &bld, uint8_t v)
+{
+ const fs_reg tmp = bld.vgrf(BRW_REGISTER_TYPE_UB);
+ bld.MOV(tmp, brw_imm_uw(v));
+ return tmp;
+}