This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[AArch64][PATCH 2/5] Add BIC instruction.
- From: Matthew Wahab <matthew dot wahab at foss dot arm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 17 Sep 2015 17:40:48 +0100
- Subject: [AArch64][PATCH 2/5] Add BIC instruction.
- Authentication-results: sourceware.org; auth=none
- References: <55FAEC63 dot 7040403 at foss dot arm dot com>
Hello,
ARMv8.1 adds atomic swap and atomic load-operate instructions with
optional memory ordering specifiers. This patch adds an expander to
generate a BIC instruction that can be explicitly called when
implementing the atomic_<op>_fetch pattern to calculate the value to
be returned by the operation.
Tested the series for aarch64-none-linux-gnu with native bootstrap and
make check. Also tested for aarch64-none-elf with cross-compiled
check-gcc on an ARMv8.1 emulator with +lse enabled by default.
Ok for trunk?
Matthew
2015-09-17 Matthew Wahab <matthew.wahab@arm.com>
* config/aarch64/aarch64.md (bic_<SHIFT:optab><mode>3): New.
>From 14e122ee98aa20826ee070d20c58c94206cdd91b Mon Sep 17 00:00:00 2001
From: Matthew Wahab <matthew.wahab@arm.com>
Date: Mon, 17 Aug 2015 17:48:27 +0100
Subject: [PATCH 2/5] Add BIC instruction
Change-Id: Ibef049bfa1bfe5e168feada3dc358f28383e6410
---
gcc/config/aarch64/aarch64.md | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 88ba72e..bae4af4 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -3351,6 +3351,19 @@
(set_attr "simd" "*,yes")]
)
+(define_expand "bic_<SHIFT:optab><mode>3"
+ [(set (match_operand:GPI 0 "register_operand" "=r")
+ (and:GPI
+ (not:GPI
+ (SHIFT:GPI
+ (match_operand:GPI 1 "register_operand" "r")
+ (match_operand:QI 2 "aarch64_shift_imm_si" "n")))
+ (match_operand:GPI 3 "register_operand" "r")))]
+ ""
+ ""
+ [(set_attr "type" "logics_shift_imm")]
+)
+
(define_insn "*and_one_cmpl<mode>3_compare0"
[(set (reg:CC_NZ CC_REGNUM)
(compare:CC_NZ
--
2.1.4