Message ID | 20151201095954.GA31318@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On Tue, Dec 01, 2015 at 10:59:54AM +0100, Dominik Vogt wrote: > @@ -3336,11 +3342,12 @@ > (set_attr "type" "vs")]) > > (define_insn "*setmem_long_31z" > - [(clobber (match_operand:TI 0 "register_operand" "=d")) > - (set (mem:BLK (subreg:SI (match_operand:TI 3 "register_operand" "0") 4)) > - (match_operand 2 "shift_count_or_setmem_operand" "Y")) > - (use (match_dup 3)) > - (use (match_operand:TI 1 "register_operand" "d")) > + [(clobber > + (mem:BLK (subreg:SI (match_operand:TI 0 "register_operand" "=d") 4))) > + (set (mem:BLK (subreg:SI (match_operand:TI 1 "register_operand" "0") 0)) > + (unspec:BLK [(match_operand:P 2 "shift_count_or_setmem_operand" "Y") ^^^^^^^^^^^^^^^ match_operand:SI > + (subreg:P (match_dup 1) 8)] UNSPEC_REPLICATE_BYTE)) ^^^^^^^^ subreg:SI > + (use (match_operand:TI 3 "register_operand" "d")) > (clobber (reg:CC CC_REGNUM))] > "!TARGET_64BIT && TARGET_ZARCH" > "mvcle\t%0,%1,%Y2\;jo\t.-4" Ciao Dominik ^_^ ^_^
From 0b14553b94c2a2b27bfbcdfadd483c57694c9127 Mon Sep 17 00:00:00 2001 From: Dominik Vogt <vogt@linux.vnet.ibm.com> Date: Mon, 30 Nov 2015 15:34:27 +0100 Subject: [PATCH 1.5/1.5] S/390: Test that the setmem_long_and pattern is used. --- gcc/testsuite/gcc.target/s390/md/setmem_long-1.c | 7 ++++++- gcc/testsuite/gcc.target/s390/md/setmem_long-2.c | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/gcc.target/s390/md/setmem_long-1.c b/gcc/testsuite/gcc.target/s390/md/setmem_long-1.c index 9a926ce..c0ed482 100644 --- a/gcc/testsuite/gcc.target/s390/md/setmem_long-1.c +++ b/gcc/testsuite/gcc.target/s390/md/setmem_long-1.c @@ -17,4 +17,9 @@ void test2(char *p, int c) /* Check that the right patterns are used. */ /* { dg-final { scan-assembler-times "c:10 .\*\{\\*setmem_long\}" 1 } } */ -/* { dg-final { scan-assembler-times "c:15 .\*\{\\*setmem_long\}" 1 } } */ +/* { dg-final { scan-assembler-times "c:15 .\*\{\\*setmem_long_and\}" 1 } } */ + +/* Check that the setmem_long_and pattern is used properly. */ +/* { dg-final { scan-assembler-not "\tsllg\t" } } */ +/* { dg-final { scan-assembler-not "\tllgcr\t" } } */ +/* { dg-final { scan-assembler-not "\tn\t" } } */ diff --git a/gcc/testsuite/gcc.target/s390/md/setmem_long-2.c b/gcc/testsuite/gcc.target/s390/md/setmem_long-2.c index ce6aa42..8f29071 100644 --- a/gcc/testsuite/gcc.target/s390/md/setmem_long-2.c +++ b/gcc/testsuite/gcc.target/s390/md/setmem_long-2.c @@ -17,4 +17,8 @@ void test2(char *p, int c) /* Check that the right patterns are used. */ /* { dg-final { scan-assembler-times "c:10 .\*\{\\*setmem_long_31z\}" 1 } } */ -/* { dg-final { scan-assembler-times "c:15 .\*\{\\*setmem_long_31z\}" 1 } } */ +/* { dg-final { scan-assembler-times "c:15 .\*\{\\*setmem_long_and\}" 1 } } */ + +/* Check that the setmem_long_and pattern is used properly. */ +/* { dg-final { scan-assembler-not "\tllcr\t" } } */ +/* { dg-final { scan-assembler-not "\tn\t" } } */ -- 2.3.0