Skip to content

[SM6.10][Bugfix] Add missing 64bit DXIL op overloads#8354

Merged
V-FEXrt merged 1 commit intomicrosoft:mainfrom
V-FEXrt:issue-8289
Apr 9, 2026
Merged

[SM6.10][Bugfix] Add missing 64bit DXIL op overloads#8354
V-FEXrt merged 1 commit intomicrosoft:mainfrom
V-FEXrt:issue-8289

Conversation

@V-FEXrt
Copy link
Copy Markdown
Collaborator

@V-FEXrt V-FEXrt commented Apr 8, 2026

Fixes #8289

DXIL ops that accept numeric types were supposed to also accept 64 bit wide types. This PR update them.

Changes in lib/DXIL/DxilOperations.cpp are generated

@V-FEXrt V-FEXrt changed the title [SM6.10] Add missing 64bit DXIL op overloads [SM6.10][Bugfix] Add missing 64bit DXIL op overloads Apr 8, 2026
Copy link
Copy Markdown
Collaborator

@bob80905 bob80905 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Do we need to check for uint64_t or is that redundant?

@V-FEXrt
Copy link
Copy Markdown
Collaborator Author

V-FEXrt commented Apr 8, 2026

IMO that would be redundant since they both lower to i64 and we just want to test that i64 is valid

// CHECK2: call void @"dx.hl.op..void (i32, <4 x i64>*, <4 x double>, i32, i32)"
// CHECK2-SAME: (i32 422, <4 x i64>* %result2, <4 x double> %{{.*}}, i32 1, i32 2)
double4 vec2 = {9.0, 8.0, 7.0, 6.0};
vector<int64_t, 4> result2;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we have cases for uint64_t as well, to make sure component type is correctly identified?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This goes for all tests below too.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, shouldn't we try to match interpretations here?

I guess if all you care about is generating a DXIL op with the overload, this does achieve that, but I would expect validation to come along and make a lot of work for us to update a lot of tests that have these nonsense parameter combinations.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Matrix component type isn't determined by the types going into the dxil op. That is entirely from the matrix variable

I'm happy to add it if you want but I don't think it adds any meaningful extra coverage

Copy link
Copy Markdown
Contributor

@tex3d tex3d left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be clear, my comment shouldn't block the merge, but it does seem odd, and will likely need updates as soon as we start doing validation.

@V-FEXrt
Copy link
Copy Markdown
Collaborator Author

V-FEXrt commented Apr 9, 2026

will likely need updates as soon as we start doing validation

yeah there will be a lot of debt forcibly paid once we start implementing validation

@V-FEXrt
Copy link
Copy Markdown
Collaborator Author

V-FEXrt commented Apr 9, 2026

#8355 to track the extra testing needed here!

@V-FEXrt V-FEXrt enabled auto-merge (squash) April 9, 2026 01:12
@V-FEXrt V-FEXrt merged commit aba4445 into microsoft:main Apr 9, 2026
14 checks passed
@github-project-automation github-project-automation bot moved this from New to Done in HLSL Roadmap Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

LinAlg DXIL Ops should support 64 bit types

3 participants