Skip to content

Exclude interpreterTester test on R2R CI legs #116824

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 19, 2025

Conversation

mangod9
Copy link
Member

@mangod9 mangod9 commented Jun 19, 2025

Created a tracking issue for this: #116823. Excluding it for now to keep outerloop clean.

@mangod9
Copy link
Member Author

mangod9 commented Jun 19, 2025

/azp run runtime-outerloop

Copy link
Contributor

Tagging subscribers to this area: @BrzVlad, @janvorli, @kg
See info in area-owners.md if you want to be subscribed.

Copy link

No pipelines are associated with this pull request.

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR excludes the InterpreterTester tests on R2R (crossgen2) CI legs to keep outerloop runs clean while tracking the underlying issue.

  • Adds an ExcludeList entry targeting the JIT/interpreter/InterpreterTester directory.
  • Links the exclusion to issue #116823.
  • Applies only when TestBuildMode is crossgen2 or crossgen on CoreCLR.

@mangod9
Copy link
Member Author

mangod9 commented Jun 19, 2025

/azp run runtime-coreclr outerloop

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@jkotas
Copy link
Member

jkotas commented Jun 19, 2025

The problem is that the InterpterTests are expecting invalid results and fail when not run via the interpreter - that happens to be the case in these crossgen legs.

The following test fails with regular JIT:

            if (!TestConvBoundaries(
                32767.999999999996, 32768.00000000001,
                2147483647.9999998, 2147483648.0000005
            ))

@kg
Copy link
Member

kg commented Jun 19, 2025

The problem is that the InterpterTests are expecting invalid results and fail when not run via the interpreter - that happens to be the case in these crossgen legs.

The following test fails with regular JIT:

            if (!TestConvBoundaries(
                32767.999999999996, 32768.00000000001,
                2147483647.9999998, 2147483648.0000005
            ))

Thanks, I'll get on fixing that.

@kg
Copy link
Member

kg commented Jun 19, 2025

The problem is that in JIT, at least on x64, an unchecked conversion of (short)(double)32768.000000000007 produces -32768 instead of saturating like we currently do on purpose in the interpreter.

The corresponding int conversion does saturate: (int)(double)2147483648.0000005 produces 2147483647.

I can modify the interpreter to match this behavior but I wasn't able to find it in the spec, so I'm not sure what the actual behavior should be. Do we perform a saturating Fxx -> I32 conversion and then a regular unchecked non-saturating I32 -> Ixx conversion?

ECMA 335 just says "truncate to zero".

@jkotas
Copy link
Member

jkotas commented Jun 19, 2025

Ok, this sounds like a bug in the JIT.

Copy link
Member

@jkotas jkotas left a comment

Choose a reason for hiding this comment

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

We can merge this to get the CI green

@mangod9 mangod9 merged commit b3102fa into dotnet:main Jun 19, 2025
125 of 127 checks passed
@mangod9 mangod9 deleted the exclude_interpreterTester branch June 19, 2025 21:44
kg added a commit to kg/runtime that referenced this pull request Jun 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants