Fix bugs of some intrinsic functions in CLANG : _mm512_stream_ps, _mm512_stream_pd, _mm512_stream_si512
Details
- Reviewers
craig.topper pengfei LuoYuanke RKSimon spatel - Commits
- rGdea9cad10e02: [x86] Fix bugs of some intrinsic functions in CLANG : _mm512_stream_ps…
rL370691: [x86] Fix bugs of some intrinsic functions in CLANG : _mm512_stream_ps…
rC370691: [x86] Fix bugs of some intrinsic functions in CLANG : _mm512_stream_ps…
Diff Detail
- Repository
- rL LLVM
Event Timeline
clang/test/CodeGen/avx512f-builtins.c | ||
---|---|---|
8570 ↗ | (On Diff #217315) | Would it make sense to keep the __m512* variants as well for test coverage? |
I think @RKSimon was asking to have tests with the original type and with the new void type. Just to verify that we accept code we used to accept and that we now accept void.
Sorry for ping this long long ago Phab... I just found we are missing alignment between these intrinsics' 512 variants and 128/256 ones. Does anyone remember the motivation here? The intrinsic guide also suffers such unaligning issue, but we can refine there, too if we could have a conclusion here. BTW gcc doesn't have such fix so they used aligned type* for these intrinsics.
The tests (and the doxygen descriptions for sse2/avxavx2 headers) all have vector-alignment requirements - where did you find it missing?
The issue is 128/256 variants both used type* but 512 variants here used void*. I mean from the intrinsic level, not builtin.
FYI I raised a PR https://github.com/llvm/llvm-project/pull/66310 to align 128/256 variants to use void*. We can modify/inform intirnsic guide/gcc to align this change if the PR can be landed. Welcome comments there!