From: David Edelsohn Date: Sun, 30 Jun 2002 01:44:43 +0000 (+0000) Subject: rs6000.md (ctrdi): Allocate pseudo for FPR constraint in define_expand, not splitter. X-Git-Tag: releases/gcc-3.3.0~4041 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=35aba846c1c56e15269b9b87cad3ad24b3f0de79;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. Formatting. From-SVN: r55110 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a1ec75bb271f..60cd8b809b7d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-06-29 David Edelsohn + + * config/rs6000/rs6000.md (ctrdi): Allocate pseudo for FPR + constraint in define_expand, not splitter. + Formatting. + 2002-06-29 Aldy Hernandez * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 9b7ba97c3273..4520f5877058 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -13333,9 +13333,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 @@ -13401,7 +13403,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" "* { @@ -13425,7 +13428,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" "* { @@ -13499,7 +13503,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)" "* { @@ -13523,7 +13528,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)" "* { @@ -13597,7 +13603,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" "* { @@ -13621,7 +13628,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" "* { @@ -13697,13 +13705,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) @@ -13712,11 +13721,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 @@ -13724,12 +13733,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) @@ -13741,11 +13751,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 @@ -13753,18 +13763,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)) @@ -13772,18 +13783,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); }") @@ -13885,17 +13895,17 @@ ; faster; for instance, on the 601 and 750. (define_expand "movsi_to_cr_one" - [(set (match_operand:CC 0 "cc_reg_operand" "=y") - (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") - (match_dup 2)] 20))] - "" - "operands[2] = GEN_INT (1 << (75 - REGNO (operands[0])));") + [(set (match_operand:CC 0 "cc_reg_operand" "=y") + (unspec:CC [(match_operand:SI 1 "gpc_reg_operand" "r") + (match_dup 2)] 20))] + "" + "operands[2] = GEN_INT (1 << (75 - REGNO (operands[0])));") (define_insn "*movsi_to_cr" - [(match_parallel 0 "mtcrf_operation" - [(set (match_operand:CC 1 "cc_reg_operand" "=y") - (unspec:CC [(match_operand:SI 2 "gpc_reg_operand" "r") - (match_operand 3 "immediate_operand" "n")] + [(match_parallel 0 "mtcrf_operation" + [(set (match_operand:CC 1 "cc_reg_operand" "=y") + (unspec:CC [(match_operand:SI 2 "gpc_reg_operand" "r") + (match_operand 3 "immediate_operand" "n")] 20))])] "" "* @@ -13925,11 +13935,11 @@ ; code that actually corresponds to the powerpc load-string. (define_insn "*lmw" - [(match_parallel 0 "lmw_operation" - [(set (match_operand:SI 1 "gpc_reg_operand" "=r") - (match_operand:SI 2 "memory_operand" "m"))])] - "TARGET_MULTIPLE" - "{lm|lmw} %1,%2") + [(match_parallel 0 "lmw_operation" + [(set (match_operand:SI 1 "gpc_reg_operand" "=r") + (match_operand:SI 2 "memory_operand" "m"))])] + "TARGET_MULTIPLE" + "{lm|lmw} %1,%2") (define_insn "*return_internal_si" [(return)