This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, The attached patch fixes PR68620. It wasn't sufficient to add the movv4hf pattern, because this also enabled other transformations, and I had to update existing support such that the tests continue to pass after using new code paths. I added V4HF/V8HF to the VQXMOV and VDQ iterators to enable the use of these modes in the relevant patterns. For the vec_set<mode>_internal and neon_vld1_dup<mode> patterns, I switched to an existing iterator which already had the needed V4HF/V8HF (so I switched to VD_LANE and VQ2). For neon_vdupn, I chose to implement neon_vdup_nv4hf and neon_vdup_nv8hf instead of updating the VX iterator because I thought it was not desirable to impact neon_vrev32<mode>. I had to update neon_valid_immediate to return -1 when handling FP16 immediates (they cannot be represented in neon mov instructions). Finally, I had to adjust the vget_lane_f16/vset_lane_f16 implementations in arm_neon.h to account for the different lane numbering in big-endian. This has the benefit of making vldX_lane_f16_indices_1 vstX_lane_f16_indices_1.c vcvt_f16.c vcvtf16_f32.c now pass on armeb. Regarding the testsuite, I've added the testcase that would otherwise ICE, and the arm_fp effective target I've also proposed in my other testsuite patch related to target attributes. I've tested this patch using QEMU on arm-linux and armeb-linux targets. OK? Christophe.
Attachment:
pr68620-v8.log.txt
Description: Text document
Attachment:
pr68620-v8.patch.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |