[GCC][PATCH] arm: Fix MVE intrinsics polymorphic variants wrongly generating __ARM_un...
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>
Wed, 30 Sep 2020 14:19:17 +0000 (15:19 +0100)
committerSrinath Parvathaneni <srinath.parvathaneni@arm.com>
Wed, 30 Sep 2020 14:20:14 +0000 (15:20 +0100)
commit6bd4ce64eb48a72eca300cb52773e6101d646004
tree56d3cd1427108c7ea22a8d6729cbe50d2fa69df4
parent97b798d80baf945ea28236eef3fa69f36626b579
[GCC][PATCH] arm: Fix MVE intrinsics polymorphic variants wrongly generating __ARM_undef type (pr96795).

Hello,

This patch fixes (PR96795) MVE intrinsic polymorphic variants vaddq, vaddq_m, vaddq_x, vcmpeqq_m,
vcmpeqq, vcmpgeq_m, vcmpgeq, vcmpgtq_m, vcmpgtq, vcmpleq_m, vcmpleq, vcmpltq_m, vcmpltq,
vcmpneq_m, vcmpneq, vfmaq_m, vfmaq, vfmasq_m, vfmasq, vmaxnmavq, vmaxnmavq_p, vmaxnmvq,
vmaxnmvq_p, vminnmavq, vminnmavq_p, vminnmvq, vminnmvq_p, vmulq_m, vmulq, vmulq_x, vsetq_lane,
vsubq_m, vsubq and vsubq_x which are incorrectly generating __ARM_undef and mismatching the passed
floating point scalar arguments.

Bootstrapped on arm-none-linux-gnueabihf and regression tested on arm-none-eabi and found no regressions.

Ok for master? Ok for GCC-10 branch?

Regards,
Srinath.

gcc/ChangeLog:

2020-09-30  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

PR target/96795
* config/arm/arm_mve.h (__ARM_mve_coerce2): Define.
(__arm_vaddq): Correct the scalar argument.
(__arm_vaddq_m): Likewise.
(__arm_vaddq_x): Likewise.
(__arm_vcmpeqq_m): Likewise.
(__arm_vcmpeqq): Likewise.
(__arm_vcmpgeq_m): Likewise.
(__arm_vcmpgeq): Likewise.
(__arm_vcmpgtq_m): Likewise.
(__arm_vcmpgtq): Likewise.
(__arm_vcmpleq_m): Likewise.
(__arm_vcmpleq): Likewise.
(__arm_vcmpltq_m): Likewise.
(__arm_vcmpltq): Likewise.
(__arm_vcmpneq_m): Likewise.
(__arm_vcmpneq): Likewise.
(__arm_vfmaq_m): Likewise.
(__arm_vfmaq): Likewise.
(__arm_vfmasq_m): Likewise.
(__arm_vfmasq): Likewise.
(__arm_vmaxnmavq): Likewise.
(__arm_vmaxnmavq_p): Likewise.
(__arm_vmaxnmvq): Likewise.
(__arm_vmaxnmvq_p): Likewise.
(__arm_vminnmavq): Likewise.
(__arm_vminnmavq_p): Likewise.
(__arm_vminnmvq): Likewise.
(__arm_vminnmvq_p): Likewise.
(__arm_vmulq_m): Likewise.
(__arm_vmulq): Likewise.
(__arm_vmulq_x): Likewise.
(__arm_vsetq_lane): Likewise.
(__arm_vsubq_m): Likewise.
(__arm_vsubq): Likewise.
(__arm_vsubq_x): Likewise.

gcc/testsuite/ChangeLog:

PR target/96795
* gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c: New Test.
* gcc.target/arm/mve/intrinsics/mve_vaddq_n.c: Likewise.
* gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c: Likewise.
* gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c: Likewise.
69 files changed:
gcc/config/arm/arm_mve.h
gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vaddq_n.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c [new file with mode: 0644]