After
r16-2649-g0340177d54d tests fail for
gcc.target/s390/arch13/bitops-{1,2}.c since sign extends in conjunction
with (subreg (not a)) are folded, now. That is, of course, wanted.
Since the original tests were about 32-bit operations, circumvent the
sign extend by not returning a value but rather writing it to memory.
Similar for andc-splitter-2.c sign extends are folded there, too. Since
the test is not about 32- or 64-bit adjust the scan assembler directives
only.
gcc/testsuite/ChangeLog:
* gcc.target/s390/arch13/bitops-1.c: Do not return a 32bit value
but write it to memory.
* gcc.target/s390/arch13/bitops-2.c: Ditto.
* gcc.target/s390/md/andc-splitter-2.c: Adjust scan assembler
directive because sign extends are folded, now.
/* and with complement */
-int
+int i32;
+
+void
ncrk (int a, int b)
{
- return a & ~b;
+ i32 = a & ~b;
}
/* { dg-final { scan-assembler-times "\tncrk\t" 1 } } */
/* or with complement */
-int
+void
ocrk (int a, int b)
{
- return a | ~b;
+ i32 = a | ~b;
}
/* { dg-final { scan-assembler-times "\tocrk\t" 1 } } */
/* nand */
-int
+void
nnrk (int a, int b)
{
- return ~(a & b);
+ i32 = ~(a & b);
}
/* { dg-final { scan-assembler-times "\tnnrk\t" 1 } } */
/* nor */
-int
+void
nork (int a, int b)
{
- return ~(a | b);
+ i32 = ~(a | b);
}
/* { dg-final { scan-assembler-times "\tnork\t" 1 } } */
/* nxor */
-int
+void
nxrk (int a, int b)
{
- return ~(a ^ b);
+ i32 = ~(a ^ b);
}
/* { dg-final { scan-assembler-times "\tnxrk\t" 1 } } */
/* and with complement */
+int i32;
+
int
ncrk (int a, int b)
{
/* nor */
-int
+void
nork (int a, int b)
{
- return ~(a | b);
+ i32 = ~(a | b);
}
/* { dg-final { scan-assembler-times "\tnork\t" 1 } } */
/* { dg-final { scan-assembler ":36:.\* \{\\*andsi3_\(esa\|zarch\)\}" } } */
/* { dg-final { scan-assembler ":36:.\* \{\\*xorsi3\}" } } */
-/* { dg-final { scan-assembler-times "\tnr\?k\?\t" 4 } } */
-/* { dg-final { scan-assembler-times "\txr\?k\?\t" 4 } } */
+/* { dg-final { scan-assembler-times "\tng\?r\?k\?\t" 4 } } */
+/* { dg-final { scan-assembler-times "\txg\?r\?k\?\t" 4 } } */
int
main (void)