From: David Edelsohn Date: Sun, 30 Jun 2002 20:08:32 +0000 (+0000) Subject: rs6000.md (ctrdi): Allocate pseudo for FPR constraint in define_expand, not splitter. X-Git-Tag: releases/gcc-3.1.1~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d8d8384d906588803342795f8093dab7415c19b;p=thirdparty%2Fgcc.git rs6000.md (ctrdi): Allocate pseudo for FPR constraint in define_expand, not splitter. * config/rs6000/rs6000.md (ctrdi): Allocate pseudo for FPR constraint in define_expand, not splitter. From-SVN: r55123 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1fe32fc7fdc4..49ad4284b47a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-06-30 David Edelsohn + + * config/rs6000/rs6000.md (ctrdi): Allocate pseudo for FPR + constraint in define_expand, not splitter. + 2002-06-28 Phil Edwards * configure.in (gcc_gxx_include_dir): Change to match versioned diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 93c6fc3db563..8b4872617930 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -13195,9 +13195,11 @@ (plus:DI (match_dup 0) (const_int -1))) (clobber (match_scratch:CC 2 "")) - (clobber (match_scratch:DI 3 ""))])] + (clobber (match_scratch:DI 3 "")) + (clobber (match_dup 4))])] "TARGET_POWERPC64" - "") + " +{ operands[4] = gen_reg_rtx (DImode); }") ;; We need to be able to do this for any operand, including MEM, or we ;; will cause reload to blow up since we don't allow output reloads on @@ -13263,7 +13265,8 @@ (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:DI 4 "=X,X,r,r"))] + (clobber (match_scratch:DI 4 "=X,X,r,r")) + (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))] "TARGET_POWERPC64" "* { @@ -13287,7 +13290,8 @@ (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:DI 4 "=X,X,r,r"))] + (clobber (match_scratch:DI 4 "=X,X,r,r")) + (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))] "TARGET_POWERPC64" "* { @@ -13361,7 +13365,8 @@ (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:DI 4 "=X,X,r,r"))] + (clobber (match_scratch:DI 4 "=X,X,r,r")) + (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))] "TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)" "* { @@ -13385,7 +13390,8 @@ (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:DI 4 "=X,X,r,r"))] + (clobber (match_scratch:DI 4 "=X,X,r,r")) + (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))] "TARGET_POWERPC64 && find_reg_note (insn, REG_NONNEG, 0)" "* { @@ -13459,7 +13465,8 @@ (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:DI 4 "=X,X,r,r"))] + (clobber (match_scratch:DI 4 "=X,X,r,r")) + (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))] "TARGET_POWERPC64" "* { @@ -13483,7 +13490,8 @@ (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "=X,&x,&x,&x")) - (clobber (match_scratch:DI 4 "=X,X,r,r"))] + (clobber (match_scratch:DI 4 "=X,X,r,r")) + (clobber (match_operand:DI 5 "nonimmediate_operand" "=X,X,X,o"))] "TARGET_POWERPC64" "* { @@ -13559,13 +13567,14 @@ (if_then_else (match_operator 2 "comparison_operator" [(match_operand:DI 1 "gpc_reg_operand" "") (const_int 1)]) - (match_operand 5 "" "") - (match_operand 6 "" ""))) + (match_operand 6 "" "") + (match_operand 7 "" ""))) (set (match_operand:DI 0 "gpc_reg_operand" "") (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "")) - (clobber (match_scratch:DI 4 ""))] + (clobber (match_scratch:DI 4 "")) + (clobber (match_operand:DI 5 "nonimmediate_operand" ""))] "TARGET_POWERPC64 && reload_completed && INT_REGNO_P (REGNO (operands[0]))" [(parallel [(set (match_dup 3) (compare:CC (plus:DI (match_dup 1) @@ -13574,11 +13583,11 @@ (set (match_dup 0) (plus:DI (match_dup 1) (const_int -1)))]) - (set (pc) (if_then_else (match_dup 7) - (match_dup 5) - (match_dup 6)))] + (set (pc) (if_then_else (match_dup 8) + (match_dup 6) + (match_dup 7)))] " -{ operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3], +{ operands[8] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3], const0_rtx); }") (define_split @@ -13586,12 +13595,13 @@ (if_then_else (match_operator 2 "comparison_operator" [(match_operand:DI 1 "gpc_reg_operand" "") (const_int 1)]) - (match_operand 5 "" "") - (match_operand 6 "" ""))) + (match_operand 6 "" "") + (match_operand 7 "" ""))) (set (match_operand:DI 0 "nonimmediate_operand" "") (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "")) - (clobber (match_scratch:DI 4 ""))] + (clobber (match_scratch:DI 4 "")) + (clobber (match_operand:DI 5 "nonimmediate_operand" ""))] "TARGET_POWERPC64 && reload_completed && ! gpc_reg_operand (operands[0], DImode)" [(parallel [(set (match_dup 3) @@ -13603,11 +13613,11 @@ (const_int -1)))]) (set (match_dup 0) (match_dup 4)) - (set (pc) (if_then_else (match_dup 7) - (match_dup 5) - (match_dup 6)))] + (set (pc) (if_then_else (match_dup 8) + (match_dup 6) + (match_dup 7)))] " -{ operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3], +{ operands[8] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3], const0_rtx); }") (define_split @@ -13615,18 +13625,19 @@ (if_then_else (match_operator 2 "comparison_operator" [(match_operand:DI 1 "gpc_reg_operand" "") (const_int 1)]) - (match_operand 5 "" "") - (match_operand 6 "" ""))) + (match_operand 6 "" "") + (match_operand 7 "" ""))) (set (match_operand:DI 0 "gpc_reg_operand" "") (plus:DI (match_dup 1) (const_int -1))) (clobber (match_scratch:CC 3 "")) - (clobber (match_scratch:DI 4 ""))] + (clobber (match_scratch:DI 4 "")) + (clobber (match_operand:DI 5 "nonimmediate_operand" ""))] "TARGET_POWERPC64 && reload_completed && FP_REGNO_P (REGNO (operands[0]))" - [(set (match_dup 8) + [(set (match_dup 5) (match_dup 1)) (set (match_dup 4) - (match_dup 8)) + (match_dup 5)) (parallel [(set (match_dup 3) (compare:CC (plus:DI (match_dup 4) (const_int -1)) @@ -13634,18 +13645,17 @@ (set (match_dup 4) (plus:DI (match_dup 4) (const_int -1)))]) - (set (match_dup 8) + (set (match_dup 5) (match_dup 4)) (set (match_dup 0) - (match_dup 8)) - (set (pc) (if_then_else (match_dup 7) - (match_dup 5) - (match_dup 6)))] + (match_dup 5)) + (set (pc) (if_then_else (match_dup 8) + (match_dup 6) + (match_dup 7)))] " { - operands[7] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3], + operands[8] = gen_rtx (GET_CODE (operands[2]), VOIDmode, operands[3], const0_rtx); - operands[8] = assign_stack_temp (DImode, GET_MODE_SIZE (DImode), 0); }")