rs6000-p8swap.c (rtx_is_swappable_p): Don't swap vpmsumd.
[gcc] 2019-10-01 Bill Schmidt <wschmidt@linux.ibm.com> * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap vpmsumd. [gcc/testsuite] 2019-10-01 Bill Schmidt <wschmdit@linux.ibm.com> * gcc.target/powerpc/pr91275.c: New. From-SVN: r276410
This commit is contained in:
parent
a1bfb5b16b
commit
2a2592a10c
|
@ -1,3 +1,8 @@
|
|||
2019-10-01 Bill Schmidt <wschmidt@linux.ibm.com>
|
||||
|
||||
* config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Don't swap
|
||||
vpmsumd.
|
||||
|
||||
2019-10-01 Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
|
||||
PR target/77918
|
||||
|
|
|
@ -791,6 +791,11 @@ rtx_is_swappable_p (rtx op, unsigned int *special)
|
|||
case UNSPEC_REDUC_PLUS:
|
||||
case UNSPEC_REDUC:
|
||||
return 1;
|
||||
case UNSPEC_VPMSUM:
|
||||
/* vpmsumd is not swappable, but vpmsum[bhw] are. */
|
||||
if (GET_MODE (op) == V2DImode)
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2019-10-01 Bill Schmidt <wschmdit@linux.ibm.com>
|
||||
|
||||
* gcc.target/powerpc/pr91275.c: New.
|
||||
|
||||
2019-10-01 Alexandre Oliva <oliva@adacore.com>
|
||||
|
||||
* gcc.dg/torture/pr41094.c: Introduce intermediate variable.
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
/* Test that we generate vpmsumd correctly without a swap error. */
|
||||
|
||||
/* { dg-do run { target { p8vector_hw } } } */
|
||||
/* { dg-options "-O2 -std=gnu11" } */
|
||||
|
||||
#include <altivec.h>
|
||||
|
||||
int main() {
|
||||
|
||||
const unsigned long long r0l = 0x8e7dfceac070e3a0;
|
||||
vector unsigned long long r0 = (vector unsigned long long) {r0l, 0}, v;
|
||||
const vector unsigned long long pd
|
||||
= (vector unsigned long) {0xc2LLU << 56, 0};
|
||||
|
||||
v = __builtin_crypto_vpmsumd ((vector unsigned long long) {r0[0], 0}, pd);
|
||||
|
||||
if (v[0] != 0x4000000000000000 || v[1] != 0x65bd7ab605a4a8ff)
|
||||
__builtin_abort ();
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue