public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/65871] bzhi builtin/intrinsic wrongly assumes bzhi instruction doesn't set the ZF flag
Date: Tue, 28 Apr 2015 12:58:00 -0000	[thread overview]
Message-ID: <bug-65871-4-Wf5WgkR6Kw@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-65871-4@http.gcc.gnu.org/bugzilla/>

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

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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ubizjak at gmail dot com

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
Created attachment 35411
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35411&action=edit
Prototype patch for bextr and bzhi

Prototype patch that removes flag checks for bextr and bzhi insns.
>From gcc-bugs-return-484844-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Apr 28 13:06:31 2015
Return-Path: <gcc-bugs-return-484844-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 116522 invoked by alias); 28 Apr 2015 13:06: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 116156 invoked by uid 48); 28 Apr 2015 13:06:26 -0000
From: "nikolay.pakulin at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c/65916] New: Unnecessary floating-point instruction causes runtime exception on PowerPC
Date: Tue, 28 Apr 2015 13:06:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: new
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: c
X-Bugzilla-Version: 4.9.1
X-Bugzilla-Keywords:
X-Bugzilla-Severity: critical
X-Bugzilla-Who: nikolay.pakulin at gmail dot com
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Resolution:
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: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone attachments.created
Message-ID: <bug-65916-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: 2015-04/txt/msg02396.txt.bz2
Content-length: 2333

https://gcc.gnu.org/bugzilla/show_bug.cgi?ide916

            Bug ID: 65916
           Summary: Unnecessary floating-point instruction causes runtime
                    exception on PowerPC
           Product: gcc
           Version: 4.9.1
            Status: UNCONFIRMED
          Severity: critical
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nikolay.pakulin at gmail dot com
  Target Milestone: ---

Created attachment 35412
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id5412&actioníit
Test case to reproduce the issue

Writing 64-bit integers to memory on 32-bit PPC involves floating point
register FP0.  When floating-point support is disabled (bit FP is cleared in
MSR register) the generated code leads to exception "FP unavailable interrupt".

The test case compiled by GCC cross compiler running on x86_64 Linux.

powerpc-elf-gcc -S -m32 -mcpuå00mc uint64.c


-- uint64.c --
typedef unsigned long long u64;

u64 globvar;

void f(u64 arg) {
  globvar = arg;
}
-- /uint64.c --

-- Generated ASM --
f:
        stwu 1,-32(1)
        stw 31,28(1)
        mr 31,1
        stw 3,8(31)     # Copies 'arg' to the temporary on the stack
        stw 4,12(31)    #
        lis 9,globvar@ha
        la 9,globvar@l(9)
        lfd 0,8(31)     # Loads the temporary to FP0 -- exception!
        stfd 0,0(9)     # Store FP0 to memory
        addi 11,31,32
        lwz 31,-4(11)
        mr 1,11
        blr
-- End of Generated ASM --

== GCC specs =Using built-in specs.
COLLECT_GCC=powerpc-elf-gcc
COLLECT_LTO_WRAPPER=/opt/crosstools/powerpc-elf-4.9.1-Linux-x86_64/bin/../libexec/gcc/powerpc-elf/4.9.1/lto-wrapper
Target: powerpc-elf
Configured with: ../gcc-4.9.1/configure --target=powerpc-elf
--prefix=/home/geist/svn/toolchains/powerpc-elf-4.9.1-Linux-x86_64
--enable-languages=c,c++ --disable-werror
Thread model: single
gcc version 4.9.1 (GCC)
== End of GCC specs =
The workaround is to compile with optimization turned on. With -O switch GCC
produces ASM without FP0:

powerpc-elf-gcc -S -m32 -mcpuå00mc -O uint64.c
-- Generated optimized ASM --
f:
        lis 9,globvar@ha
        la 9,globvar@l(9)
        stw 3,0(9)        # direct write to the destination
        stw 4,4(9)        #
        blr
-- End of generated optimized ASM --


       reply	other threads:[~2015-04-28 12:58 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-65871-4@http.gcc.gnu.org/bugzilla/>
2015-04-28 12:58 ` ubizjak at gmail dot com [this message]
2015-04-28 13:06 ` ubizjak at gmail dot com
2015-04-28 16:29 ` jamrial at gmail dot com
2015-04-29 18:53 ` uros at gcc dot gnu.org
2015-04-29 20:59 ` uros at gcc dot gnu.org
2015-05-04  3:03 ` jamrial at gmail dot com
2015-05-05  4:36 ` uros at gcc dot gnu.org
2015-06-18 23:20 ` jamrial at gmail dot com
2015-06-21  9:57 ` ubizjak at gmail dot com
2015-06-22 13:55 ` uros at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-65871-4-Wf5WgkR6Kw@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).