This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/47272] New: In addition to the bug uncovered in 42751, gcc can't bootstrap using --with-cpu=power7
- From: "meissner at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 12 Jan 2011 20:59:29 +0000
- Subject: [Bug target/47272] New: In addition to the bug uncovered in 42751, gcc can't bootstrap using --with-cpu=power7
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47272
Summary: In addition to the bug uncovered in 42751, gcc can't
bootstrap using --with-cpu=power7
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: target
AssignedTo: meissner@gcc.gnu.org
ReportedBy: meissner@gcc.gnu.org
CC: bergner@vnet.ibm.com
Depends on: 42751
Host: powerpc64-linux
Target: powerpc64-linux
Build: powerpc64-linux
The VSX support changed to use the VSX form of the instruction if both VSX and
Altivec forms existed. Unfortunately, there are differences between the
Altivec memory references instructions (LVX/STVX) and the VSX memory reference
instructions (LXVW4X/STXVW4X). In particular, the Altivec memory instructions
ignore the bottom 3 bits of the address field, and the VSX instructions do not.
The altivec code in libcpp/lex.c was coded such that it knew about ignoring
the bottom 3 bits of the load.
Thus we should modify __builtin_vec_ld and __builtin_vec_st to use the Altivec
versions of the instructions, and provide other builtins that can use either
the altivec or VSX memory instructions, depending on the switches used.
In addition, during testing, I discovered that __builtin_vec_ld and
__builtin_vec_st don't support the vector double and vector long long types
added with VSX.