[Bug c++/70761] New: C++ ICE on ppc64le and ppc64 with -m64

2016-04-22 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70761

Bug ID: 70761
   Summary: C++ ICE on ppc64le and ppc64 with -m64
   Product: gcc
   Version: 5.3.1
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
  Target Milestone: ---
Target: ppc64le, ppc64

Created attachment 38326
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38326&action=edit
Reduced testcase for ICE on ppc64/ppc64le

On ppc64le (Debian testing, g++ 5.3.1-14)

$ g++-5 -O2 testcase.cpp 
testcase.cpp: In function ‘void x36()’:
testcase.cpp:150:1: error: unable to generate reloads for:
 }
 ^
(jump_insn 10 5 11 2 (parallel [
(set (pc)
(if_then_else (eq (reg:DI 3 3)
(const_int 1 [0x1]))
(label_ref:DI 20)
(pc)))
(set (reg:DI 63 31 [orig:157 D.3107 ] [157])
(plus:DI (reg:DI 3 3)
(const_int -1 [0x])))
(clobber (scratch:CC))
(clobber (scratch:DI))
]) testcase.cpp:132 794 {*ctrdi_internal5}
 (expr_list:REG_DEAD (reg:DI 3 3)
(int_list:REG_BR_PROB 4877 (nil)))
 -> 20)
testcase.cpp:150:1: internal compiler error: in find_reloads, at reload.c:3862
0x102c425b _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../src/gcc/rtl-error.c:110
0x109dcd8f find_reloads(rtx_insn*, int, int, int, short*)
../../src/gcc/reload.c:3862
0x109f03a3 calculate_needs_all_insns
../../src/gcc/reload1.c:1540
0x109f03a3 reload(rtx_insn*, int)
../../src/gcc/reload1.c:1028
0x10903027 do_reload
../../src/gcc/ira.c:5454
0x10903027 execute
../../src/gcc/ira.c:5613
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See  for instructions.

On powerpc32 (Debian testing, g++ 5.3.1-14, only when -m64 is added)
$ g++-5 -m64 -O2 testcase.cpp 
testcase.cpp: In function ‘void x36()’:
testcase.cpp:150:1: error: unable to generate reloads for:
 }
 ^
(jump_insn 10 5 11 2 (parallel [
(set (pc)
(if_then_else (eq (reg:DI 3 3)
(const_int 1 [0x1]))
(label_ref:DI 20)
(pc)))
(set (reg:DI 63 31 [orig:157 D.3085 ] [157])
(plus:DI (reg:DI 3 3)
(const_int -1 [0x])))
(clobber (scratch:CC))
(clobber (scratch:DI))
]) testcase.cpp:132 794 {*ctrdi_internal5}
 (expr_list:REG_DEAD (reg:DI 3 3)
(int_list:REG_BR_PROB 4877 (nil)))
 -> 20)
testcase.cpp:150:1: internal compiler error: in find_reloads, at reload.c:3862
0x1027c933 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../src/gcc/rtl-error.c:110
0x108ecbf7 find_reloads(rtx_insn*, int, int, int, short*)
../../src/gcc/reload.c:3862
0x108feefb calculate_needs_all_insns
../../src/gcc/reload1.c:1540
0x108feefb reload(rtx_insn*, int)
../../src/gcc/reload1.c:1028
0x1082d9db do_reload
../../src/gcc/ira.c:5454
0x1082d9db execute
../../src/gcc/ira.c:5613
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See  for instructions.

Reduced testcase attached, same for both architectures

[Bug target/70963] New: vec_cts/vec_ctf intrinsics produce wrong results for 64-bit floating point

2016-05-05 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70963

Bug ID: 70963
   Summary: vec_cts/vec_ctf intrinsics produce wrong results for
64-bit floating point
   Product: gcc
   Version: 5.3.1
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
  Target Milestone: ---
  Host: powerpc64le-linux-gnu
Target: powerpc64le-linux-gnu
 Build: powerpc64le-linux-gnu

Created attachment 38420
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38420&action=edit
small test program to verify vec_cts/vec_ctf working on doubles

I've noticed some tests in Eigen failing for VSX 64-bit doubles code, when the
algorithm looked perfectly normal. Further investigation -and comparison with
direct output using same inputs from an SSE test program, showed that the
conversion to integer yielded 0 results in the case of VSX (vec_cts basically
returned 0 vectors). I've written a small test case that verifies this on both
big/little endian VSX-capable systems (compiled with -m64 -mvsx). When using
the intrinsic the result is wrong, when using the inline asm version, it works
as expected. I could not test it in a more recent gcc so it may well be fixed,
however it would be great if this would be backported to gcc 5.

Some asm output follows from test program (attached):

vec_cts:
166c:   60 67 00 f0 xvcvdpsxds vs0,vs12
1670:   50 02 00 f0 xxswapd vs0,vs0


asm:
1674:   51 02 00 f0 xxswapd vs32,vs0
1678:   60 07 00 f0 xvcvdpsxds vs0,vs0
167c:   56 02 00 f0 xxswapd vs0,vs32


vec_ctf:
16f8:   50 02 00 f0 xxswapd vs0,vs0
16fc:   e0 07 00 f0 xvcvsxddp vs0,vs0
1700:   50 02 00 f0 xxswapd vs0,vs0

asm:
16f8:   51 02 00 f0 xxswapd vs32,vs0
16fc:   e0 07 00 f0 xvcvsxddp vs0,vs0
1700:   56 02 00 f0 xxswapd vs0,vs32

[Bug target/70963] vec_cts/vec_ctf intrinsics produce wrong results for 64-bit floating point

2016-05-09 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70963

--- Comment #5 from Konstantinos Margaritis  ---
Ack, thanks for the heads up on VSX registers, it does print more reasonable
results now.

[Bug target/82317] New: error "'__builtin_s390_vec_min' matching variant requires z14 or higher" for __vector(2) double when it should work on -march=z13 as well

2017-09-24 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82317

Bug ID: 82317
   Summary: error "'__builtin_s390_vec_min' matching variant
requires z14 or higher" for __vector(2) double when it
should work on -march=z13 as well
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
      Reporter: markos at freevec dot org
  Target Milestone: ---
  Host: s390x-ibm-linux-gnu
Target: s390x-ibm-linux-gnu
 Build: s390x-ibm-linux-gnu

While trying to extend SIMD code that worked on z13 to z14, I ran into this
error (using latest gcc snapshot:

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/lib64/gcc/s390x-ibm-linux-gnu/8.0.0/lto-wrapper
Target: s390x-ibm-linux-gnu
Configured with: ../configure --prefix=/usr/local --libdir=/usr/local/lib64
--libexecdir=/usr/local/lib64 --enable-languages=c,c++
--enable-checking=release --enable-ssp --disable-libssp --disable-libvtv
--disable-plugin --disable-libgcj --with-system-zlib --enable-__cxa_atexit
--enable-linker-build-id --enable-linux-futex --without-system-libunwind
--with-tune=z13 --with-arch=z13 --with-long-double-128 --enable-decimal-float
Thread model: posix
gcc version 8.0.0 20170924 (experimental) (GCC)

$ /usr/local/bin/g++-pedantic -Wall -Wextra -Wundef -Wcast-align
-Wchar-subscripts -Wnon-virtual-dtor -Wunused-local-typedefs -Wpointer-arith
-Wwrite-strings -Wformat-security -Wlogical-op -Wdouble-promotion -Wno-psabi
-Wno-variadic-macros -Wno-long-long -fno-check-new -fno-common
-fstrict-aliasing -ansi -march=z13 -mzvector -std=c++11 -g
-I/srv/data/eigen.mine/build/test -I/srv/data/eigen.mine/test
-I/srv/data/eigen.mine -I/srv/data/eigen.mine/build
-DEIGEN_TEST_MAX_SIZE=320 -DEIGEN_TEST_FUNC=packetmath -DEIGEN_FAST_MATH=1
-DEIGEN_TEST_PART_1=1 -o CMakeFiles/packetmath_1.dir/packetmath.cpp.o -c
/srv/data/eigen.mine/test/packetmath.cpp
In file included from /srv/data/eigen.mine/Eigen/Core:426:0,
 from /srv/data/eigen.mine/Eigen/QR:11,
 from /srv/data/eigen.mine/test/main.h:259,
 from /srv/data/eigen.mine/test/packetmath.cpp:11:
/srv/data/eigen.mine/Eigen/src/Core/arch/ZVector/PacketMath.h: In function
'Packet Eigen::internal::pmin(const Packet&, const Packet&) [with Packet =
__vector(2) double]':
/srv/data/eigen.mine/Eigen/src/Core/arch/ZVector/PacketMath.h:425:115: error:
'__builtin_s390_vec_min' matching variant requires z14 or higher
 template<> EIGEN_STRONG_INLINE Packet2d pmin(const Packet2d& a,
const Packet2d& b) { return vec_min(a, b); }

Packet2d is a typedef of __vector double.

This code is compiled with both -march=z13 and z14 options as I need to keep
compatibility with existing z13 systems and it compiles fine with an older
compiler (gcc 6), meaning vec_min() is available on z13 for double vectors. So
either the intrinsic name has changed in latest version (gcc 8 snapshot) or
this is a bug?

Thanks

[Bug target/82322] New: vec_ceil/vec_floor/vec_round intrincics do not work for gcc 8, need __builtin_s390_vfidb.

2017-09-25 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82322

Bug ID: 82322
   Summary: vec_ceil/vec_floor/vec_round intrincics do not work
for gcc 8, need __builtin_s390_vfidb.
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
  Target Milestone: ---
  Host: s390x-ibm-linux-gnu
Target: s390x-ibm-linux-gnu
 Build: s390x-ibm-linux-gnu

Created attachment 42233
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=42233&action=edit
testcase  demonstrating compiler error for vec_round, etc.

When trying to compile the attached source with gcc 8.0.0:

> g++ -mzvector -march=z14 /home/markos/Development/zvectortest.cpp -o 
> /home/markos/Development/zvectortest
In file included from /home/markos/Development/zvectortest.cpp:1:0:
/home/markos/Development/zvectortest.cpp: In function 'Packet2d pround(const
Packet2d&)':
/home/markos/Development/zvectortest.cpp:6:45: error: '__builtin_s390_vfi' was
not declared in this scope
 Packet2d pround(const Packet2d& a) { return vec_round(a); }
 ^
/home/markos/Development/zvectortest.cpp:6:45: note: suggested alternative:
'__builtin_s390_vfidb'
/home/markos/Development/zvectortest.cpp: In function 'Packet2d pceil(const
Packet2d&)':
/home/markos/Development/zvectortest.cpp:7:45: error: '__builtin_s390_vfi' was
not declared in this scope
 Packet2d pceil(const  Packet2d& a) { return vec_ceil(a); }
 ^~~~
/home/markos/Development/zvectortest.cpp:7:45: note: suggested alternative:
'__builtin_s390_vfidb'
/home/markos/Development/zvectortest.cpp: In function 'Packet2d pfloor(const
Packet2d&)':
/home/markos/Development/zvectortest.cpp:8:45: error: '__builtin_s390_vfi' was
not declared in this scope
 Packet2d pfloor(const Packet2d& a) { return vec_floor(a); }
 ^
/home/markos/Development/zvectortest.cpp:8:45: note: suggested alternative:
'__builtin_s390_vfidb'

Same result with -march=z13. Works fine with g++-6.

However, it worked with both compilers if I add the code with #ifdef __GNUC__ <
8 and use helper defines using __builtin_s390_vfidb() intrinsic.

[Bug target/82322] [7/8 Regression] vec_ceil/vec_floor/vec_round intrincics do not work for gcc 8, need __builtin_s390_vfidb

2017-10-07 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82322

Konstantinos Margaritis  changed:

   What|Removed |Added

 Status|RESOLVED|VERIFIED

--- Comment #4 from Konstantinos Margaritis  ---
Confirmed that the bug is fixed.

[Bug target/82317] [8 Regression] "'__builtin_s390_vec_min' matching variant requires z14 or higher" for __vector(2) double when it should work on -march=z13 as well

2017-10-07 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82317

Konstantinos Margaritis  changed:

   What|Removed |Added

 Status|RESOLVED|VERIFIED

--- Comment #4 from Konstantinos Margaritis  ---
Confirmed that the bug is fixed.

[Bug target/82463] New: vec_madd does not map to __builtin_s390_vfmasb for z14

2017-10-07 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82463

Bug ID: 82463
   Summary: vec_madd does not map to __builtin_s390_vfmasb for z14
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
  Target Milestone: ---
  Host: s390x-ibm-linux-gnu
Target: s390x-ibm-linux-gnu
 Build: s390x-ibm-linux-gnu

Trying to compile the simple test case breaks:

#include 

typedef __vector float Packet4f;

int main() {
Packet4f v1 = { 1.0, -1.0, -2.0, 2.0 };
Packet4f v2 = { 2.0,  0.5,  0.1, 0.2 };
Packet4f v0 = { 0.0,  0.0,  0.0, 0.0 };

Packet4f prod = vec_madd(v1, v2, v0);
}

g++ -march=z14 -mzvector zvectortest2.cpp -o zvectortest2
zvectortest2.cpp: In function 'int main()':
zvectortest2.cpp:10:37: error: cannot convert 'Packet4f {aka __vector(4)
float}' to '__vector(2) double' for argument '1' to '__vector(2) double
__builtin_s390_vfmadb(__vector(2) double, __vector(2) double, __vector(2)
double)'
  Packet4f prod = vec_madd(v1, v2, v0);

Changing to __builtin_s390_vfmasb explicitly seems to work.

[Bug target/82464] New: s390x z14: vector float: invalid parameter combination for intrinsic '__builtin_s390_vec_xor'

2017-10-07 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82464

Bug ID: 82464
   Summary: s390x z14: vector float: invalid parameter combination
for intrinsic '__builtin_s390_vec_xor'
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
  Target Milestone: ---
  Host: s390x-ibm-linux-gnu
Target: s390x-ibm-linux-gnu
 Build: s390x-ibm-linux-gnu

In this small testcase:

#include 

typedef __vector float Packet4f;

int main() {
Packet4f v1 = { 1.0, -1.0, -2.0, 2.0 };
Packet4f v2 = { 2.0,  0.5,  0.1, 0.2 };

Packet4f prod = vec_xor(v1, v2);
}

$ g++ -march=z14 -mzvector zvectortest2.cpp -o zvectortest2
zvectortest2.cpp: In function 'int main()':
zvectortest2.cpp:9:32: error: invalid parameter combination for intrinsic
'__builtin_s390_vec_xor'
  Packet4f prod = vec_xor(v1, v2);

However it works with vec_or() intrinsic and others (vec_and, etc), I guess
it's just an ommission.

[Bug target/82463] vec_madd does not map to __builtin_s390_vfmasb for z14

2017-10-07 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82463

Konstantinos Margaritis  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from Konstantinos Margaritis  ---
accidentally pressed submit twice, duplicate of
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82462

*** This bug has been marked as a duplicate of bug 82462 ***

[Bug target/82462] New: vec_madd does not map to __builtin_s390_vfmasb for z14

2017-10-07 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82462

Bug ID: 82462
   Summary: vec_madd does not map to __builtin_s390_vfmasb for z14
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
  Target Milestone: ---
  Host: s390x-ibm-linux-gnu
Target: s390x-ibm-linux-gnu
 Build: s390x-ibm-linux-gnu

Trying to compile the simple test case breaks:

#include 

typedef __vector float Packet4f;

int main() {
Packet4f v1 = { 1.0, -1.0, -2.0, 2.0 };
Packet4f v2 = { 2.0,  0.5,  0.1, 0.2 };
Packet4f v0 = { 0.0,  0.0,  0.0, 0.0 };

Packet4f prod = vec_madd(v1, v2, v0);
}

g++ -march=z14 -mzvector zvectortest2.cpp -o zvectortest2
zvectortest2.cpp: In function 'int main()':
zvectortest2.cpp:10:37: error: cannot convert 'Packet4f {aka __vector(4)
float}' to '__vector(2) double' for argument '1' to '__vector(2) double
__builtin_s390_vfmadb(__vector(2) double, __vector(2) double, __vector(2)
double)'
  Packet4f prod = vec_madd(v1, v2, v0);

Changing to __builtin_s390_vfmasb explicitly seems to work.

--- Comment #1 from Konstantinos Margaritis  ---
*** Bug 82463 has been marked as a duplicate of this bug. ***

[Bug target/82465] New: vec_sqrt() for vector double erroneously fails for z13

2017-10-07 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82465

Bug ID: 82465
   Summary: vec_sqrt() for vector double erroneously fails for z13
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
  Target Milestone: ---
  Host: s390x-ibm-linux-gnu
Target: s390x-ibm-linux-gnu
 Build: s390x-ibm-linux-gnu

The following code:

#include 

int main() {
__vector double v = { 2.0,  1.0 };

__vector double prod = vec_sqrt(v);
}

works for z14 as expected, but fails on z13:

$ g++ -march=z13 -mzvector zvectortest2.cpp -o zvectortest2
zvectortest2.cpp: In function 'int main()':
zvectortest2.cpp:6:35: error: '__vector(4) int
__builtin_s390_vec_sqrt(__vector(4) int)' requires z14 or higher
  __vector double prod = vec_sqrt(v);

I think this is a bug.

[Bug target/82464] s390x z14: vector float: invalid parameter combination for intrinsic '__builtin_s390_vec_xor'

2017-10-09 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82464

--- Comment #4 from Konstantinos Margaritis  ---
Fix confirmed to work.

[Bug target/82465] vec_sqrt() for vector double erroneously fails for z13

2017-10-09 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82465

--- Comment #2 from Konstantinos Margaritis  ---
Fix confirmed to work.

[Bug target/71648] C++ ICE on ppc64 with -m64

2017-10-09 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71648

Konstantinos Margaritis  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Konstantinos Margaritis  ---
verified in both g++ 6 and 7.

[Bug c/63673] New: VSX intrinsic vec_vsx_ld fails to compile with double, maps to wrong instructions with float

2014-10-29 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63673

Bug ID: 63673
   Summary: VSX intrinsic vec_vsx_ld fails to compile with double,
maps to wrong instructions with float
   Product: gcc
   Version: 4.9.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org

Created attachment 33836
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33836&action=edit
failing to compile testcase for vec_vsx_ld using doubles

These are actually two issues, but I'm filing a single bug report as it looks
like they are related.

First the build error, I've created a small failing testcase (also attached):

--
#include 

int main() {
double __attribute__((aligned(16))) d[4] = {0.0, 1.0, 2.0, 3.0 };

vector double v = vec_vsx_ld(8, d); // should load {1.0, 2.0}
}
--

This fails to compile under Debian gcc (4.9.1-19), with the following error:

$ gcc vec_vsx_ld_fail.c -c
vec_vsx_ld_fail.c: In function ‘main’:
vec_vsx_ld_fail.c:6:2: error: invalid parameter combination for AltiVec
intrinsic
  vector double v = vec_vsx_ld(4, d); // should load {1.0, 2.0}

Casting d to (float *) makes it compile, but vec_vsx_ld intrinsic definitely
should handle double parameters, so I think this is a bug.

Now the second problem, a similar testcase for float (also attached):
--
#include 

int main() {
float __attribute__((aligned(16))) f[8] = {0.0, 1.0, 2.0, 3.0, 4.0,
5.0, 6.0, 7.0 };

vector float v = vec_vsx_ld(4, f); // should load {1.0, 2.0, 3.0, 4.0}
}
--

This does compile, but the asm output uses the lxvd2x asm instruction, when
according the the ISA, lxvw4x should be used -at least according to my
understanding (page 359, Power ISA 2.07). Asm output also attached.

[Bug c/63673] VSX intrinsic vec_vsx_ld fails to compile with double, maps to wrong instructions with float

2014-10-29 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63673

--- Comment #1 from Konstantinos Margaritis  ---
Created attachment 33837
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33837&action=edit
testcase for vec_vsx_ld using floats


[Bug c/63673] VSX intrinsic vec_vsx_ld fails to compile with double, maps to wrong instructions with float

2014-10-29 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63673

--- Comment #2 from Konstantinos Margaritis  ---
Created attachment 33838
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33838&action=edit
asm output for testcase for vec_vsx_ld using floats


[Bug target/63673] VSX intrinsic vec_vsx_ld fails to compile with double, maps to wrong instructions with float

2014-11-21 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63673

--- Comment #6 from Konstantinos Margaritis  ---
Hi Bill, 

Thanks for the fix in the double * patch. It's listed as a valid option in:
https://gcc.gnu.org/onlinedocs/gcc/PowerPC-AltiVec_002fVSX-Built-in-Functions.html

vector double vec_vsx_ld (int, const double *);

Similarly for vec_vsx_st:

void vec_vsx_st (vector double, int, double *);

Also, thanks for the clarifications for the lxvw4x.


[Bug target/71648] New: C++ ICE on ppc64 with -m64

2016-06-24 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71648

Bug ID: 71648
   Summary: C++ ICE on ppc64 with -m64
   Product: gcc
   Version: 6.1.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: markos at freevec dot org
CC: wschmidt at gcc dot gnu.org
  Target Milestone: ---
  Host: powerpc-linux-gnu
Target: powerpc-linux-gnu
 Build: powerpc-linux-gnu

$ g++-6 -m64 -O2 -c testcase2.cpp 
testcase2.cpp: In function ‘void x33()’:
testcase2.cpp:55:1: error: insn does not satisfy its constraints:
 }
 ^
(insn 40 39 41 2 (set (reg:DI 63 31 [orig:157 _6 ] [157])
(reg:DI 9 9)) testcase2.cpp:44 549 {*movdi_internal64}
 (nil))
testcase2.cpp:55:1: internal compiler error: in extract_constrain_insn, at
recog.c:2190
0x107077ff _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../src/gcc/rtl-error.c:108
0x10707833 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
../../src/gcc/rtl-error.c:119
0x106d5be7 extract_constrain_insn(rtx_insn*)
../../src/gcc/recog.c:2190
0x106da11f copyprop_hardreg_forward_1
../../src/gcc/regcprop.c:774
0x106db59f copyprop_hardreg_forward_bb_without_debug_insn(basic_block_def*)
../../src/gcc/regcprop.c:1152
0x107493bf prepare_shrink_wrap
../../src/gcc/shrink-wrap.c:440
0x107493bf try_shrink_wrapping(edge_def**, bitmap_head*, rtx_insn*)
../../src/gcc/shrink-wrap.c:646
0x104f0c7b thread_prologue_and_epilogue_insns()
../../src/gcc/function.c:6066
0x104f1757 rest_of_handle_thread_prologue_and_epilogue
../../src/gcc/function.c:6588
0x104f1757 execute
../../src/gcc/function.c:6630
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See  for instructions.

[Bug target/71648] C++ ICE on ppc64 with -m64

2016-06-24 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71648

--- Comment #1 from Konstantinos Margaritis  ---
Created attachment 38760
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38760&action=edit
Reduced testcase for ICE on ppc64

[Bug target/71648] C++ ICE on ppc64 with -m64

2016-06-24 Thread markos at freevec dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71648

--- Comment #4 from Konstantinos Margaritis  ---
That's true, it compiled fine with -mcpu=power8.