vec_xl and vec_xst intrinsics are broken in GCC 6 for ppc64 and ppc64el

Bug #1661051 reported by bugproxy
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gcc-6 (Ubuntu)
Fix Released
High
Matthias Klose

Bug Description

---Problem Description---
Please apply the patch from revision 245075 of the FSF gcc-6-branch as a bug fix for upstream bug PR79268, wherever GCC 6 is available. Without the fix, wrong code will be generated in some cases for the vec_xl and vec_xst intrinsic functions, which provide access to unaligned vector load and store instructions on POWER8 and later. The bug also shows up as a compile-time error when using a pointer-to-vector-pixel type as an argument to vec_xl or vec_xst. This latter failure mode has been seen in the field. A workaround for all failure modes is to replace vec_xl by vec_vsx_ld, and replace vex_xst by vec_vsx_st, but of course this is an invasive solution, and a fix to the compiler is preferred. Thank you!

---Steps to Reproduce---
 #include <altivec.h>
extern vector pixel vp, *vpp;
...
vp = vec_xl (0, vpp);

Bill Schmidt (<email address hidden>), Peter Bergner (<email address hidden>)

bugproxy (bugproxy)
tags: added: architecture-ppc64le bugnameltc-151137 severity-high targetmilestone-inin1704
Changed in ubuntu:
assignee: nobody → Taco Screen team (taco-screen-team)
affects: ubuntu → gcc-4.9 (Ubuntu)
Revision history for this message
Michael Hohnbaum (hohnbaum) wrote : Re: [Bug 1661051] [NEW] vec_xl and vec_xst intrinsics are broken in GCC 6 for ppc64 and ppc64el

Steve,

This one looks like it is Foundations.

                     Michael

On 02/01/2017 09:29 AM, Launchpad Bug Tracker wrote:
> bugproxy (bugproxy) has assigned this bug to you for Ubuntu:
>
> ---Problem Description---
> Please apply the patch from revision 245075 of the FSF gcc-6-branch as a bug fix for upstream bug PR79268, wherever GCC 6 is available. Without the fix, wrong code will be generated in some cases for the vec_xl and vec_xst intrinsic functions, which provide access to unaligned vector load and store instructions on POWER8 and later. The bug also shows up as a compile-time error when using a pointer-to-vector-pixel type as an argument to vec_xl or vec_xst. This latter failure mode has been seen in the field. A workaround for all failure modes is to replace vec_xl by vec_vsx_ld, and replace vex_xst by vec_vsx_st, but of course this is an invasive solution, and a fix to the compiler is preferred. Thank you!
>
> ---Steps to Reproduce---
> #include <altivec.h>
> extern vector pixel vp, *vpp;
> ...
> vp = vec_xl (0, vpp);
>
> Bill Schmidt (<email address hidden>), Peter Bergner (<email address hidden>)
>
> ** Affects: ubuntu
> Importance: Undecided
> Assignee: Taco Screen team (taco-screen-team)
> Status: New
>
>
> ** Tags: architecture-ppc64le bugnameltc-151137 severity-high targetmilestone-inin1704

--
Michael Hohnbaum
OIL Program Manager
Power (ppc64el) Development Project Manager
Canonical, Ltd.

affects: gcc-4.9 (Ubuntu) → gcc-6 (Ubuntu)
Steve Langasek (vorlon)
Changed in gcc-6 (Ubuntu):
assignee: Taco Screen team (taco-screen-team) → Matthias Klose (doko)
Changed in gcc-6 (Ubuntu):
importance: Undecided → High
Matthias Klose (doko)
Changed in gcc-6 (Ubuntu):
status: New → In Progress
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gcc-6 - 6.3.0-8ubuntu1

---------------
gcc-6 (6.3.0-8ubuntu1) zesty; urgency=medium

  * Merge with Debian; remaining changes:
    - Build from upstream sources.

gcc-6 (6.3.0-8) unstable; urgency=medium

  * Update to SVN 20170221 (r245621) from the gcc-6-branch.
    - Fix ICEs PR middle-end/79537, PR sanitizer/79558, PR middle-end/79536.
  * Fix ecj1 symlink for gcj cross compiler packages. Addresses: #855640.
  * Bump binutils version requirement.

gcc-6 (6.3.0-7) unstable; urgency=medium

  * Update to SVN 20170218 (r245414) from the gcc-6-branch.
    - Fix PR target/78945 (ARM), PR translation/79397,
      PR tree-optimization/71824, PR tree-optimization/71824,
      PR tree-optimization/77318, PR target/71017 (x86), PR c++/78897,
      PR c++/78908, PR c++/79296 (closes: #854692), PR sanitizer/79562,
      PR libstdc++/79114, PR libstdc++/59170, PR libstdc++/59161,
      PR libstdc++/72792, PR libstdc++/72792, PR libstdc++/72793,
      PR libstdc++/69321, PR libstdc++/69301, PR libstdc++/79114,
      PR libstdc++/78702, PR libstdc++/78134, PR libstdc++/78273,
      PR c/79431, PR target 79545 (PPC), PR target/76731 (x86), PR c/79428,
      PR tree-optimization/79411, PR c/79431, PR middle-end/79399,
      PR tree-optimization/79338, PR target/79197 (PPC), PR target/79079,
      PR tree-optimization/79267, PR target/79495 (x86), PR c/79471,
      PR c++/79429, PR c/79431, PR c++/79377.
  * Update the Linaro support to the 6.3-2017.02 snapshot.
  * Fix target architecture for sparc non-multilib builds (Adrian Glaubitz).
    Closes: #855197.
  * Bump binutils version requirement.

 -- Matthias Klose <email address hidden> Tue, 21 Feb 2017 15:05:42 +0100

Changed in gcc-6 (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
bugproxy (bugproxy) wrote : Comment bridged from LTC Bugzilla

------- Comment From <email address hidden> 2018-01-17 11:57 EDT-------
Verified against (newer) gcc-6 package. " gcc-6 6.3.0-12ubuntu2 "

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.