public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
@ 2014-07-08 14:46 jgreenhalgh at gcc dot gnu.org
  2014-07-08 14:47 ` [Bug target/61749] " jgreenhalgh at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: jgreenhalgh at gcc dot gnu.org @ 2014-07-08 14:46 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61749

            Bug ID: 61749
           Summary: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
           Product: gcc
           Version: 4.8.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jgreenhalgh at gcc dot gnu.org

Given the following, all release branch and trunk AArch64 compilers will ICE
trying to expand the intrinsic.

#include "arm_neon.h"

int32x4_t foo (int32x4_t a, int16x4_t b, int16x4_t c, int d)
{
  return vqdmlal_lane_s16 (a, b, c, 0);
}

As so:

/work/gcc-dev/build-aarch64-none-elf/install/lib/gcc/aarch64-none-elf/4.10.0/include/arm_neon.h:
In function 'foo':
/work/gcc-dev/build-aarch64-none-elf/install/lib/gcc/aarch64-none-elf/4.10.0/include/arm_neon.h:19294:10:
internal compiler error: in aarch64_simd_lane_bounds, at
config/aarch64/aarch64.c:7715
   return __builtin_aarch64_sqdmlal_lanev4hi (__a, __b, __c, __d);
          ^
0xc608d0 aarch64_simd_lane_bounds(rtx_def*, long, long)
    /work/gcc-dev/src/gcc/gcc/config/aarch64/aarch64.c:7715
0xcb0221 gen_aarch64_sqdmlal_lanev4hi(rtx_def*, rtx_def*, rtx_def*, rtx_def*,
rtx_def*)
    /work/gcc-dev/src/gcc/gcc/config/aarch64/aarch64-simd.md:3015
0xc65b7f insn_gen_fn::operator()(rtx_def*, rtx_def*, rtx_def*, rtx_def*,
rtx_def*) const
    /work/gcc-dev/src/gcc/gcc/recog.h:311
0xc65b7f aarch64_simd_expand_args
    /work/gcc-dev/src/gcc/gcc/config/aarch64/aarch64-builtins.c:888
0xc66318 aarch64_simd_expand_builtin(int, tree_node*, rtx_def*)
    /work/gcc-dev/src/gcc/gcc/config/aarch64/aarch64-builtins.c:990
0xc66968 aarch64_expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode,
int)
    /work/gcc-dev/src/gcc/gcc/config/aarch64/aarch64-builtins.c:1071
0x6062a2 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
    /work/gcc-dev/src/gcc/gcc/builtins.c:5756
0x6f897b expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
    /work/gcc-dev/src/gcc/gcc/expr.c:10344
0x6f9e7c expand_expr_real(tree_node*, rtx_def*, machine_mode, expand_modifier,
rtx_def**, bool)
    /work/gcc-dev/src/gcc/gcc/expr.c:7922
0x70078f store_expr(tree_node*, rtx_def*, int, bool)
    /work/gcc-dev/src/gcc/gcc/expr.c:5312
0x7092b8 expand_assignment(tree_node*, tree_node*, bool)
    /work/gcc-dev/src/gcc/gcc/expr.c:5098
0x626493 expand_call_stmt
    /work/gcc-dev/src/gcc/gcc/cfgexpand.c:2305
0x626493 expand_gimple_stmt_1
    /work/gcc-dev/src/gcc/gcc/cfgexpand.c:3202
0x626493 expand_gimple_stmt
    /work/gcc-dev/src/gcc/gcc/cfgexpand.c:3354
0x628d75 expand_gimple_basic_block
    /work/gcc-dev/src/gcc/gcc/cfgexpand.c:5192
0x62ad53 execute
    /work/gcc-dev/src/gcc/gcc/cfgexpand.c:5799
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

The bug is in the treatment in aarch64-simd-builtins.def of these lane
intrinsics as "QUADOP"s. This allows their final parameter to *maybe* be an
immediate. But subsequent code on the expand path assumes it to *always* be an
immediate.

The fix would to special case the handling of these intrinsics and enforce that
the final parameter is *always* an immediate.

For 4.10 and 4.9 that means adding a new set of types to "qualifiers". For 4.8,
it means adding a new aarch64_simd_itype and handling it appropriately.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/61749] arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
  2014-07-08 14:46 [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs jgreenhalgh at gcc dot gnu.org
@ 2014-07-08 14:47 ` jgreenhalgh at gcc dot gnu.org
  2014-07-08 14:52 ` ktkachov at gcc dot gnu.org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jgreenhalgh at gcc dot gnu.org @ 2014-07-08 14:47 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61749

jgreenhalgh at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |aarch64*
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-07-08
           Assignee|unassigned at gcc dot gnu.org      |jgreenhalgh at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from jgreenhalgh at gcc dot gnu.org ---
This is an AArch64 bug.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/61749] arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
  2014-07-08 14:46 [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs jgreenhalgh at gcc dot gnu.org
  2014-07-08 14:47 ` [Bug target/61749] " jgreenhalgh at gcc dot gnu.org
@ 2014-07-08 14:52 ` ktkachov at gcc dot gnu.org
  2014-08-06 16:01 ` ktkachov at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: ktkachov at gcc dot gnu.org @ 2014-07-08 14:52 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61749

ktkachov at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ktkachov at gcc dot gnu.org

--- Comment #2 from ktkachov at gcc dot gnu.org ---
Confirmed, also the testcase would be:

#include "arm_neon.h"

int32x4_t foo (int32x4_t a, int16x4_t b, int16x4_t c, int d)
{
  return vqdmlal_lane_s16 (a, b, c, d);
}


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/61749] arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
  2014-07-08 14:46 [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs jgreenhalgh at gcc dot gnu.org
  2014-07-08 14:47 ` [Bug target/61749] " jgreenhalgh at gcc dot gnu.org
  2014-07-08 14:52 ` ktkachov at gcc dot gnu.org
@ 2014-08-06 16:01 ` ktkachov at gcc dot gnu.org
  2014-09-09 10:16 ` ktkachov at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: ktkachov at gcc dot gnu.org @ 2014-08-06 16:01 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61749

ktkachov at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|jgreenhalgh at gcc dot gnu.org     |ktkachov at gcc dot gnu.org
   Target Milestone|---                         |4.10.0

--- Comment #4 from ktkachov at gcc dot gnu.org ---
I think I have a trunk patch to address this


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/61749] arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
  2014-07-08 14:46 [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs jgreenhalgh at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2014-08-06 16:01 ` ktkachov at gcc dot gnu.org
@ 2014-09-09 10:16 ` ktkachov at gcc dot gnu.org
  2014-10-28 10:53 ` ramana at gcc dot gnu.org
  2014-12-04 13:25 ` yroux at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: ktkachov at gcc dot gnu.org @ 2014-09-09 10:16 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61749

--- Comment #5 from ktkachov at gcc dot gnu.org ---
Author: ktkachov
Date: Tue Sep  9 10:15:46 2014
New Revision: 215046

URL: https://gcc.gnu.org/viewcvs?rev=215046&root=gcc&view=rev
Log:
[AArch64] PR 61749: Do not ICE in lane intrinsics when passed non-constant lane
number

    PR target/61749
    * config/aarch64/aarch64-builtins.c (aarch64_types_quadop_qualifiers):
    Use qualifier_immediate for last operand.  Rename to...
    (aarch64_types_ternop_lane_qualifiers): ... This.
    (TYPES_QUADOP): Rename to...
    (TYPES_TERNOP_LANE): ... This.
    (aarch64_simd_expand_args): Return const0_rtx when encountering user
    error.  Change return of 0 to return of NULL_RTX.
    (aarch64_crc32_expand_builtin): Likewise.
    (aarch64_expand_builtin): Return NULL_RTX instead of 0.
    ICE when expanding unknown builtin.
    * config/aarch64/aarch64-simd-builtins.def (sqdmlal_lane): Use
    TERNOP_LANE qualifiers.
    (sqdmlsl_lane): Likewise.
    (sqdmlal_laneq): Likewise.
    (sqdmlsl_laneq): Likewise.
    (sqdmlal2_lane): Likewise.
    (sqdmlsl2_lane): Likewise.
    (sqdmlal2_laneq): Likewise.
    (sqdmlsl2_laneq): Likewise.

    * gcc.target/aarch64/vqdml_lane_intrinsics-bad_1.c: New test.


Added:
    trunk/gcc/testsuite/gcc.target/aarch64/vqdml_lane_intrinsics-bad_1.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/aarch64/aarch64-builtins.c
    trunk/gcc/config/aarch64/aarch64-simd-builtins.def
    trunk/gcc/testsuite/ChangeLog


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/61749] arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
  2014-07-08 14:46 [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs jgreenhalgh at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2014-09-09 10:16 ` ktkachov at gcc dot gnu.org
@ 2014-10-28 10:53 ` ramana at gcc dot gnu.org
  2014-12-04 13:25 ` yroux at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: ramana at gcc dot gnu.org @ 2014-10-28 10:53 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61749

Ramana Radhakrishnan <ramana at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |ramana at gcc dot gnu.org
         Resolution|---                         |FIXED
      Known to fail|4.10.0                      |5.0

--- Comment #6 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> ---
Fixed on trunk.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug target/61749] arm_neon.h "_lane" and "_n" intrinsics can cause ICEs
  2014-07-08 14:46 [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs jgreenhalgh at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2014-10-28 10:53 ` ramana at gcc dot gnu.org
@ 2014-12-04 13:25 ` yroux at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: yroux at gcc dot gnu.org @ 2014-12-04 13:25 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61749

--- Comment #7 from Yvan Roux <yroux at gcc dot gnu.org> ---
Author: yroux
Date: Thu Dec  4 13:25:10 2014
New Revision: 218358

URL: https://gcc.gnu.org/viewcvs?rev=218358&root=gcc&view=rev
Log:
gcc/
2014-12-04  Yvan Roux  <yvan.roux@linaro.org>

    Backport from trunk r215046.
    2014-09-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

    PR target/61749
    * config/aarch64/aarch64-builtins.c (aarch64_types_quadop_qualifiers):
    Use qualifier_immediate for last operand.  Rename to...
    (aarch64_types_ternop_lane_qualifiers): ... This.
    (TYPES_QUADOP): Rename to...
    (TYPES_TERNOP_LANE): ... This.
    (aarch64_simd_expand_args): Return const0_rtx when encountering user
    error.  Change return of 0 to return of NULL_RTX.
    (aarch64_crc32_expand_builtin): Likewise.
    (aarch64_expand_builtin): Return NULL_RTX instead of 0.
    ICE when expanding unknown builtin.
    * config/aarch64/aarch64-simd-builtins.def (sqdmlal_lane): Use
    TERNOP_LANE qualifiers.
    (sqdmlsl_lane): Likewise.
    (sqdmlal_laneq): Likewise.
    (sqdmlsl_laneq): Likewise.
    (sqdmlal2_lane): Likewise.
    (sqdmlsl2_lane): Likewise.
    (sqdmlal2_laneq): Likewise.
    (sqdmlsl2_laneq): Likewise.

gcc/testsuite/
2014-12-04  Yvan Roux  <yvan.roux@linaro.org>

    Backport from trunk r215046.
    2014-09-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

    PR target/61749
    * gcc.target/aarch64/vqdml_lane_intrinsics-bad_1.c: New test.


Added:
   
branches/linaro/gcc-4_9-branch/gcc/testsuite/gcc.target/aarch64/vqdml_lane_intrinsics-bad_1.c
Modified:
    branches/linaro/gcc-4_9-branch/gcc/ChangeLog.linaro
    branches/linaro/gcc-4_9-branch/gcc/config/aarch64/aarch64-builtins.c
    branches/linaro/gcc-4_9-branch/gcc/config/aarch64/aarch64-simd-builtins.def
    branches/linaro/gcc-4_9-branch/gcc/testsuite/ChangeLog.linaro


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-12-04 13:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-08 14:46 [Bug target/61749] New: arm_neon.h "_lane" and "_n" intrinsics can cause ICEs jgreenhalgh at gcc dot gnu.org
2014-07-08 14:47 ` [Bug target/61749] " jgreenhalgh at gcc dot gnu.org
2014-07-08 14:52 ` ktkachov at gcc dot gnu.org
2014-08-06 16:01 ` ktkachov at gcc dot gnu.org
2014-09-09 10:16 ` ktkachov at gcc dot gnu.org
2014-10-28 10:53 ` ramana at gcc dot gnu.org
2014-12-04 13:25 ` yroux at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).