aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2012-10-06 11:42:13 +0000
committerAndreas Schwab <schwab@gcc.gnu.org>2012-10-06 11:42:13 +0000
commit2aa3b677b13884a81e93202183802bbe6c8da9fe (patch)
tree77a35f05e2182601aee5095e4c28c06d99e7492e /gcc
parent7d11d29699c11ca758857a52003dcb016203eaef (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/m68k/m68k.md226
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" "")))]