aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/genfusion.pl
diff options
context:
space:
mode:
authorAaron Sawdey <acsawdey@linux.ibm.com>2021-02-02 19:40:56 -0600
committerAaron Sawdey <acsawdey@linux.ibm.com>2021-02-03 09:34:36 -0600
commit74f2ae3f1fcd4f7b735cbe2207ac84f4d70f8cd0 (patch)
treebf7191fc9167e4854fb415d0d8de337b0ce6e9c0 /gcc/config/rs6000/genfusion.pl
parent05c93a63a6be522b814cc03629751a7bc9b78b99 (diff)
downloadgcc-74f2ae3f1fcd4f7b735cbe2207ac84f4d70f8cd0.zip
gcc-74f2ae3f1fcd4f7b735cbe2207ac84f4d70f8cd0.tar.gz
gcc-74f2ae3f1fcd4f7b735cbe2207ac84f4d70f8cd0.tar.bz2
Fix earlier commit missing patch review changes
Somehow I lost my fixes based on Segher's review of the p10 logical-logical fusion patch. This commit adds the changes that should have been there before. Bootstrap/regtest passed. gcc/ChangeLog: * config/rs6000/genfusion.pl (gen_2logical): Add missing fixes based on patch review. * config/rs6000/fusion.md: Regenerate file.
Diffstat (limited to 'gcc/config/rs6000/genfusion.pl')
-rwxr-xr-xgcc/config/rs6000/genfusion.pl17
1 files changed, 9 insertions, 8 deletions
diff --git a/gcc/config/rs6000/genfusion.pl b/gcc/config/rs6000/genfusion.pl
index 837af7a..e1c45f5 100755
--- a/gcc/config/rs6000/genfusion.pl
+++ b/gcc/config/rs6000/genfusion.pl
@@ -192,7 +192,8 @@ sub gen_2logical
if ( ($inner_comp & 2) == 2 ) {
$inner_arg1 = "(not:${mode} $inner_arg1)";
}
- $inner_exp = "(${inner_rtl}:${mode} ${inner_arg0} ${inner_arg1})";
+ $inner_exp = "(${inner_rtl}:${mode} ${inner_arg0}
+ ${inner_arg1})";
if ( $inner_inv == 1 ) {
$inner_exp = "(not:${mode} $inner_exp)";
}
@@ -203,7 +204,8 @@ sub gen_2logical
if ( ($outer_comp & 2) == 2 ) {
$inner_exp = "(not:${mode} $inner_exp)";
}
- $outer_exp = "(${outer_rtl}:${mode} ${inner_exp} ${outer_arg2})";
+ $outer_exp = "(${outer_rtl}:${mode} ${inner_exp}
+ ${outer_arg2})";
if ( $outer_inv == 1 ) {
$outer_exp = "(not:${mode} $outer_exp)";
}
@@ -211,17 +213,16 @@ sub gen_2logical
$insn = <<"EOF";
;; logical-logical fusion pattern generated by gen_2logical
-;; kind: $kind outer: $outer op $outer_op rtl $outer_rtl inv $outer_inv comp $outer_comp
-;; inner: $inner op $inner_op rtl $inner_rtl inv $inner_inv comp $inner_comp
+;; $kind $inner_op -> $outer_op
(define_insn "*fuse_${inner_op}_${outer_op}"
- [(set (match_operand:${mode} 3 "${pred}" "=&${constraint},0,1,${constraint}")
+ [(set (match_operand:${mode} 3 "${pred}" "=0,1,&${constraint},${constraint}")
${outer_exp})
- (clobber (match_scratch:${mode} 4 "=X,X,X,r"))]
+ (clobber (match_scratch:${mode} 4 "=X,X,X,&r"))]
"(TARGET_P10_FUSION && TARGET_P10_FUSION_2LOGICAL)"
"@
${inner_op} %3,%1,%0\\;${outer_op} %3,%3,%2
- ${inner_op} %0,%1,%0\\;${outer_op} %0,%0,%2
- ${inner_op} %1,%1,%0\\;${outer_op} %1,%1,%2
+ ${inner_op} %3,%1,%0\\;${outer_op} %3,%3,%2
+ ${inner_op} %3,%1,%0\\;${outer_op} %3,%3,%2
${inner_op} %4,%1,%0\\;${outer_op} %3,%4,%2"
[(set_attr "type" "logical")
(set_attr "cost" "6")