From: Kyrylo Tkachov Date: Mon, 19 Jan 2015 14:03:23 +0000 (+0000) Subject: [AArch64] PR 64448: Combine ((x ^ y) & m) ^ x into bsl/bif instruction X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=36650ec61912ff796651fa00964cb0f991c549a1;p=gcc.git [AArch64] PR 64448: Combine ((x ^ y) & m) ^ x into bsl/bif instruction PR target/64448 * config/aarch64/aarch64-simd.md (aarch64_simd_bsl_internal): Match xor-and-xor RTL pattern. From-SVN: r219843 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 39758e785f3..605b87e9070 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-01-19 Kyrylo Tkachov + + PR target/64448 + * config/aarch64/aarch64-simd.md (aarch64_simd_bsl_internal): + Match xor-and-xor RTL pattern. + 2015-01-19 Igor Zamyatin PR rtl-optimization/64081 diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md index 968f5b2b1cb..d239884e70c 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -2008,15 +2008,14 @@ ;; bif op0, op1, mask (define_insn "aarch64_simd_bsl_internal" - [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w,w,w") - (ior:VSDQ_I_DI + [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w,w,w") + (xor:VSDQ_I_DI (and:VSDQ_I_DI - (not: - (match_operand: 1 "register_operand" " 0,w,w")) - (match_operand:VSDQ_I_DI 3 "register_operand" " w,0,w")) - (and:VSDQ_I_DI - (match_dup: 1) - (match_operand:VSDQ_I_DI 2 "register_operand" " w,w,0")) + (xor:VSDQ_I_DI + (match_operand: 3 "register_operand" "w,0,w") + (match_operand:VSDQ_I_DI 2 "register_operand" "w,w,0")) + (match_operand:VSDQ_I_DI 1 "register_operand" "0,w,w")) + (match_dup: 3) ))] "TARGET_SIMD" "@