Commit Graph

713 Commits

Author SHA1 Message Date
Henri Verbeet
89641d3d42 vkd3d-shader/ir: Require signed source operands for ITOF instructions. 2025-09-16 15:46:23 +02:00
Henri Verbeet
8700e3a5bd vkd3d-shader/dxil: Allow returning signed types from vsir_data_type_from_dxil().
We have a number of vsir operations which should take a signed type, but
which the DXIL parser currently emits unsigned types for. For example,
ISHR.

In the SPIR-V backend, we translate ISHR to OpShiftRightArithmetic,
which is specified as filling the most-significant bits of the result
with the sign bit of the "Base" operand. For an unsigned type, that
would technically be 0. In practice, implementations like radv/Mesa seem
to fill with the most-significant bit of the "Base" operand for unsigned
types, but arguably that could be considered a bug. Alternatively, the
wording in the specification is just unfortunate; SPIR-V does generally
take the position that signedness of operands should be irrelevant for
almost all operations. Either way, it seems best to avoid using
OpShiftRightArithmetic with unsigned types.

For a target like MSL, allowing ISHR to take an unsigned source operand
is just inconvenient; we'd have to introduce bitcasts to achieve the
desired behaviour, instead of simply using msl_binop().
2025-09-16 15:46:23 +02:00
Henri Verbeet
db3aaeca17 vkd3d-shader/ir: Make the vsir assembly data type names consistent with the corresponding enum elements. 2025-09-16 15:44:48 +02:00
Henri Verbeet
de2095fda4 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_throw_invalid_dst_type_error_with_flags(). 2025-09-10 11:59:04 +02:00
Henri Verbeet
b326097473 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_shift_operation(). 2025-09-10 11:59:04 +02:00
Henri Verbeet
e7f3547c24 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_cast_operation(). 2025-09-10 11:59:04 +02:00
Henri Verbeet
81f229146c vkd3d-shader/ir: Handle all component types in vsir_data_type_from_component_type(). 2025-09-10 11:42:21 +02:00
Francisco Casas
7f4a186e6a vkd3d-shader/ir: Use iterators in struct vsir_cfg.
And therefore on the functions that use it, namely
vsir_program_structurize() and
vsir_program_materialize_undominated_ssas_to_temps() and their callees.
2025-09-09 14:51:15 +02:00
Francisco Casas
1aa6c767ea vkd3d-shader/ir: Merge the hull shader phase flattener into a single pass. 2025-09-09 14:50:34 +02:00
Francisco Casas
434d9dd117 vkd3d-shader/ir: Use iterators in flattener_flatten_phases(). 2025-09-09 14:24:06 +02:00
Henri Verbeet
bceb4d17ed vkd3d-shader/ir: Move the instruction array helpers to ir.c. 2025-09-09 14:17:51 +02:00
Francisco Casas
952e706883 vkd3d-shader/ir: Use iterators in control_point_normaliser_emit_hs_input(). 2025-09-09 12:40:06 +02:00
Francisco Casas
500d54d588 vkd3d-shader/ir: Avoid direct instruction array access in validation_error(). 2025-09-09 12:31:12 +02:00
Henri Verbeet
cba58fdb59 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_comparison_operation(). 2025-09-04 14:02:51 +02:00
Henri Verbeet
535837ebfe vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_elementwise_operation(). 2025-09-04 14:02:51 +02:00
Henri Verbeet
6e68f29fa7 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_src_param(). 2025-09-04 14:02:51 +02:00
Henri Verbeet
8c94dc871d vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_dst_param(). 2025-09-04 14:02:51 +02:00
Henri Verbeet
eb5347278e vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_ssa_register(). 2025-09-04 14:02:51 +02:00
Henri Verbeet
744a49ea4d vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_uav_register(). 2025-09-02 11:35:34 +02:00
Henri Verbeet
3443206235 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_resource_register(). 2025-09-02 11:35:33 +02:00
Henri Verbeet
2be5348383 vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_sampler_register(). 2025-09-02 11:35:33 +02:00
Henri Verbeet
3063bbe3de vkd3d-shader/ir: Use vsir_data_type_get_name() in vsir_validate_label_register(). 2025-09-02 11:35:33 +02:00
Henri Verbeet
9f2e122239 vkd3d-shader/ir: Introduce vsir_data_type_get_name(). 2025-09-02 11:35:33 +02:00
Elizabeth Figura
933907d3b7 vkd3d-shader/ir: Reallocate temps. 2025-09-02 11:32:35 +02:00
Henri Verbeet
979d7e4b85 vkd3d-shader/ir: Remove VSIR_OP_DCL_OUTPUT_TOPOLOGY instructions. 2025-09-01 15:15:32 +02:00