https://gcc.gnu.org/g:96ba66508eef23597c4e016758fc1fcc55b4c3f9
commit 96ba66508eef23597c4e016758fc1fcc55b4c3f9 Author: Michael Meissner <meiss...@linux.ibm.com> Date: Wed Oct 16 17:51:38 2024 -0400 Revert changes Diff: --- gcc/config/rs6000/fusion.md | 44 ++++---------------------------------------- gcc/config/rs6000/rs6000.cc | 3 --- gcc/config/rs6000/rs6000.opt | 4 ---- 3 files changed, 4 insertions(+), 47 deletions(-) diff --git a/gcc/config/rs6000/fusion.md b/gcc/config/rs6000/fusion.md index 5332c84681fa..4ed9ae1d69f4 100644 --- a/gcc/config/rs6000/fusion.md +++ b/gcc/config/rs6000/fusion.md @@ -2896,13 +2896,13 @@ ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vandc -> vxor -(define_insn "*fuse_vandc_vxor_noxxeval" +(define_insn "*fuse_vandc_vxor" [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (and:VM (not:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 1 "altivec_register_operand" "v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) (clobber (match_scratch:VM 4 "=X,X,X,&v"))] - "(TARGET_P10_FUSION && (!TARGET_XXEVAL || !TARGET_PREFIXED))" + "(TARGET_P10_FUSION)" "@ vandc %3,%1,%0\;vxor %3,%3,%2 vandc %3,%1,%0\;vxor %3,%3,%2 @@ -2912,24 +2912,6 @@ (set_attr "cost" "6") (set_attr "length" "8")]) -(define_insn "*fuse_vandc_vxor_xxeval" - [(set (match_operand:VM 3 "vsx_register_operand" "=&0,&1,&v,v,wa") - (xor:VM (and:VM (not:VM (match_operand:VM 0 "vsx_register_operand" "v,v,v,v,wa")) - (match_operand:VM 1 "vsx_register_operand" "v,v,v,v,wa")) - (match_operand:VM 2 "vsx_register_operand" "v,v,v,v,wa"))) - (clobber (match_scratch:VM 4 "=X,X,X,&v,X"))] - "(TARGET_P10_FUSION && TARGET_XXEVAL && TARGET_PREFIXED)" - "@ - vandc %3,%1,%0\;vxor %3,%3,%2 - vandc %3,%1,%0\;vxor %3,%3,%2 - vandc %3,%1,%0\;vxor %3,%3,%2 - vandc %4,%1,%0\;vxor %3,%4,%2 - xxeval %w3,%w0,%w1,%w2,45\t\t# fuse xxlxor (%w0, xxlandc (%x1, %x2))" - [(set_attr "type" "fused_vector") - (set_attr "cost" "6") - (set_attr "length" "8") - (set_attr "prefixed" "*,*,*,*,yes")]) - ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector veqv -> vxor (define_insn "*fuse_veqv_vxor" @@ -3022,13 +3004,13 @@ ;; logical-logical fusion pattern generated by gen_logical_addsubf ;; vector vxor -> vxor -(define_insn "*fuse_vxor_vxor_noxxeval" +(define_insn "*fuse_vxor_vxor" [(set (match_operand:VM 3 "altivec_register_operand" "=&0,&1,&v,v") (xor:VM (xor:VM (match_operand:VM 0 "altivec_register_operand" "v,v,v,v") (match_operand:VM 1 "altivec_register_operand" "%v,v,v,v")) (match_operand:VM 2 "altivec_register_operand" "v,v,v,v"))) (clobber (match_scratch:VM 4 "=X,X,X,&v"))] - "(TARGET_P10_FUSION && (!TARGET_XXEVAL || !TARGET_PREFIXED))" + "(TARGET_P10_FUSION)" "@ vxor %3,%1,%0\;vxor %3,%3,%2 vxor %3,%1,%0\;vxor %3,%3,%2 @@ -3038,24 +3020,6 @@ (set_attr "cost" "6") (set_attr "length" "8")]) -(define_insn "*fuse_vxor_vxor_xxeval" - [(set (match_operand:VM 3 "vsx_register_operand" "=&0,&1,&v,v,wa") - (xor:VM (xor:VM (match_operand:VM 0 "vsx_register_operand" "v,v,v,v,wa") - (match_operand:VM 1 "vsx_register_operand" "%v,v,v,v,wa")) - (match_operand:VM 2 "vsx_register_operand" "v,v,v,v,wa"))) - (clobber (match_scratch:VM 4 "=X,X,X,&v,X"))] - "(TARGET_P10_FUSION && TARGET_XXEVAL && TARGET_PREFIXED)" - "@ - vxor %3,%1,%0\;vxor %3,%3,%2 - vxor %3,%1,%0\;vxor %3,%3,%2 - vxor %3,%1,%0\;vxor %3,%3,%2 - vxor %4,%1,%0\;vxor %3,%4,%2 - xxeval %x3,%x0,%x1,%x2,105\t\t# fuse xxlxor (%x0, xxlxor (%x1,%x2))" - [(set_attr "type" "fused_vector") - (set_attr "cost" "6") - (set_attr "length" "8") - (set_attr "prefixed" "*,*,*,*,yes")]) - ;; add-add fusion pattern generated by gen_addadd (define_insn "*fuse_add_add" [(set (match_operand:GPR 3 "gpc_reg_operand" "=&0,&1,&r,r") diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 072556b7fd7a..aa67e7256bb9 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -24668,9 +24668,6 @@ static struct rs6000_opt_var const rs6000_opt_vars[] = { "speculate-indirect-jumps", offsetof (struct gcc_options, x_rs6000_speculate_indirect_jumps), offsetof (struct cl_target_option, x_rs6000_speculate_indirect_jumps), }, - { "xxeval", - offsetof (struct gcc_options, x_TARGET_XXEVAL), - offsetof (struct cl_target_option, x_TARGET_XXEVAL), }, }; /* Inner function to handle attribute((target("..."))) and #pragma GCC target diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 127befdcd56b..0d71dbaf2fc1 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -631,10 +631,6 @@ mieee128-constant Target Var(TARGET_IEEE128_CONSTANT) Init(1) Save Generate (do not generate) code that uses the LXVKQ instruction. -mxxeval -Target Var(TARGET_XXEVAL) Init(0) Save -Use xxeval for fusion - ; Documented parameters -param=rs6000-vect-unroll-limit=