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>
|
2019-10-01 Ilya Leoshkevich <iii@linux.ibm.com>
|
||||||
|
|
||||||
PR target/77918
|
PR target/77918
|
||||||
|
|
|
@ -791,6 +791,11 @@ rtx_is_swappable_p (rtx op, unsigned int *special)
|
||||||
case UNSPEC_REDUC_PLUS:
|
case UNSPEC_REDUC_PLUS:
|
||||||
case UNSPEC_REDUC:
|
case UNSPEC_REDUC:
|
||||||
return 1;
|
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>
|
2019-10-01 Alexandre Oliva <oliva@adacore.com>
|
||||||
|
|
||||||
* gcc.dg/torture/pr41094.c: Introduce intermediate variable.
|
* 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