Skip to content

Re-organize intrinsic-test to enable seamless addition of behaviour testing for more architectures #1758

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

Open
wants to merge 23 commits into
base: master
Choose a base branch
from

Conversation

madhav-madhusoodanan
Copy link

@madhav-madhusoodanan madhav-madhusoodanan commented Mar 24, 2025

Updates so far

  1. Moved the ARM-specific testing to the arm module, exposing only a test function at src/main.rs
  2. Created a SupportedArchitectureTest trait that has been implemented for arm and should be implemented for other architectures too. Allows us to expose functionality like building C/Rust test files and comparing outputs.
  3. Moved common functionality (CLI parsing, create files, compilations, compare outputs) into the common module for reuse by other architectures too.
  4. Implemented a match block for selection of architectures using the target CLI variable.

Reasoning

  1. The Intrinsic type may be specific to architectures, hence the implementation of a trait helps us to abstract the usage of such data types within the architecture-specific module

New architecture of intrinsic-test

IMG_9057

@rustbot
Copy link
Collaborator

rustbot commented Mar 24, 2025

r? @Amanieu

rustbot has assigned @Amanieu.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@madhav-madhusoodanan madhav-madhusoodanan force-pushed the restructure-intrinsic-test-crate branch 2 times, most recently from 9900e81 to 546554d Compare March 24, 2025 19:10
@Amanieu
Copy link
Member

Amanieu commented Mar 25, 2025

The module should be called arm rather than aarch.

@Amanieu
Copy link
Member

Amanieu commented Mar 25, 2025

@JamieCunliffe feel free to have a look at this since you are the original author of intrinsic-test. This is part of a GSoC project to extend intrinsic-test to other architectures.

@madhav-madhusoodanan madhav-madhusoodanan force-pushed the restructure-intrinsic-test-crate branch 6 times, most recently from 5dce230 to 7ff8497 Compare March 26, 2025 15:32
@madhav-madhusoodanan
Copy link
Author

madhav-madhusoodanan commented Mar 26, 2025

Are we using the --a32 flag in the CLI of intrinsic-test anywhere? I was unable to find its usage.
Would it be alright if I remove it, or is there some reasoning that I may be missing?

@madhav-madhusoodanan madhav-madhusoodanan force-pushed the restructure-intrinsic-test-crate branch 2 times, most recently from a12b4a4 to ff10311 Compare March 27, 2025 15:49
@Amanieu
Copy link
Member

Amanieu commented Mar 27, 2025

--a32 is not currently tested in CI, but it is used for 32-bit ARM targets (arm* and thumb*). Some ARM intrinsics are only available on 64-bit ARM targets and this flag skips those.

@madhav-madhusoodanan madhav-madhusoodanan force-pushed the restructure-intrinsic-test-crate branch 9 times, most recently from 6e8851b to a2ce02c Compare March 27, 2025 19:19
@madhav-madhusoodanan madhav-madhusoodanan changed the title [DRAFT] Re-organize intrinsic-test to enable seamless addition of behaviour testing for more architectures Re-organize intrinsic-test to enable seamless addition of behaviour testing for more architectures Mar 27, 2025
@madhav-madhusoodanan madhav-madhusoodanan marked this pull request as ready for review March 27, 2025 19:29
@madhav-madhusoodanan madhav-madhusoodanan marked this pull request as draft March 28, 2025 08:51
@madhav-madhusoodanan madhav-madhusoodanan changed the title Re-organize intrinsic-test to enable seamless addition of behaviour testing for more architectures [DRAFT] Re-organize intrinsic-test to enable seamless addition of behaviour testing for more architectures Mar 28, 2025
…ted for different architectures.

Next steps:
Move the existing ARM-specific implementation into one that fits well with this trait.
@madhav-madhusoodanan madhav-madhusoodanan force-pushed the restructure-intrinsic-test-crate branch 2 times, most recently from 9dfe061 to 9a221fe Compare May 4, 2025 17:23
@madhav-madhusoodanan madhav-madhusoodanan force-pushed the restructure-intrinsic-test-crate branch 3 times, most recently from 54434b1 to e72631d Compare May 10, 2025 18:25
@madhav-madhusoodanan madhav-madhusoodanan force-pushed the restructure-intrinsic-test-crate branch from e72631d to e72b4c1 Compare May 10, 2025 18:57
Comment on lines +1 to +9
pub fn build_notices(line_prefix: &str) -> String {
format!(
"\
{line_prefix}This is a transient test file, not intended for distribution. Some aspects of the
{line_prefix}test are derived from a JSON specification, published under the same license as the
{line_prefix}`intrinsic-test` crate.\n
"
)
}

Choose a reason for hiding this comment

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

Out of curiosity, how important is this notice?

I'm totally in favour of documentation, but seeing as the files that are being generated are purely for testing purposes I thought it'd be best to clarify.

Copy link
Contributor

Choose a reason for hiding this comment

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

We would like to keep this notice for Arm intrinsics if possible. For us it's not technically mandatory to include, but it reduces risk for us.

I'm not in a position to speak for what's best for other architectures unfortunately.

Choose a reason for hiding this comment

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

I see

@madhav-madhusoodanan
Copy link
Author

madhav-madhusoodanan commented May 14, 2025

In the last commit, I migrated from Argument<T, M> to an Argument configuration, since I realized that the Constraint type would be common across architectures.

Presently, I think I’m at that stage where I'd be better at optimise further when I add in more architectures to intrinsic-test.

Would it be a good strategy on making this PR merge-worthy and then continue making such re-organization efforts in future PRs (as and when I add more architectures)?

There was one suggestion made by @adamgemmell about updating the types.rs (now common/intrinsic_helpers.rs) to make it supportive for x86 too.

Would it be a good idea if I can work on that in the next PR (in which I’d bring behavioural testing coverage for x86)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants