public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/59968] New: Unused BT patterns
@ 2014-01-28 14:38 hjl.tools at gmail dot com
  2014-01-28 16:12 ` [Bug target/59968] " hjl.tools at gmail dot com
                   ` (16 more replies)
  0 siblings, 17 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 14:38 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

            Bug ID: 59968
           Summary: Unused BT patterns
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
            Target: x86/x86-64

There are some BT patterns in i386 guarded with
TARGET_USE_BT.  But there are no testcases to show
if they are used at all.

Also BT instructions supports memory destination.
But BT patterns only allow register destination.


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
@ 2014-01-28 16:12 ` hjl.tools at gmail dot com
  2014-01-28 16:18 ` hjl.tools at gmail dot com
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 16:12 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-01-28
     Ever confirmed|0                           |1

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int
__attribute__((noinline))
foo1 (int x, int y)
{
  x |= 1 << y;
  return x;
}

we generate

    movl    %esi, %ecx
    movl    $1, %eax
    sall    %cl, %eax
    orl    %edi, %eax
    ret

I am expecting

    movl    %edi, %eax
    bts     %esi, %eax
    ret


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
  2014-01-28 16:12 ` [Bug target/59968] " hjl.tools at gmail dot com
@ 2014-01-28 16:18 ` hjl.tools at gmail dot com
  2014-01-28 16:20 ` ubizjak at gmail dot com
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 16:18 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |areg.melikadamyan at gmail dot com
                   |                            |, kirill.yukhin at intel dot com

--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int bar1;
void
__attribute__((noinline))
foo1 (int y)
{
  bar1 |= 1 << y;
}

we generate:

    movl    $1, %eax
    movl    %edi, %ecx
    sall    %cl, %eax
    orl    %eax, bar1(%rip)
    ret

I am expecting:

    bts     %edi, bar1(%rip)
    ret


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
  2014-01-28 16:12 ` [Bug target/59968] " hjl.tools at gmail dot com
  2014-01-28 16:18 ` hjl.tools at gmail dot com
@ 2014-01-28 16:20 ` ubizjak at gmail dot com
  2014-01-28 16:24 ` ubizjak at gmail dot com
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-01-28 16:20 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to H.J. Lu from comment #0)
> There are some BT patterns in i386 guarded with
> TARGET_USE_BT.  But there are no testcases to show
> if they are used at all.

testsuite/gcc.target/i386/bt-*.c

> Also BT instructions supports memory destination.
> But BT patterns only allow register destination.

bt with a memory operand is slow. The bitpos argument is not limited to operand
size, and is primarily used for locked memory access.

BTW:

$ objdump -d cc1 | grep "bt " | wc -l
1228
>From gcc-bugs-return-441765-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Jan 28 16:23:25 2014
Return-Path: <gcc-bugs-return-441765-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 10293 invoked by alias); 28 Jan 2014 16:23:25 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 10246 invoked by uid 55); 28 Jan 2014 16:23:21 -0000
From: "hjl at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/59672] Add -m16 support for x86
Date: Tue, 28 Jan 2014 16:23:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: enhancement
X-Bugzilla-Who: hjl at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-59672-4-Tec5uzMOuQ@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-59672-4@http.gcc.gnu.org/bugzilla/>
References: <bug-59672-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-01/txt/msg02907.txt.bz2
Content-length: 2117

http://gcc.gnu.org/bugzilla/show_bug.cgi?idY672

--- Comment #8 from hjl at gcc dot gnu.org <hjl at gcc dot gnu.org> ---
Author: hjl
Date: Tue Jan 28 16:22:45 2014
New Revision: 207196

URL: http://gcc.gnu.org/viewcvs?rev 7196&root=gcc&view=rev
Log:
Add -m16 support for x86

The .code16gcc directive was added to binutils back in 1999:

---
   '.code16gcc' provides experimental support for generating 16-bit code
from gcc, and differs from '.code16' in that 'call', 'ret', 'enter',
'leave', 'push', 'pop', 'pusha', 'popa', 'pushf', and 'popf'
instructions default to 32-bit size.  This is so that the stack pointer
is manipulated in the same way over function calls, allowing access to
function parameters at the same stack offsets as in 32-bit mode.
'.code16gcc' also automatically adds address size prefixes where
necessary to use the 32-bit addressing modes that gcc generates.
---

It encodes 32-bit assembly instructions generated by GCC in 16-bit format
so that GCC can be used to generate 16-bit instructions.  To do that, the
.code16gcc directive must be placed at the very beginning of the assembly
code.  This patch adds -m16 to x86 backend by:

1. Add -m16 and make it mutually exclusive with -m32, -m64 and -mx32.
2. Treat -m16 like -m32 so that --32 is passed to assembler.
3. Output .code16gcc at the very beginning of the assembly code.
4. Turn off 64-bit ISA when -m16 is used.

    PR target/59672
    * config/i386/gnu-user64.h (SPEC_32): Add "m16|" to "m32".
    (SPEC_X32): Likewise.
    (SPEC_64): Likewise.
    * config/i386/i386.c (ix86_option_override_internal): Turn off
    OPTION_MASK_ISA_64BIT, OPTION_MASK_ABI_X32 and OPTION_MASK_ABI_64
    for TARGET_16BIT.
    (x86_file_start): Output .code16gcc for TARGET_16BIT.
    * config/i386/i386.h (TARGET_16BIT): New macro.
    (TARGET_16BIT_P): Likewise.
    * config/i386/i386.opt: Add m16.
    * doc/invoke.texi: Document -m16.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/gnu-user64.h
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/i386.h
    trunk/gcc/config/i386/i386.opt
    trunk/gcc/doc/invoke.texi


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (2 preceding siblings ...)
  2014-01-28 16:20 ` ubizjak at gmail dot com
@ 2014-01-28 16:24 ` ubizjak at gmail dot com
  2014-01-28 17:48 ` hjl.tools at gmail dot com
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-01-28 16:24 UTC (permalink / raw)
  To: gcc-bugs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="UTF-8", Size: 11778 bytes --]

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
The conversion to bt is somewhat fragile ATM, implemented with various
splitters. 

There was discussion to represent bit-test instructions with its own RTX, with
the intention to generate them from middle-end in a more consistent way.
>From gcc-bugs-return-441767-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Jan 28 16:28:39 2014
Return-Path: <gcc-bugs-return-441767-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 17605 invoked by alias); 28 Jan 2014 16:28:39 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 17583 invoked by uid 48); 28 Jan 2014 16:28:35 -0000
From: "schwab@linux-m68k.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug middle-end/59261] [4.9 regression] FAIL: gcc.dg/vect/bb-slp-26.c -flto -ffat-lto-objects (internal compiler error)
Date: Tue, 28 Jan 2014 16:28:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: middle-end
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords: ice-on-valid-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: schwab@linux-m68k.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P1
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-59261-4-EBKWnalviP@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-59261-4@http.gcc.gnu.org/bugzilla/>
References: <bug-59261-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-01/txt/msg02909.txt.bz2
Content-length: 7578

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59261

--- Comment #4 from Andreas Schwab <schwab@linux-m68k.org> ---
$ gcc/xgcc -B gcc/ ../gcc/testsuite/gcc.dg/vect/bb-slp-26.c -flto
-ffat-lto-objects -ftree-vectorize -fno-vect-cost-model -fno-common -O2 -v
Reading specs from gcc/specs
COLLECT_GCC=gcc/xgcc
COLLECT_LTO_WRAPPER=gcc/lto-wrapper
Target: ia64-suse-linux
Configured with: ../configure --prefix=/usr --build=ia64-suse-linux
--host=ia64-suse-linux --enable-checking=release --enable-shared
--with-system-zlib CFLAGS='-O2 -g' CXXFLAGS='-O2 -g'
Thread model: posix
gcc version 4.9.0 20140128 (experimental) [trunk revision 207160] (GCC) 
COLLECT_GCC_OPTIONS='-B' 'gcc/' '-flto' '-ffat-lto-objects' '-ftree-vectorize'
'-fvect-cost-model=unlimited' '-fno-common' '-O2' '-v'
 gcc/cc1 -quiet -v -iprefix
/usr/local/gcc/gcc-20140128/Build/gcc/../lib/gcc/ia64-suse-linux/4.9.0/
-isystem gcc/include -isystem gcc/include-fixed
../gcc/testsuite/gcc.dg/vect/bb-slp-26.c -quiet -dumpbase bb-slp-26.c -auxbase
bb-slp-26 -O2 -version -flto -ffat-lto-objects -ftree-vectorize
-fvect-cost-model=unlimited -fno-common -o /tmp/ccnI2B5p.s
GNU C (GCC) version 4.9.0 20140128 (experimental) [trunk revision 207160]
(ia64-suse-linux)
        compiled by GNU C version 4.9.0 20140128 (experimental) [trunk revision
207160], GMP version 4.3.2, MPFR version 2.4.2, MPC version 1.0
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory
"/usr/local/gcc/gcc-20140128/Build/gcc/../lib/gcc/ia64-suse-linux/4.9.0/include"
ignoring nonexistent directory
"/usr/local/gcc/gcc-20140128/Build/gcc/../lib/gcc/ia64-suse-linux/4.9.0/include-fixed"
ignoring nonexistent directory
"/usr/local/gcc/gcc-20140128/Build/gcc/../lib/gcc/ia64-suse-linux/4.9.0/../../../../ia64-suse-linux/include"
ignoring nonexistent directory
"/usr/local/gcc/gcc-20140128/Build/gcc/../lib/gcc/../../lib/gcc/ia64-suse-linux/4.9.0/include"
ignoring nonexistent directory
"/usr/local/gcc/gcc-20140128/Build/gcc/../lib/gcc/../../lib/gcc/ia64-suse-linux/4.9.0/include-fixed"
ignoring nonexistent directory
"/usr/local/gcc/gcc-20140128/Build/gcc/../lib/gcc/../../lib/gcc/ia64-suse-linux/4.9.0/../../../../ia64-suse-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 gcc/include
 gcc/include-fixed
 /usr/local/include
 /usr/include
End of search list.
GNU C (GCC) version 4.9.0 20140128 (experimental) [trunk revision 207160]
(ia64-suse-linux)
        compiled by GNU C version 4.9.0 20140128 (experimental) [trunk revision
207160], GMP version 4.3.2, MPFR version 2.4.2, MPC version 1.0
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 9ec120f50573ca1e0b5055cf7d3946d0
COLLECT_GCC_OPTIONS='-B' 'gcc/' '-flto' '-ffat-lto-objects' '-ftree-vectorize'
'-fvect-cost-model=unlimited' '-fno-common' '-O2' '-v'
 gcc/as -v -x -o /tmp/ccIBjE6p.o /tmp/ccnI2B5p.s
GNU assembler version 2.23.1 (ia64-suse-linux) using BFD version (GNU Binutils;
SUSE Linux Enterprise 11) 2.23.1
COMPILER_PATH=gcc/
LIBRARY_PATH=gcc/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-B' 'gcc/' '-flto' '-ffat-lto-objects' '-ftree-vectorize'
'-fvect-cost-model=unlimited' '-fno-common' '-O2' '-v'
 gcc/collect2 -plugin gcc/liblto_plugin.so -plugin-opt=gcc/lto-wrapper
-plugin-opt=-fresolution=/tmp/ccAVXv8p.res -plugin-opt=-pass-through=-lgcc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lunwind
-plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lunwind -flto
-dynamic-linker /lib/ld-linux-ia64.so.2 /usr/lib/crt1.o /usr/lib/crti.o
gcc/crtbegin.o -Lgcc /tmp/ccIBjE6p.o -lgcc --as-needed -lgcc_s -lunwind
--no-as-needed -lc -lgcc --as-needed -lgcc_s -lunwind --no-as-needed
gcc/crtend.o /usr/lib/crtn.o
 gcc/xgcc @/tmp/cc8GnggF.args
Reading specs from gcc/specs
COLLECT_GCC=gcc/xgcc
Target: ia64-suse-linux
Configured with: ../configure --prefix=/usr --build=ia64-suse-linux
--host=ia64-suse-linux --enable-checking=release --enable-shared
--with-system-zlib CFLAGS='-O2 -g' CXXFLAGS='-O2 -g'
Thread model: posix
gcc version 4.9.0 20140128 (experimental) [trunk revision 207160] (GCC) 
COLLECT_GCC_OPTIONS='-c' '-B' 'gcc/' '-ffat-lto-objects' '-ftree-vectorize'
'-fvect-cost-model=unlimited' '-fno-common' '-O2' '-v'
'-fltrans-output-list=/tmp/cceMmjdF.ltrans.out' '-fwpa'
'-fresolution=/tmp/ccAVXv8p.res'
 gcc/lto1 -quiet -dumpbase ccIBjE6p.o -auxbase ccIBjE6p -O2 -version
-ffat-lto-objects -ftree-vectorize -fvect-cost-model=unlimited -fno-common
-fltrans-output-list=/tmp/cceMmjdF.ltrans.out -fwpa
-fresolution=/tmp/ccAVXv8p.res @/tmp/ccDZYbNE
GNU GIMPLE (GCC) version 4.9.0 20140128 (experimental) [trunk revision 207160]
(ia64-suse-linux)
        compiled by GNU C version 4.9.0 20140128 (experimental) [trunk revision
207160], GMP version 4.3.2, MPFR version 2.4.2, MPC version 1.0
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU GIMPLE (GCC) version 4.9.0 20140128 (experimental) [trunk revision 207160]
(ia64-suse-linux)
        compiled by GNU C version 4.9.0 20140128 (experimental) [trunk revision
207160], GMP version 4.3.2, MPFR version 2.4.2, MPC version 1.0
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
COMPILER_PATH=gcc/:gcc/
LIBRARY_PATH=gcc/:gcc/:/lib/:/usr/lib/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-c' '-B' 'gcc/' '-ffat-lto-objects' '-ftree-vectorize'
'-fvect-cost-model=unlimited' '-fno-common' '-O2' '-v'
'-fltrans-output-list=/tmp/cceMmjdF.ltrans.out' '-fwpa'
'-fresolution=/tmp/ccAVXv8p.res'
 gcc/xgcc @/tmp/ccOQeYmF.args
Reading specs from gcc/specs
COLLECT_GCC=gcc/xgcc
Target: ia64-suse-linux
Configured with: ../configure --prefix=/usr --build=ia64-suse-linux
--host=ia64-suse-linux --enable-checking=release --enable-shared
--with-system-zlib CFLAGS='-O2 -g' CXXFLAGS='-O2 -g'
Thread model: posix
gcc version 4.9.0 20140128 (experimental) [trunk revision 207160] (GCC) 
COLLECT_GCC_OPTIONS='-c' '-B' 'gcc/' '-ffat-lto-objects' '-ftree-vectorize'
'-fvect-cost-model=unlimited' '-fno-common' '-O2' '-v'
'-fltrans-output-list=/tmp/cceMmjdF.ltrans.out' '-fltrans' '-o'
'/tmp/cceMmjdF.ltrans0.ltrans.o'
 gcc/lto1 -quiet -dumpbase cceMmjdF.ltrans0.o -auxbase-strip
/tmp/cceMmjdF.ltrans0.ltrans.o -O2 -version -ffat-lto-objects -ftree-vectorize
-fvect-cost-model=unlimited -fno-common
-fltrans-output-list=/tmp/cceMmjdF.ltrans.out -fltrans @/tmp/ccxXeTwH -o
/tmp/cc7D4GAH.s
GNU GIMPLE (GCC) version 4.9.0 20140128 (experimental) [trunk revision 207160]
(ia64-suse-linux)
        compiled by GNU C version 4.9.0 20140128 (experimental) [trunk revision
207160], GMP version 4.3.2, MPFR version 2.4.2, MPC version 1.0
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU GIMPLE (GCC) version 4.9.0 20140128 (experimental) [trunk revision 207160]
(ia64-suse-linux)
        compiled by GNU C version 4.9.0 20140128 (experimental) [trunk revision
207160], GMP version 4.3.2, MPFR version 2.4.2, MPC version 1.0
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
../gcc/testsuite/gcc.dg/vect/bb-slp-26.c: In function ‘main’:
../gcc/testsuite/gcc.dg/vect/bb-slp-26.c:19:14: internal compiler error: in
expand_shift_1, at expmed.c:2315
       dst[0] += A*src[0] + src[stride];
>From gcc-bugs-return-441768-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Jan 28 16:31:32 2014
Return-Path: <gcc-bugs-return-441768-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 22011 invoked by alias); 28 Jan 2014 16:31:31 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 21995 invoked by uid 48); 28 Jan 2014 16:31:28 -0000
From: "schwab@linux-m68k.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug middle-end/59261] [4.9 regression] FAIL: gcc.dg/vect/bb-slp-26.c -flto -ffat-lto-objects (internal compiler error)
Date: Tue, 28 Jan 2014 16:31:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: middle-end
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords: ice-on-valid-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: schwab@linux-m68k.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P1
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: attachments.created
Message-ID: <bug-59261-4-tfWLXMxNcJ@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-59261-4@http.gcc.gnu.org/bugzilla/>
References: <bug-59261-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-01/txt/msg02910.txt.bz2
Content-length: 246

http://gcc.gnu.org/bugzilla/show_bug.cgi?idY261

--- Comment #5 from Andreas Schwab <schwab@linux-m68k.org> ---
Created attachment 31969
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id1969&actioníit
Intermediate files from -save-temps


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (3 preceding siblings ...)
  2014-01-28 16:24 ` ubizjak at gmail dot com
@ 2014-01-28 17:48 ` hjl.tools at gmail dot com
  2014-01-28 17:59 ` hjl.tools at gmail dot com
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 17:48 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #7 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int
__attribute__((noinline))
foo1 (int x, int y)
{
  x &= ~(1 << y);
  return x;
}

we generate

    movl    %esi, %ecx
    movl    $-2, %eax
    roll    %cl, %eax
    andl    %edi, %eax
    ret

I expect

    movl    %edi, %eax
    btr     %esi, %eax
    ret


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (4 preceding siblings ...)
  2014-01-28 17:48 ` hjl.tools at gmail dot com
@ 2014-01-28 17:59 ` hjl.tools at gmail dot com
  2014-01-28 18:16 ` hjl.tools at gmail dot com
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 17:59 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #8 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int bar1;
void
__attribute__((noinline))
foo1 (int y)
{
  if (!(bar1 & (1 << y)))
    bar1 |= 1 << y;
}

we generate

    movl    bar1(%rip), %eax
    btl    %edi, %eax
    jc    .L1
    movl    $1, %edx
    movl    %edi, %ecx
    sall    %cl, %edx
    orl    %edx, %eax
    movl    %eax, bar1(%rip)
.L1:
    rep ret

I expect:

    bts     %edi, bar2(%rip)
    ret


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (5 preceding siblings ...)
  2014-01-28 17:59 ` hjl.tools at gmail dot com
@ 2014-01-28 18:16 ` hjl.tools at gmail dot com
  2014-01-28 18:21 ` hjl.tools at gmail dot com
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 18:16 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #9 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int bar1;
void
__attribute__((noinline))
foo1 (int y)
{
  if (!(bar1 & (1 << y)))
    {
      bar1 |= 1 << y;
      xxx1 ();
    }
}

we generate

    .cfi_startproc
    movl    bar1(%rip), %eax
    btl    %edi, %eax
    jnc    .L5
    rep ret
    .p2align 4,,10
    .p2align 3
.L5:
    movl    $1, %edx
    movl    %edi, %ecx
    sall    %cl, %edx
    orl    %edx, %eax
    movl    %eax, bar1(%rip)
    jmp    xxx1

I expect

    bts %edi, bar2(%rip)
    jc .L7
    jmp    xxx2
.L8:
    .p2align 4,,10
    .p2align 3
.L7:
    rep ret


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (6 preceding siblings ...)
  2014-01-28 18:16 ` hjl.tools at gmail dot com
@ 2014-01-28 18:21 ` hjl.tools at gmail dot com
  2014-01-28 18:22 ` hjl.tools at gmail dot com
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 18:21 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #10 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int bar1;
void
__attribute__((noinline))
foo1 (int y)
{
  if ((bar1 & (1 << y)))
    {
      bar1 &= ~(1 << y);
      xxx1 ();
    }
}

we generate

    movl    bar1(%rip), %eax
    btl    %edi, %eax
    jc    .L5
    rep ret
    .p2align 4,,10
    .p2align 3
.L5:
    movl    $-2, %edx
    movl    %edi, %ecx
    roll    %cl, %edx
    andl    %edx, %eax
    movl    %eax, bar1(%rip)
    jmp    xxx1

I expect
    btr %edi, bar2(%rip)
    jnc .L7
    jmp    xxx2
.L8:
    .p2align 4,,10
    .p2align 3
.L7:
    rep ret


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (7 preceding siblings ...)
  2014-01-28 18:21 ` hjl.tools at gmail dot com
@ 2014-01-28 18:22 ` hjl.tools at gmail dot com
  2014-01-28 18:44 ` ubizjak at gmail dot com
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 18:22 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> ---
For

int bar1;
void
__attribute__((noinline))
foo1 (int y)
{
  if ((bar1 & (1 << y)))
    bar1 &= ~(1 << y);
}

we generate

    .cfi_startproc
    movl    bar1(%rip), %eax
    btl    %edi, %eax
    jnc    .L1
    movl    $-2, %edx
    movl    %edi, %ecx
    roll    %cl, %edx
    andl    %edx, %eax
    movl    %eax, bar1(%rip)
.L1:
    rep ret

I expect

    btr %edi, bar2(%rip)
    ret


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (8 preceding siblings ...)
  2014-01-28 18:22 ` hjl.tools at gmail dot com
@ 2014-01-28 18:44 ` ubizjak at gmail dot com
  2014-01-28 18:47 ` ubizjak at gmail dot com
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-01-28 18:44 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #13 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to H.J. Lu from comment #8)
> 
> I expect:
> 
> 	bts     %edi, bar2(%rip)

Did you see Comment #3?
>From gcc-bugs-return-441790-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Jan 28 18:46:41 2014
Return-Path: <gcc-bugs-return-441790-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 23540 invoked by alias); 28 Jan 2014 18:46:41 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 23281 invoked by uid 48); 28 Jan 2014 18:46:37 -0000
From: "jason at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/58701] [4.9 Regression] [c++11] ICE initializing member of static union
Date: Tue, 28 Jan 2014 18:46:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords: ice-on-invalid-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: jason at gcc dot gnu.org
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P2
X-Bugzilla-Assigned-To: jason at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status assigned_to
Message-ID: <bug-58701-4-WvjmR3wItb@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-58701-4@http.gcc.gnu.org/bugzilla/>
References: <bug-58701-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-01/txt/msg02932.txt.bz2
Content-length: 374

http://gcc.gnu.org/bugzilla/show_bug.cgi?idX701

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jason at gcc dot gnu.org


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (9 preceding siblings ...)
  2014-01-28 18:44 ` ubizjak at gmail dot com
@ 2014-01-28 18:47 ` ubizjak at gmail dot com
  2014-01-28 22:21 ` hjl.tools at gmail dot com
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: ubizjak at gmail dot com @ 2014-01-28 18:47 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #14 from Uroš Bizjak <ubizjak at gmail dot com> ---
From i386.md:

;; %%% bts, btr, btc, bt.
;; In general these instructions are *slow* when applied to memory,
;; since they enforce atomic operation.  When applied to registers,
;; it depends on the cpu implementation.  They're never faster than
;; the corresponding and/ior/xor operations, so with 32-bit there's
;; no point.  But in 64-bit, we can't hold the relevant immediates
;; within the instruction itself, so operating on bits in the high
;; 32-bits of a register becomes easier.
;;
;; These are slow on Nocona, but fast on Athlon64.  We do require the use
;; of btrq and btcq for corner cases of post-reload expansion of absdf and
;; negdf respectively, so they can never be disabled entirely.
>From gcc-bugs-return-441792-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Jan 28 18:48:53 2014
Return-Path: <gcc-bugs-return-441792-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 28019 invoked by alias); 28 Jan 2014 18:48:53 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 27926 invoked by uid 48); 28 Jan 2014 18:48:49 -0000
From: "jason at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/59916] [4.9 Regression] constructors and destructors can cause "control reaches end of non-void function" warnings with -Os
Date: Tue, 28 Jan 2014 18:48:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c++
X-Bugzilla-Version: 4.9.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: jason at gcc dot gnu.org
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: cc
Message-ID: <bug-59916-4-RQ0rIQP5jg@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-59916-4@http.gcc.gnu.org/bugzilla/>
References: <bug-59916-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-01/txt/msg02934.txt.bz2
Content-length: 529

http://gcc.gnu.org/bugzilla/show_bug.cgi?idY916

Jason Merrill <jason at gcc dot gnu.org> changed:

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

--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #2)
>   <retval> = B::B (this, 0, __vtt_parm);

That assigns to the RESULT_DECL, which should count as a return.


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (10 preceding siblings ...)
  2014-01-28 18:47 ` ubizjak at gmail dot com
@ 2014-01-28 22:21 ` hjl.tools at gmail dot com
  2014-01-29  0:20 ` hjl.tools at gmail dot com
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-28 22:21 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #15 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Uroš Bizjak from comment #14)
> From i386.md:
> 
> ;; %%% bts, btr, btc, bt.
> ;; In general these instructions are *slow* when applied to memory,
> ;; since they enforce atomic operation.  When applied to registers,
> ;; it depends on the cpu implementation.  They're never faster than
> ;; the corresponding and/ior/xor operations, so with 32-bit there's
> ;; no point.  But in 64-bit, we can't hold the relevant immediates
> ;; within the instruction itself, so operating on bits in the high
> ;; 32-bits of a register becomes easier.
> ;;

BTx with memory operand are slow, but they have smaller code
sizes.  We can optimize well for register operand as the first
step.
>From gcc-bugs-return-441812-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Jan 28 22:29:36 2014
Return-Path: <gcc-bugs-return-441812-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 29423 invoked by alias); 28 Jan 2014 22:29:35 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 29400 invoked by uid 48); 28 Jan 2014 22:29:31 -0000
From: "janus at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/59941] [4.7 Regression] [OOP] ICE with polymorphic types
Date: Tue, 28 Jan 2014 22:29:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: fortran
X-Bugzilla-Version: 4.7.4
X-Bugzilla-Keywords: ice-on-valid-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: janus at gcc dot gnu.org
X-Bugzilla-Status: ASSIGNED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: janus at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-59941-4-NKXTF5OHvD@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-59941-4@http.gcc.gnu.org/bugzilla/>
References: <bug-59941-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-01/txt/msg02954.txt.bz2
Content-length: 232

http://gcc.gnu.org/bugzilla/show_bug.cgi?idY941

--- Comment #13 from janus at gcc dot gnu.org ---
(In reply to janus from comment #12)
> Here is a more lightweight fix (pretty much straightforward):

... and regtesting cleanly.


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (11 preceding siblings ...)
  2014-01-28 22:21 ` hjl.tools at gmail dot com
@ 2014-01-29  0:20 ` hjl.tools at gmail dot com
  2014-01-29  0:23 ` hjl.tools at gmail dot com
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-29  0:20 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #16 from H.J. Lu <hjl.tools at gmail dot com> ---
I couldn't get GCC to use those BT patterns:

(define_insn "*btsq"
  [(set (zero_extract:DI (match_operand:DI 0 "register_operand" "+r")
                         (const_int 1)
                         (match_operand:DI 1 "const_0_to_63_operand"))
        (const_int 1))
   (clobber (reg:CC FLAGS_REG))]
  "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
  "bts{q}\t{%1, %0|%0, %1}"
  [(set_attr "type" "alu1")
   (set_attr "prefix_0f" "1")
   (set_attr "mode" "DI")])

(define_insn "*btrq"
  [(set (zero_extract:DI (match_operand:DI 0 "register_operand" "+r")
                         (const_int 1)
                         (match_operand:DI 1 "const_0_to_63_operand"))
        (const_int 0))
   (clobber (reg:CC FLAGS_REG))]
  "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
  "btr{q}\t{%1, %0|%0, %1}"
  [(set_attr "type" "alu1")
   (set_attr "prefix_0f" "1")
   (set_attr "mode" "DI")])

(define_insn "*btcq"
  [(set (zero_extract:DI (match_operand:DI 0 "register_operand" "+r")
                         (const_int 1)
                         (match_operand:DI 1 "const_0_to_63_operand"))
        (not:DI (zero_extract:DI (match_dup 0) (const_int 1) (match_dup 1))))
   (clobber (reg:CC FLAGS_REG))]
  "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
  "btc{q}\t{%1, %0|%0, %1}"
  [(set_attr "type" "alu1")
   (set_attr "prefix_0f" "1")
   (set_attr "mode" "DI")])


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (12 preceding siblings ...)
  2014-01-29  0:20 ` hjl.tools at gmail dot com
@ 2014-01-29  0:23 ` hjl.tools at gmail dot com
  2014-01-29 17:58 ` hjl.tools at gmail dot com
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-29  0:23 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #17 from H.J. Lu <hjl.tools at gmail dot com> ---
Created attachment 31974
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31974&action=edit
A micro-benchmark for BTS with register

BTS with register operand is about 7-20% faster on Silvermont
an Haswell.


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (13 preceding siblings ...)
  2014-01-29  0:23 ` hjl.tools at gmail dot com
@ 2014-01-29 17:58 ` hjl.tools at gmail dot com
  2014-01-29 20:39 ` hjl.tools at gmail dot com
  2021-08-15  5:47 ` pinskia at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-29 17:58 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #31974|0                           |1
        is obsolete|                            |

--- Comment #18 from H.J. Lu <hjl.tools at gmail dot com> ---
Created attachment 31983
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31983&action=edit
Micro-benchmark for bt, btr, bts

These micro-benchmark for bt, btr, bts show
that BTx with register operand is 8 to 30%
faster on Sandy Bride, Ivy Bridge, Haswell
and Silvermont.


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (14 preceding siblings ...)
  2014-01-29 17:58 ` hjl.tools at gmail dot com
@ 2014-01-29 20:39 ` hjl.tools at gmail dot com
  2021-08-15  5:47 ` pinskia at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: hjl.tools at gmail dot com @ 2014-01-29 20:39 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59968

--- Comment #19 from H.J. Lu <hjl.tools at gmail dot com> ---
For

---
int
foo1 (int x, int y)
{
  x &= 1 << y;
  return x != 0;
}
---

combine fails to try

(set (reg:CCZ 17 flags)
    (compare:CCZ (and:SI (lshiftrt:SI (reg/v:SI 88 [ x ])
                (subreg:QI (reg/v:SI 89 [ y ]) 0)) 
            (const_int 1 [0x1]))
        (const_int 0 [0])))
(set (reg:SI 94 [ D.1754 ])
    (ne:SI (reg:CCZ 17 flags)
        (const_int 0 [0])))

which can be turned into

(set (reg:CCC 17 flags)
    (compare:CCC (and:SI (lshiftrt:SI (reg/v:SI 88 [ x ])
                (subreg:QI (reg/v:SI 89 [ y ]) 0)) 
            (const_int 1 [0x1]))
        (const_int 0 [0])))
(set (reg:SI 94 [ D.1754 ])
    (ne:SI (reg:CCC 17 flags)
        (const_int 0 [0])))


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

* [Bug target/59968] Unused BT patterns
  2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
                   ` (15 preceding siblings ...)
  2014-01-29 20:39 ` hjl.tools at gmail dot com
@ 2021-08-15  5:47 ` pinskia at gcc dot gnu.org
  16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-08-15  5:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #20 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think most of these have been fixed.  For an example comment #19 was fixed in
r12-1525

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

end of thread, other threads:[~2021-08-15  5:47 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-28 14:38 [Bug target/59968] New: Unused BT patterns hjl.tools at gmail dot com
2014-01-28 16:12 ` [Bug target/59968] " hjl.tools at gmail dot com
2014-01-28 16:18 ` hjl.tools at gmail dot com
2014-01-28 16:20 ` ubizjak at gmail dot com
2014-01-28 16:24 ` ubizjak at gmail dot com
2014-01-28 17:48 ` hjl.tools at gmail dot com
2014-01-28 17:59 ` hjl.tools at gmail dot com
2014-01-28 18:16 ` hjl.tools at gmail dot com
2014-01-28 18:21 ` hjl.tools at gmail dot com
2014-01-28 18:22 ` hjl.tools at gmail dot com
2014-01-28 18:44 ` ubizjak at gmail dot com
2014-01-28 18:47 ` ubizjak at gmail dot com
2014-01-28 22:21 ` hjl.tools at gmail dot com
2014-01-29  0:20 ` hjl.tools at gmail dot com
2014-01-29  0:23 ` hjl.tools at gmail dot com
2014-01-29 17:58 ` hjl.tools at gmail dot com
2014-01-29 20:39 ` hjl.tools at gmail dot com
2021-08-15  5:47 ` pinskia 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).