S/390: PR target/79240: Fix assertion in s390_extzv_shift_ok.

2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	PR target/79240
	* config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
	("*r<noxa>sbg_<mode>_sll_bitmask")
	("*extzv_<mode>_srl<clobbercc_or_nocc>")
	("*extzv_<mode>_sll<clobbercc_or_nocc>"):
	Use contiguous_bitmask_nowrap_operand.

2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	PR target/79240
	* gcc.target/s390/pr79240.c: New test.

From-SVN: r245022
This commit is contained in:
Dominik Vogt 2017-01-30 09:54:58 +00:00 committed by Andreas Krebbel
parent 6687d58dbc
commit ab4be5d1be
4 changed files with 29 additions and 4 deletions

View File

@ -1,3 +1,12 @@
2017-01-30 Dominik Vogt <vogt@linux.vnet.ibm.com>
PR target/79240
* config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
("*r<noxa>sbg_<mode>_sll_bitmask")
("*extzv_<mode>_srl<clobbercc_or_nocc>")
("*extzv_<mode>_sll<clobbercc_or_nocc>"):
Use contiguous_bitmask_nowrap_operand.
2017-01-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/79268

View File

@ -4127,7 +4127,7 @@
(lshiftrt:GPR
(match_operand:GPR 1 "nonimmediate_operand" "d")
(match_operand:GPR 3 "nonzero_shift_count_operand" ""))
(match_operand:GPR 2 "contiguous_bitmask_operand" ""))
(match_operand:GPR 2 "contiguous_bitmask_nowrap_operand" ""))
(match_operand:GPR 4 "nonimmediate_operand" "0")))
(clobber (reg:CC CC_REGNUM))]
"TARGET_Z10
@ -4143,7 +4143,7 @@
(ashift:GPR
(match_operand:GPR 1 "nonimmediate_operand" "d")
(match_operand:GPR 3 "nonzero_shift_count_operand" ""))
(match_operand:GPR 2 "contiguous_bitmask_operand" ""))
(match_operand:GPR 2 "contiguous_bitmask_nowrap_operand" ""))
(match_operand:GPR 4 "nonimmediate_operand" "0")))
(clobber (reg:CC CC_REGNUM))]
"TARGET_Z10
@ -7191,7 +7191,7 @@
(and:GPR (lshiftrt:GPR
(match_operand:GPR 1 "register_operand" "d")
(match_operand:GPR 2 "nonzero_shift_count_operand" ""))
(match_operand:GPR 3 "contiguous_bitmask_operand" "")))]
(match_operand:GPR 3 "contiguous_bitmask_nowrap_operand" "")))]
"<z10_or_zEC12_cond>
/* Note that even for the SImode pattern, the rotate is always DImode. */
&& s390_extzv_shift_ok (<bitsize>, -INTVAL (operands[2]),
@ -7205,7 +7205,7 @@
(and:GPR (ashift:GPR
(match_operand:GPR 1 "register_operand" "d")
(match_operand:GPR 2 "nonzero_shift_count_operand" ""))
(match_operand:GPR 3 "contiguous_bitmask_operand" "")))]
(match_operand:GPR 3 "contiguous_bitmask_nowrap_operand" "")))]
"<z10_or_zEC12_cond>
&& s390_extzv_shift_ok (<bitsize>, INTVAL (operands[2]),
INTVAL (operands[3]))"

View File

@ -1,3 +1,8 @@
2017-01-30 Dominik Vogt <vogt@linux.vnet.ibm.com>
PR target/79240
* gcc.target/s390/pr79240.c: New test.
2017-01-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR target/79268

View File

@ -0,0 +1,11 @@
/* This testcase checks that s390_extzv_shift_ok does not cause an assertion
failure. */
/* { dg-do compile } */
/* { dg-options "-w -march=z196 -mtune=zEC12 -m64 -mzarch -O2" } */
int
foo (int a)
{
return sizeof (int) * a + 16 - a * sizeof (int) % 16;
}