-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Test codegen for repr(packed,simd)
-> repr(simd)
#125904
Conversation
0692047
to
485add7
Compare
thank you for taking care of all the codegen |
…, r=calebzulawski Test codegen for `repr(packed,simd)` -> `repr(simd)` This adds the codegen test originally requested in rust-lang#117116 but exploiting the collection of features in FileCheck and compiletest to make it more resilient to expectations being broken by optimization levels. Mostly by presetting optimization levels for each revision of the tests. I do not think the dereferenceable attribute's presence or absence is that important. r? `@calebzulawski`
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
fascinating. |
485fa43
to
9987363
Compare
Slight tweak to manage the nopt builder having an even-more-unexpected test configuration. |
@bors r=calebzulawski |
☀️ Test successful - checks-actions |
Finished benchmarking commit (621e957): comparison URL. Overall result: ✅ improvements - no action needed@rustbot label: -perf-regression Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
Max RSS (memory usage)Results (primary 3.4%, secondary 3.1%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResults (primary -1.0%, secondary 2.5%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 667.71s -> 670.518s (0.42%) |
doubt.jpg |
// CHECK: [[VREG:%[a-z0-9_]+]] = fmul <3 x float> | ||
// CHECK-NEXT: store <3 x float> [[VREG]], ptr [[RET_VREG]], [[RET_ALIGN]] | ||
// CHECK-NEXT: ret void | ||
unsafe { intrinsics::simd_mul(x, x) } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This calls simd_mul on FullSimd, which is not what rust-lang/portable-simd#422 does I think -- there the intrinsics are called on packed SIMD types. Conveniently that means they work without any other adjustments in Miri. ;)
Is there any need for simd_mul and other intrinsics to be used on types with padding?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are some crates that use length-3 vectors with the repr_simd
unstable feature. I've also played around with the idea of making the layout configurable in std::simd, though I haven't really decided if that's actually beneficial. So, I'd lean towards not necessary but a possibility
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a nightly-only feature so breaking those crates is an option. I guess the question is whether there's any advantage to the types that have padding.
Is that tracked anywhere? If not, can you open an issue?
This adds the codegen test originally requested in #117116 but exploiting the collection of features in FileCheck and compiletest to make it more resilient to expectations being broken by optimization levels. Mostly by presetting optimization levels for each revision of the tests.
I do not think the dereferenceable attribute's presence or absence is that important.
r? @calebzulawski