diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2012-10-06 11:42:13 +0000 |
---|---|---|
committer | Andreas Schwab <schwab@gcc.gnu.org> | 2012-10-06 11:42:13 +0000 |
commit | 2aa3b677b13884a81e93202183802bbe6c8da9fe (patch) | |
tree | 77a35f05e2182601aee5095e4c28c06d99e7492e /gcc | |
parent | 7d11d29699c11ca758857a52003dcb016203eaef (diff) | |
download | gcc-2aa3b677b13884a81e93202183802bbe6c8da9fe.zip gcc-2aa3b677b13884a81e93202183802bbe6c8da9fe.tar.gz gcc-2aa3b677b13884a81e93202183802bbe6c8da9fe.tar.bz2 |
re PR rtl-optimization/54739 (FAIL: gcc.dg/lower-subreg-1.c scan-rtl-dump subreg1 "Splitting reg")
PR rtl-optimization/54739
* config/m68k/m68k.md (anddi3, iordi3, xordi3, one_cmpldi2):
Remove.
From-SVN: r192156
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/m68k/m68k.md | 226 |
2 files changed, 6 insertions, 226 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 738ab7f..b44a1fe5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-06 Andreas Schwab <schwab@linux-m68k.org> + + PR rtl-optimization/54739 + * config/m68k/m68k.md (anddi3, iordi3, xordi3, one_cmpldi2): + Remove. + 2012-10-06 Oleg Endo <olegendo@gcc.gnu.org> PR target/54760 diff --git a/gcc/config/m68k/m68k.md b/gcc/config/m68k/m68k.md index 31be33e..5f67831 100644 --- a/gcc/config/m68k/m68k.md +++ b/gcc/config/m68k/m68k.md @@ -3597,72 +3597,6 @@ ;; logical-and instructions -;; "anddi3" is mainly here to help combine(). -(define_insn "anddi3" - [(set (match_operand:DI 0 "nonimmediate_operand" "=o,d") - (and:DI (match_operand:DI 1 "general_operand" "%0,0") - (match_operand:DI 2 "general_operand" "dn,don")))] - "!TARGET_COLDFIRE" -{ - CC_STATUS_INIT; - /* We can get CONST_DOUBLE, but also const1_rtx etc. */ - if (CONSTANT_P (operands[2])) - { - rtx hi, lo; - - split_double (operands[2], &hi, &lo); - - switch (INTVAL (hi)) - { - case 0 : - output_asm_insn ("clr%.l %0", operands); - break; - case -1 : - break; - default : - { - rtx xoperands[3]; - - xoperands[0] = operands[0]; - xoperands[2] = hi; - output_asm_insn (output_andsi3 (xoperands), xoperands); - } - } - if (GET_CODE (operands[0]) == REG) - operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); - else - operands[0] = adjust_address (operands[0], SImode, 4); - switch (INTVAL (lo)) - { - case 0 : - output_asm_insn ("clr%.l %0", operands); - break; - case -1 : - break; - default : - { - rtx xoperands[3]; - - xoperands[0] = operands[0]; - xoperands[2] = lo; - output_asm_insn (output_andsi3 (xoperands), xoperands); - } - } - return ""; - } - if (GET_CODE (operands[0]) != REG) - { - operands[1] = adjust_address (operands[0], SImode, 4); - return "and%.l %2,%0\;and%.l %R2,%1"; - } - if (GET_CODE (operands[2]) != REG) - { - operands[1] = adjust_address (operands[2], SImode, 4); - return "and%.l %2,%0\;and%.l %1,%R0"; - } - return "and%.l %2,%0\;and%.l %R2,%R0"; -}) - ;; Prevent AND from being made with sp. This doesn't exist in the machine ;; and reload will cause inefficient code. Since sp is a FIXED_REG, we ;; can't allocate pseudos into it. @@ -3780,76 +3714,6 @@ return "or%.w %1,%0"; }) -;; "iordi3" is mainly here to help combine(). -(define_insn "iordi3" - [(set (match_operand:DI 0 "nonimmediate_operand" "=o,d") - (ior:DI (match_operand:DI 1 "general_operand" "%0,0") - (match_operand:DI 2 "general_operand" "dn,don")))] - "!TARGET_COLDFIRE" -{ - CC_STATUS_INIT; - /* We can get CONST_DOUBLE, but also const1_rtx etc. */ - if (CONSTANT_P (operands[2])) - { - rtx hi, lo; - - split_double (operands[2], &hi, &lo); - - switch (INTVAL (hi)) - { - case 0 : - break; - case -1 : - /* FIXME : a scratch register would be welcome here if operand[0] - is not a register */ - output_asm_insn ("move%.l #-1,%0", operands); - break; - default : - { - rtx xoperands[3]; - - xoperands[0] = operands[0]; - xoperands[2] = hi; - output_asm_insn (output_iorsi3 (xoperands), xoperands); - } - } - if (GET_CODE (operands[0]) == REG) - operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); - else - operands[0] = adjust_address (operands[0], SImode, 4); - switch (INTVAL (lo)) - { - case 0 : - break; - case -1 : - /* FIXME : a scratch register would be welcome here if operand[0] - is not a register */ - output_asm_insn ("move%.l #-1,%0", operands); - break; - default : - { - rtx xoperands[3]; - - xoperands[0] = operands[0]; - xoperands[2] = lo; - output_asm_insn (output_iorsi3 (xoperands), xoperands); - } - } - return ""; - } - if (GET_CODE (operands[0]) != REG) - { - operands[1] = adjust_address (operands[0], SImode, 4); - return "or%.l %2,%0\;or%.l %R2,%1"; - } - if (GET_CODE (operands[2]) != REG) - { - operands[1] = adjust_address (operands[2], SImode, 4); - return "or%.l %2,%0\;or%.l %1,%R0"; - } - return "or%.l %2,%0\;or%.l %R2,%R0"; -}) - (define_expand "iorsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "") (ior:SI (match_operand:SI 1 "general_operand" "") @@ -3957,79 +3821,6 @@ ;; xor instructions -;; "xordi3" is mainly here to help combine(). -(define_insn "xordi3" - [(set (match_operand:DI 0 "nonimmediate_operand" "=od") - (xor:DI (match_operand:DI 1 "general_operand" "%0") - (match_operand:DI 2 "general_operand" "dn")))] - "!TARGET_COLDFIRE" -{ - CC_STATUS_INIT; - /* We can get CONST_DOUBLE, but also const1_rtx etc. */ - - if (CONSTANT_P (operands[2])) - { - rtx hi, lo; - - split_double (operands[2], &hi, &lo); - - switch (INTVAL (hi)) - { - case 0 : - break; - case -1 : - output_asm_insn ("not%.l %0", operands); - break; - default : - /* FIXME : a scratch register would be welcome here if - -128 <= INTVAL (hi) < -1 */ - { - rtx xoperands[3]; - - xoperands[0] = operands[0]; - xoperands[2] = hi; - output_asm_insn (output_xorsi3 (xoperands), xoperands); - } - } - if (GET_CODE (operands[0]) == REG) - operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); - else - operands[0] = adjust_address (operands[0], SImode, 4); - switch (INTVAL (lo)) - { - case 0 : - break; - case -1 : - output_asm_insn ("not%.l %0", operands); - break; - default : - /* FIXME : a scratch register would be welcome here if - -128 <= INTVAL (lo) < -1 */ - operands[2] = lo; - /* FIXME : this should be merged with xorsi3 */ - { - rtx xoperands[3]; - - xoperands[0] = operands[0]; - xoperands[2] = lo; - output_asm_insn (output_xorsi3 (xoperands), xoperands); - } - } - return ""; - } - if (GET_CODE (operands[0]) != REG) - { - operands[1] = adjust_address (operands[0], SImode, 4); - return "eor%.l %2,%0\;eor%.l %R2,%1"; - } - if (GET_CODE (operands[2]) != REG) - { - operands[1] = adjust_address (operands[2], SImode, 4); - return "eor%.l %2,%0\;eor%.l %1,%R0"; - } - return "eor%.l %2,%0\;eor%.l %R2,%R0"; -}) - (define_expand "xorsi3" [(set (match_operand:SI 0 "nonimmediate_operand" "") (xor:SI (match_operand:SI 1 "general_operand" "") @@ -4498,23 +4289,6 @@ ;; one complement instructions -;; "one_cmpldi2" is mainly here to help combine(). -(define_insn "one_cmpldi2" - [(set (match_operand:DI 0 "nonimmediate_operand" "=dm") - (not:DI (match_operand:DI 1 "general_operand" "0")))] - "!TARGET_COLDFIRE" -{ - CC_STATUS_INIT; - if (GET_CODE (operands[0]) == REG) - operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); - else if (GET_CODE (XEXP (operands[0], 0)) == POST_INC - || GET_CODE (XEXP (operands[0], 0)) == PRE_DEC) - operands[1] = operands[0]; - else - operands[1] = adjust_address (operands[0], SImode, 4); - return "not%.l %1\;not%.l %0"; -}) - (define_expand "one_cmplsi2" [(set (match_operand:SI 0 "nonimmediate_operand" "") (not:SI (match_operand:SI 1 "general_operand" "")))] |