}
static inline nir_ssa_def *
+nir_f2b(nir_builder *b, nir_ssa_def *src)
+{
+ return nir_type_convert(b, src, nir_type_float, nir_type_bool1);
+}
+
+static inline nir_ssa_def *
+nir_i2b(nir_builder *b, nir_ssa_def *src)
+{
+ return nir_type_convert(b, src, nir_type_int, nir_type_bool1);
+}
+
+static inline nir_ssa_def *
+nir_b2iN(nir_builder *b, nir_ssa_def *src, uint32_t bit_size)
+{
+ return nir_type_convert(b, src, nir_type_bool,
+ (nir_alu_type) (nir_type_int | bit_size));
+}
+
+static inline nir_ssa_def *
+nir_b2fN(nir_builder *b, nir_ssa_def *src, uint32_t bit_size)
+{
+ return nir_type_convert(b, src, nir_type_bool,
+ (nir_alu_type) (nir_type_float | bit_size));
+}
+
+static inline nir_ssa_def *
nir_i2fN(nir_builder *b, nir_ssa_def *src, unsigned bit_size)
{
return nir_type_convert(b, src, nir_type_int,
}
static inline nir_ssa_def *
-nir_f2b(nir_builder *build, nir_ssa_def *f)
-{
- return nir_f2b1(build, f);
-}
-
-static inline nir_ssa_def *
-nir_i2b(nir_builder *build, nir_ssa_def *i)
-{
- return nir_i2b1(build, i);
-}
-
-static inline nir_ssa_def *
-nir_b2f(nir_builder *build, nir_ssa_def *b, uint32_t bit_size)
-{
- switch (bit_size) {
- case 64: return nir_b2f64(build, b);
- case 32: return nir_b2f32(build, b);
- case 16: return nir_b2f16(build, b);
- default:
- unreachable("Invalid bit-size");
- };
-}
-
-static inline nir_ssa_def *
-nir_b2i(nir_builder *build, nir_ssa_def *b, uint32_t bit_size)
-{
- switch (bit_size) {
- case 64: return nir_b2i64(build, b);
- case 32: return nir_b2i32(build, b);
- case 16: return nir_b2i16(build, b);
- case 8: return nir_b2i8(build, b);
- default:
- unreachable("Invalid bit-size");
- };
-}
-static inline nir_ssa_def *
nir_load_barycentric(nir_builder *build, nir_intrinsic_op op,
unsigned interp_mode)
{
/* range-reduction fixup */
tmp = nir_ffma(b,
- nir_b2f(b, nir_flt(b, one, abs_y_over_x), bit_size),
+ nir_b2fN(b, nir_flt(b, one, abs_y_over_x), bit_size),
nir_ffma_imm12(b, tmp, -2.0f, M_PI_2),
tmp);
* coordinate system.
*/
nir_ssa_def *arc =
- nir_ffma_imm1(b, nir_b2f(b, flip, bit_size), M_PI_2, nir_atan(b, tan));
+ nir_ffma_imm1(b, nir_b2fN(b, flip, bit_size), M_PI_2, nir_atan(b, tan));
/* Rather convoluted calculation of the sign of the result. When x < 0 we
* cannot use fsign because we need to be able to distinguish between
/* convert booleans */
nir_ssa_def *low_val = low->intrin->src[low->info->value_src].ssa;
nir_ssa_def *high_val = high->intrin->src[high->info->value_src].ssa;
- low_val = low_val->bit_size == 1 ? nir_b2i(b, low_val, 32) : low_val;
- high_val = high_val->bit_size == 1 ? nir_b2i(b, high_val, 32) : high_val;
+ low_val = low_val->bit_size == 1 ? nir_b2iN(b, low_val, 32) : low_val;
+ high_val = high_val->bit_size == 1 ? nir_b2iN(b, high_val, 32) : high_val;
/* combine the data */
nir_ssa_def *data_channels[NIR_MAX_VEC_COMPONENTS];