Skip to content

Conversation

@tex3d
Copy link
Contributor

@tex3d tex3d commented Dec 6, 2025

This change will not have any impact on DXIL IR, but helps us follow consistent definition rules in the future.

This enables the check for consistency between DXIL ops that share OpCodeClass, with an exception for the long-known inconsistent op, which will not likely be fixed in the future, as the fix would have a visible impact on DXIL IR, and would require compatibility work-arounds and potential driver updates and testing.

Also improves the check for function attributes and overloaded vs. not overloaded ("v") ops.

This revealed violations in RayQuery and HitObject state query ops, which fortunately could be fixed without changing DXIL IR.

This also enables checks that operand overload type usage is consistent with the oload_types string.

This revealed violations of two general types:

  • oload_types usage when the DXIL op would really never be overloaded.
  • oload_types usage when the DXIL op could potentially be overloaded, but wasn't, and no overload type was used in the operands.

For the first case, I used the overload type in the corresponding operand and added "TODO: Overload Note:" comments, though it's unlikely any of these would be fixed, due to the change in DXIL IR it would produce.

For the sescond case, I used the overload type, but did not add the note, since the oload_types could reasonably be expanded in the future.

This also removes some unused overload types in hctdb_instrhelp.py and renamed "udt" and "obj" to "$udt" and "$obj" to follow the otherwise consistent rule that all overload types start with "$".

Generated changes in DxilOperations.cpp will have no impact on DXIL, as the overload type would always match the previously hard-coded type.

Fixes #7984

This change will not have any impact on DXIL IR, but helps us follow
consistent definition rules in the future.

This enables the check for consistency between DXIL ops that share
OpCodeClass, with an exception for the long-known inconsistent op, which
will not likely be fixed in the future, as the fix would have a visible
impact on DXIL IR, and would require compatibility work-arounds and
potential driver updates and testing.

Also improves the check for function attributes and overloaded vs. not
overloaded ("v") ops.

This revealed violations in RayQuery and HitObject state query ops,
which fortunately could be fixed without changing DXIL IR.

This also enables checks that operand overload type usage is consistent
with the oload_types string.

This revealed violations of two general types:
- oload_types usage when the DXIL op would really never be overloaded.
- oload_types usage when the DXIL op could potentially be overloaded,
  but wasn't, and no overload type was used in the operands.

For the first case, I used the overload type in the corresponding
operand and added "TODO: Overload Note:" comments, though it's unlikely
any of these would be fixed, due to the change in DXIL IR it would
produce.

For the sescond case, I used the overload type, but did not add the
note, since the oload_types could reasonably be expanded in the future.

Generated changes in DxilOperations.cpp will have no impact on DXIL, as
the overload type would always match the previously hard-coded type.

Fixes microsoft#7984
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: New

Development

Successfully merging this pull request may close these issues.

hctdb.py: Disabled validation allowed inconsistent dxil op signatures in same class

1 participant