From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1130) id E7C503858C53; Tue, 13 Sep 2022 08:29:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E7C503858C53 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1663057747; bh=3nGoRap5ttLT5aoBxwOWJAh2nRPmWKFAU4ogfARGOzI=; h=From:To:Subject:Date:From; b=fSMInM5Z/jvLfmiGEv2LqrPjdZwqeSCdA4dNRUrKyOpiPTG1+umDAXT/K1n1J4nIH hfj6uZfk7r9p0CfeNVdVg8LmEXK5YmuTz4tV5uMpL7TIBovMNvNwx934mKdmMd+KD8 2gywiZpwVg4n4aoo4s4KJbOBbec2v8Ry1BNrz+Dc= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Richard Sandiford To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-2637] aarch64: Disassociate ls64 from simd X-Act-Checkin: gcc X-Git-Author: Richard Sandiford X-Git-Refname: refs/heads/trunk X-Git-Oldrev: eec36f27c3ca85d3b6b469e7161b63b69a5823ac X-Git-Newrev: 91061fd5ace2b8ee6bf31bf5f5cbfdf55a25d5e1 Message-Id: <20220913082907.E7C503858C53@sourceware.org> Date: Tue, 13 Sep 2022 08:29:07 +0000 (GMT) List-Id: https://gcc.gnu.org/g:91061fd5ace2b8ee6bf31bf5f5cbfdf55a25d5e1 commit r13-2637-g91061fd5ace2b8ee6bf31bf5f5cbfdf55a25d5e1 Author: Richard Sandiford Date: Tue Sep 13 09:28:48 2022 +0100 aarch64: Disassociate ls64 from simd The ls64-related move expanders and splits required TARGET_SIMD. That isn't necessary, since the 64-byte values are stored entirely in GPRs. (The associated define_insn was already correct.) I wondered about moving the patterns to aarch64.md, but it wasn't clear-cut. gcc/ * config/aarch64/aarch64-simd.md (movv8di): Remove TARGET_SIMD condition. Likewise for the related define_split. Tweak formatting. gcc/testsuite/ * gcc.target/aarch64/acle/ls64_asm_2.c: New test. Diff: --- gcc/config/aarch64/aarch64-simd.md | 18 +++++++++--------- gcc/testsuite/gcc.target/aarch64/acle/ls64_asm_2.c | 9 +++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 587a45d7772..d4662c76a58 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -7087,7 +7087,7 @@ (define_expand "movv8di" [(set (match_operand:V8DI 0 "nonimmediate_operand") (match_operand:V8DI 1 "general_operand"))] - "TARGET_SIMD" + "" { if (can_create_pseudo_p () && MEM_P (operands[0])) operands[1] = force_reg (V8DImode, operands[1]); @@ -7479,7 +7479,7 @@ (define_split [(set (match_operand:V8DI 0 "nonimmediate_operand") (match_operand:V8DI 1 "general_operand"))] - "TARGET_SIMD && reload_completed" + "reload_completed" [(const_int 0)] { if (register_operand (operands[0], V8DImode) @@ -7489,15 +7489,15 @@ DONE; } else if ((register_operand (operands[0], V8DImode) - && memory_operand (operands[1], V8DImode)) - || (memory_operand (operands[0], V8DImode) - && register_operand (operands[1], V8DImode))) + && memory_operand (operands[1], V8DImode)) + || (memory_operand (operands[0], V8DImode) + && register_operand (operands[1], V8DImode))) { for (int offset = 0; offset < 64; offset += 16) - emit_move_insn (simplify_gen_subreg (TImode, operands[0], - V8DImode, offset), - simplify_gen_subreg (TImode, operands[1], - V8DImode, offset)); + emit_move_insn (simplify_gen_subreg (TImode, operands[0], + V8DImode, offset), + simplify_gen_subreg (TImode, operands[1], + V8DImode, offset)); DONE; } else diff --git a/gcc/testsuite/gcc.target/aarch64/acle/ls64_asm_2.c b/gcc/testsuite/gcc.target/aarch64/acle/ls64_asm_2.c new file mode 100644 index 00000000000..1b4277180a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/ls64_asm_2.c @@ -0,0 +1,9 @@ +/* { dg-do compile } */ +/* { dg-options "-O" } */ + +#pragma GCC target "+ls64+nofp" + +#include "ls64_asm.c" + +/* { dg-final { scan-assembler-times {\tldp\t} 12 } } */ +/* { dg-final { scan-assembler-times {\tstp\t} 4 } } */