Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Adding a jitstressregs_x86_noavx outerloop job group#24650

Merged
tannergooding merged 2 commits into
dotnet:masterfrom
tannergooding:jitstressregs-noavx
May 21, 2019
Merged

Adding a jitstressregs_x86_noavx outerloop job group#24650
tannergooding merged 2 commits into
dotnet:masterfrom
tannergooding:jitstressregs-noavx

Conversation

@tannergooding
Copy link
Copy Markdown
Member

As per #24630 (comment), this adds an outerloop build definition group that runs the register jitstress tests with AVX also disabled.

This, unlike many of the other configurations, is particularly interesting as AVX changes most SIMD instructions from ins op1, src (where op1 is both a dst and src) to ins dst, src, src. This can end up impacting register allocation in interesting ways.

@tannergooding
Copy link
Copy Markdown
Member Author

CC. @sandreenko, @CarolEidt, @BruceForstall, @echesakovMSFT

Comment thread azure-pipelines.yml
- Windows_NT_x86
${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-regs-x86') }}:
platforms:
- Linux_x64
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Unlike with the jitstress-isas jobs, OSX is not particularly interesting for the jitstress-regs jobs as compared to Linux.

Comment thread azure-pipelines.yml Outdated
testGroup: outerloop-jitstress-isas-arm
${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-isas-x86') }}:
testGroup: outerloop-jitstress-isas-x86
${{ if eq(variables['Build.DefinitionName'], 'coreclr-outerloop-jitstress-regs-x86') }}:
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I added a separator in the names based on the feedback from @sandreenko in the last PR: #24630 (review)

This does make it not match the outer jitstressregs jobs, however. It would likely be worth making them all consistent, and I don't have a preference either way, but the existing build-definitions can't simply be renamed due to other branches/PRs actively using them.

@tannergooding
Copy link
Copy Markdown
Member Author

This new build-definition (to be created) along with the new outerloop build definitions from #24630 still need to be inserted into the schedule for automatically running (existing schedule is here: #24630 (comment)).

@jashook jashook requested review from echesakov and sbomer May 20, 2019 15:25
Copy link
Copy Markdown

@BruceForstall BruceForstall left a comment

Choose a reason for hiding this comment

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

I don't like this. The COMPlus variable is JitStressRegs. I don't think that needs any separator. JitStress is a different variable, meaning something different. I don't think they need to "look" the same, as that seems confusing.

Comments?

@CarolEidt
Copy link
Copy Markdown

I agree with @BruceForstall that we shouldn't have a separator between jitstress and regs.

@tannergooding
Copy link
Copy Markdown
Member Author

Will fix the names

@sandreenko
Copy link
Copy Markdown

I have a few questions:

  1. Did we have this testing in Jenkins?
  2. Were any issues found with this mode/Do we know that it adds valuable coverage?

We do not want to create dozens of pipelines in AzDO because it is hard to maintain them; also, we have limited machine resources.

@tannergooding
Copy link
Copy Markdown
Member Author

Did we have this testing in Jenkins?

No, we did not have this exact mode.

Were any issues found with this mode/Do we know that it adds valuable coverage?

Yes. As called out in the top post, Having AVX enabled vs disabled changes the semantics and encoding of a large number of instructions. For normal code, this is any floating-point operation and for performance oriented code this is most of the System.Numerics.Vector and System.Runtime.Intrinsics support.

Ensuring that we are correctly handling things like extended registers for x86 hardware without AVX support is important, especially as the AVX hardware becomes more common place (and is the default for all current x86 machines in our machine pool).

@CarolEidt
Copy link
Copy Markdown

I agree with @tannergooding on this.

Were any issues found with this mode/Do we know that it adds valuable coverage?

Yes, we have found a number of register allocation or encoding issues that are exposed by differences in the handling of 2-operand vs. 3-operand instructions.

@tannergooding tannergooding changed the title Adding a jitstress_regs_x86_noavx outerloop job group Adding a jitstressregs_x86_noavx outerloop job group May 20, 2019
@tannergooding
Copy link
Copy Markdown
Member Author

Any other feedback now that the names have been fixed, or is this good to merge after the last jobs complete?

@sandreenko
Copy link
Copy Markdown

cc @RussKeldorph

Copy link
Copy Markdown

@BruceForstall BruceForstall left a comment

Choose a reason for hiding this comment

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

LGTM

@tannergooding tannergooding merged commit 2228810 into dotnet:master May 21, 2019
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
…24650)

* Adding a jitstress_regs_x86_noavx outerloop job group

* Fixing the names of `jitstress-regs` to `jitstressregs`


Commit migrated from dotnet/coreclr@2228810
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants