From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1005) id 1490B384F6D1; Thu, 17 Nov 2022 21:54:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1490B384F6D1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1668722065; bh=uLLVee73E7SA4kkg70xWn62F8a+a87Flj8w0xHal0os=; h=From:To:Subject:Date:From; b=Vg8B7USVcqesmir95lnAg29T2VmLMAUJcJvGkNKtyB3wR7IaCGCbcWTgOnvVZHATO ZQ+v8Ayt1/cT97j/2yGuYciQcO3VrpNGh3h64YB1oQTjWQ2/gNSHleMJm1iss9CcjJ AOghi3KUg8ATygWaErlaZBBDIqLOgYC8fiqk0Vm0= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Michael Meissner To: gcc-cvs@gcc.gnu.org Subject: [gcc(refs/users/meissner/heads/dmf004)] Revert patch. X-Act-Checkin: gcc X-Git-Author: Michael Meissner X-Git-Refname: refs/users/meissner/heads/dmf004 X-Git-Oldrev: 351194afe0231d20d1321bf24446b2a0dfdc688f X-Git-Newrev: 82d4df0e7d2b7c125084be757aa233b599bd761b Message-Id: <20221117215425.1490B384F6D1@sourceware.org> Date: Thu, 17 Nov 2022 21:54:25 +0000 (GMT) List-Id: https://gcc.gnu.org/g:82d4df0e7d2b7c125084be757aa233b599bd761b commit 82d4df0e7d2b7c125084be757aa233b599bd761b Author: Michael Meissner Date: Mon Nov 14 20:52:10 2022 -0500 Revert patch. 2022-11-14 Michael Meissner gcc/ Revert patch. * config/rs6000/rs6000-string.cc (expand_block_move): Add support for using lxvl and stxvl to move up to 16 bytes inline without calling memcpy. * config/rs6000/rs6000.md (cpymem): Expand cpymemsi to also provide cpymemdi to handle DImode sizes as well as SImode sizes. (movmem): Expand movmemsi to also provide movmemdi to handle DImode sizes as well as SImode sizes. Diff: --- gcc/config/rs6000/rs6000-string.cc | 49 ++------------------------------------ gcc/config/rs6000/rs6000.md | 12 +++++----- 2 files changed, 8 insertions(+), 53 deletions(-) diff --git a/gcc/config/rs6000/rs6000-string.cc b/gcc/config/rs6000/rs6000-string.cc index 596fbc634f4..cd8ee8c2f7e 100644 --- a/gcc/config/rs6000/rs6000-string.cc +++ b/gcc/config/rs6000/rs6000-string.cc @@ -2760,54 +2760,9 @@ expand_block_move (rtx operands[], bool might_overlap) rtx stores[MAX_MOVE_REG]; int num_reg = 0; - /* If this is not a fixed size move, see if we can use load/store vector with - length to handle multiple bytes. Don't do the optimization if -Os. - Otherwise, just call memcpy. */ + /* If this is not a fixed size move, just call memcpy */ if (! constp) - { - if (TARGET_BLOCK_OPS_UNALIGNED_VSX && TARGET_P9_VECTOR && TARGET_64BIT - && !optimize_size) - { - rtx join_label = gen_label_rtx (); - rtx inline_label = gen_label_rtx (); - rtx dest_addr = copy_addr_to_reg (XEXP (orig_dest, 0)); - rtx src_addr = copy_addr_to_reg (XEXP (orig_src, 0)); - - /* Call memcpy if the size is too large. */ - bytes_rtx = force_reg (Pmode, bytes_rtx); - rtx cr = gen_reg_rtx (CCUNSmode); - rtx max_size = GEN_INT (16); - emit_insn (gen_rtx_SET (cr, - gen_rtx_COMPARE (CCUNSmode, bytes_rtx, - max_size))); - - do_ifelse (CCUNSmode, LEU, NULL_RTX, NULL_RTX, cr, - inline_label, profile_probability::likely ()); - - tree fun = builtin_decl_explicit (BUILT_IN_MEMCPY); - emit_library_call_value (XEXP (DECL_RTL (fun), 0), - NULL_RTX, LCT_NORMAL, Pmode, - dest_addr, Pmode, - src_addr, Pmode, - bytes_rtx, Pmode); - - rtx join_ref = gen_rtx_LABEL_REF (VOIDmode, join_label); - emit_jump_insn (gen_rtx_SET (pc_rtx, join_ref)); - emit_barrier (); - - emit_label (inline_label); - - /* Move the final 0..16 bytes. */ - rtx vreg = gen_reg_rtx (V16QImode); - emit_insn (gen_lxvl (vreg, src_addr, bytes_rtx)); - emit_insn (gen_stxvl (vreg, dest_addr, bytes_rtx)); - - emit_label (join_label); - return 1; - } - - return 0; - } + return 0; /* This must be a fixed size alignment */ gcc_assert (CONST_INT_P (align_rtx)); diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 12bae0d32a7..e9dfb138603 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -9880,11 +9880,11 @@ ;; Argument 2 is the length ;; Argument 3 is the alignment -(define_expand "cpymem" +(define_expand "cpymemsi" [(parallel [(set (match_operand:BLK 0 "") (match_operand:BLK 1 "")) - (use (match_operand:GPR 2 "")) - (use (match_operand:GPR 3 ""))])] + (use (match_operand:SI 2 "")) + (use (match_operand:SI 3 ""))])] "" { if (expand_block_move (operands, false)) @@ -9899,11 +9899,11 @@ ;; Argument 2 is the length ;; Argument 3 is the alignment -(define_expand "movmem" +(define_expand "movmemsi" [(parallel [(set (match_operand:BLK 0 "") (match_operand:BLK 1 "")) - (use (match_operand:GPR 2 "")) - (use (match_operand:GPR 3 ""))])] + (use (match_operand:SI 2 "")) + (use (match_operand:SI 3 ""))])] "" { if (expand_block_move (operands, true))