These are AArch64-specific intrinsics. The patch removes AArch32-mode test cases and maintains AArch64 ones in tools/clang/test/CodeGen/aarch64-neon-vget-hilo.c.
Details
- Reviewers
t.p.northover rengolin SjoerdMeijer - Commits
- rG1243ebdcdb6e: Revert r330195 "[NEON] Define vget_high_f16() and vget_low_f16() intrinsics in…
rGb3b87c3314d6: [NEON] Define vget_high_f16() and vget_low_f16() intrinsics in AArch64 mode only
rC330248: Revert r330195 "[NEON] Define vget_high_f16() and vget_low_f16() intrinsics in…
rL330248: Revert r330195 "[NEON] Define vget_high_f16() and vget_low_f16() intrinsics in…
rC330195: [NEON] Define vget_high_f16() and vget_low_f16() intrinsics in AArch64 mode only
rL330195: [NEON] Define vget_high_f16() and vget_low_f16() intrinsics in AArch64 mode only
Diff Detail
- Repository
- rL LLVM
Event Timeline
Not really familiar with these 2 intrinsics, I had a quick look at the ACLE:
T vget_high_ST(T 2 a);
T vget_low_ST(T 2 a);Gets the high, or low, half of a 128-bit vector. There are 24 intrinsics. ARMv8
adds 4 more intrinsics for 128-bit vectors with float64_t and poly64_t lane
type.
I don't read here that they are unavailable in AArch32. Have I missed something?
The NEON Intrinsics Reference (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0073a/index.html) reads like they are AArch64-only.
Yep, agreed, also on the new shiny https://developer.arm.com/technologies/neon/intrinsics it is listed as A64 only.
Sorry, I have second thoughts on this.
This seems more like a doc issue than anything else. There is no reason why this could not be supported in A32. GCC is also supporting this, and removing it is a bit user unfriendly.
Would you mind reverting this?
Sure, will do. Should we treat these intrinsics as ARMv8 or ARMv7/v8? Also, would you mind if I commit a comment under this differential revision explaining the situation?
Thanks, and I am going to try to get some clarity on this doc issue. But looks like it should be "ARMv7, ARMv8", as it used to be. Make sense to comment on this in the commit message, if that's what you mean.
These should be available whenever the float16x4_t and float16x8_t types are available. So v7/A32/A64. I have pushed this change to the docs locally; but I don't know when this will make it to public documentation, so you will just have to take my word for it when I say this is a documentation bug and it will be fixed in a future release.
Thanks Sjoerd and James. Just added a comment referring to this revision in rL330420.