RE: [PATCH, AArch64] Fix macro in vdup_lane_2 test case

2014-05-20 Thread Ian Bolton
From: Marcus Shawcroft [mailto:marcus.shawcr...@gmail.com] Sent: 19 May 2014 11:45 To: Ian Bolton Cc: gcc-patches Subject: Re: [PATCH, AArch64] Fix macro in vdup_lane_2 test case On 8 May 2014 18:41, Ian Bolton ian.bol...@arm.com wrote: gcc/testsuite * gcc.target/aarch64

RE: [PATCH, AArch64] Use MOVN to generate 64-bit negative immediates where sensible

2014-05-16 Thread Ian Bolton
Ping. This should be relatively simple to review. Many thanks. -Original Message- From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- ow...@gcc.gnu.org] On Behalf Of Ian Bolton Sent: 08 May 2014 18:36 To: gcc-patches Subject: [PATCH, AArch64] Use MOVN to generate 64-bit

RE: [PATCH, AArch64] Fix macro in vdup_lane_2 test case

2014-05-16 Thread Ian Bolton
Ping. This may well be classed as obvious, but that's not obvious to me, so I request a review. Many thanks. -Original Message- From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- ow...@gcc.gnu.org] On Behalf Of Ian Bolton Sent: 08 May 2014 18:42 To: gcc-patches Subject

[PATCH, AArch64] Implement HARD_REGNO_CALLER_SAVE_MODE

2014-05-12 Thread Ian Bolton
and verified impact on a number of examples. OK for trunk? Cheers, Ian 2014-05-12 Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64-protos.h (aarch64_hard_regno_caller_save_mode): New prototype. * config/aarch64/aarch64.c (aarch64_hard_regno_caller_save_mode): New function

[PATCH, AArch64] Use MOVN to generate 64-bit negative immediates where sensible

2014-05-08 Thread Ian Bolton
that does the immediate in two instructions is still used.) Tested on standard gcc regressions and the attached test case. OK for commit? Cheers, Ian 2014-05-08 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Use MOVN when top-most half

[PATCH, AArch64] Fix macro in vdup_lane_2 test case

2014-05-08 Thread Ian Bolton
This patch fixes a defective macro definition, based on correct definition in similar testcases. The test currently passes through luck rather than correctness. OK for commit? Cheers, Ian 2014-05-08 Ian Bolton ian.bol...@arm.com gcc/testsuite * gcc.target/aarch64/vdup_lane_2.c

RE: [PATCH, ARM] Suppress Redundant Flag Setting for Cortex-A15

2014-04-24 Thread Ian Bolton
Hi, On 28 January 2014 13:10, Ramana Radhakrishnan ramana@googlemail.com wrote: On Fri, Jan 24, 2014 at 5:16 PM, Ian Bolton ian.bol...@arm.com wrote: Hi there! An existing optimisation for Thumb-2 converts t32 encodings to t16 encodings to reduce codesize, at the expense

RE: [PATCH, ARM] Optimise NotDI AND/OR ZeroExtendSI for ARMv7A

2014-03-27 Thread Ian Bolton
-Original Message- From: Richard Earnshaw Sent: 21 March 2014 13:57 To: Ian Bolton Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH, ARM] Optimise NotDI AND/OR ZeroExtendSI for ARMv7A On 19/03/14 16:53, Ian Bolton wrote: This is a follow-on patch to one already committed: http

[PATCH, ARM] Optimise NotDI AND/OR ZeroExtendSI for ARMv7A

2014-03-19 Thread Ian Bolton
)) -- the top half becomes zero. I've added test cases for both of these and also the existing anddi_notdi patterns. The tests all pass. Full regression runs passed. OK for stage 1? Cheers, Ian 2014-03-19 Ian Bolton ian.bol...@arm.com gcc/ * config/arm/arm.md (*anddi_notdi_zesidi): New

[PATCH] Keep -ffp-contract=fast by default if we have -funsafe-math-optimizations

2014-03-10 Thread Ian Bolton
regressions passed. OK for trunk or stage 1? Cheers, Ian 10-03-2014 Ian Bolton ian.bol...@arm.com * gcc/c-family/c-opts.c (c_common_post_options): Don't override -ffp-contract=fast if unsafe-math-optimizations is on.diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c index

[PATCH, AArch64] Define __ARM_NEON by default

2014-02-24 Thread Ian Bolton
general regs only. Tested on simple testcase to ensure __ARM_NEON was defined. OK for trunk? Cheers, Ian 2014-02-24 Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64.h: Define __ARM_NEON by default if we are not using general regs only.diff --git a/gcc/config/aarch64/aarch64

[PATCH, ARM] Support ORN for DImode

2014-02-19 Thread Ian Bolton
number of ORN instructions in the assembly. Regressions passed. OK for stage 1? 2014-02-19 Ian Bolton ian.bol...@arm.com gcc/ * config/arm/thumb2.md (*iordi_notdi_di): New pattern. (*iordi_notzesidi): New pattern. (*iordi_notsesidi_di): New pattern. testsuite

RE: [PATCH, ARM] Skip pr59858.c test for -mfloat-abi=hard

2014-02-14 Thread Ian Bolton
Ian Bolton ian.bol...@arm.com testsuite/ * gcc.target/arm/pr59858.c: Skip test if -mfloat-abi=hard. pr59858-skip-if-hard-float-patch-v2.txt diff --git a/gcc/testsuite/gcc.target/arm/pr59858.c b/gcc/testsuite/gcc.target/arm/pr59858.c index 463bd38..1e03203 100644

[PATCH, ARM] Skip pr59858.c test for -mfloat-abi=hard

2014-02-13 Thread Ian Bolton
Hi, The pr59858.c testcase explicitly sets -msoft-float which is incompatible with our -mfloat-abi=hard variant. This patch therefore should not be run if you have -mfloat-abi=hard. Tested with both variations for arm-none-eabi build. OK for commit? Cheers, Ian 2014-02-13 Ian Bolton

[PATCH] Make pr59597 test PIC-friendly

2014-02-05 Thread Ian Bolton
for stage 1? Cheers, Ian 2014-02-05 Ian Bolton ian.bol...@arm.com testsuite/ * gcc.dg/tree-ssa/pr59597.c: Make called function static so that expected outcome works for PIC variants too.diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr59597.c b/gcc/testsuite/gcc.dg/tree-ssa/pr59597.c

[PATCH, ARM] Suppress Redundant Flag Setting for Cortex-A15

2014-01-24 Thread Ian Bolton
with no regressions and performance has improved for the workloads tested on cortex-a15. (It might be beneficial to other processors too, but that has not been investigated yet.) OK for stage 1? Cheers, Ian 2014-01-24 Ian Bolton ian.bol...@arm.com gcc/ * config/arm/arm-protos.h (tune_params

RE: [PATCH, ARM] Implement __builtin_trap

2013-12-06 Thread Ian Bolton
/show_bug.cgi?id=59091 The main update, other than cosmetic differences, is that we've chosen the same ARM encoding as LLVM for practical purposes. (The Thumb encoding in Mark's patch already matched LLVM.) OK for trunk? Cheers, Ian 2013-12-04 Ian Bolton ian.bol...@arm.com

[PATCH, ARM] Implement __builtin_trap

2013-12-04 Thread Ian Bolton
update, other than cosmetic differences, is that we've chosen the same ARM encoding as LLVM for practical purposes. (The Thumb encoding in Mark's patch already matched LLVM.) OK for trunk? Cheers, Ian 2013-12-04 Ian Bolton ian.bol...@arm.com Mark Mitchell m...@codesourcery.com gcc

RE: [PATCH, ARM] Implement __builtin_trap

2013-12-04 Thread Ian Bolton
On Wed, 4 Dec 2013, Ian Bolton wrote: The main update, other than cosmetic differences, is that we've chosen the same ARM encoding as LLVM for practical purposes. (The Thumb encoding in Mark's patch already matched LLVM.) Do the encodings match what plain udf does in recent-enough

[PATCH, AArch64] Improve handling of constants destined for FP_REGS

2013-09-04 Thread Ian Bolton
that NO_REGS (which leads to literal pool) is returned, when the immediate can't be put directly into FP_REGS. A testcase is included. Linux regressions all came back good. OK for trunk? Cheers, Ian 2013-09-04 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.c

[PATCH, AArch64] Add secondary reload for immediates into FP_REGS

2013-07-30 Thread Ian Bolton
for trunk? Cheers, Ian 2013-07-30 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.c (aarch64_secondary_reload)): Handle constant into FP_REGs that is not valid for MOVI. testsuite/ * gcc.target/aarch64/movdi_1.c: New test.diff --git a/gcc/config/aarch64

[PATCH, AArch64] Support NEG in vector registers for DI and SI mode

2013-07-23 Thread Ian Bolton
Support added for scalar NEG instruction in vector registers. Execution testcase included. Tested on usual GCC Linux regressions. OK for trunk? Cheers, Ian 2013-07-23 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64-simd.md (negmode2): Offer alternative

[PATCH, AArch64] Add vabs_s64 intrinsic

2013-07-12 Thread Ian Bolton
This patch implements the following intrinsic: int64x1_t vabs_s64 (int64x1 a) It uses __builtin_llabs(), which will lead to abs Dn, Dm being generated for this now that my other patch has been committed. Test case added to scalar_intrinsics.c. OK for trunk? Cheers, Ian 2013-07-12 Ian

[PATCH, AArch64] Support abs standard pattern for DI mode

2013-06-25 Thread Ian Bolton
Hi, I'm adding support for abs standard pattern name for DI mode, via the ABS instruction in FP registers and the EOR/SUB combo in GP registers. Regression tests for Linux and bare-metal all passed. OK for trunk? Cheers, Ian 2013-06-25 Ian Bolton ian.bol...@arm.com gcc/ * config

[PATCH, AArch64] Update insv_1.c test for Big Endian

2013-06-24 Thread Ian Bolton
is supported. I've tested these two tests on little and big. All was OK. OK for trunk? Cheers, Ian 2013-06-24 Ian Bolton ian.bol...@arm.com * gcc.target/config/aarch64/insv_1.c: Update to show it doesn't work on big endian. * gcc.target/config/aarch64/insv_2.c: New test

[AArch64, PATCH 1/5] Improve MOVI handling (Change interface of aarch64_simd_valid_immediate)

2013-06-03 Thread Ian Bolton
? Cheers, Ian 13-06-03 Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Change return type to bool for prototype. (aarch64_legitimate_constant_p): Check for true instead of not -1. (aarch64_simd_valid_immediate): Fix up

[AArch64, PATCH 3/5] Improve MOVI handling (Don't update RTX operand in-place)

2013-06-03 Thread Ian Bolton
of RTX operands. Specifically, I've changed the set of pointers that are passed in (it's now a struct) and the caller prints out the immediate value directly instead of letting operand[1] get fudged. OK for trunk? Cheers, Ian 2013-06-03 Ian Bolton ian.bol...@arm.com * config/aarch64

[AArch64, PATCH 2/5] Improve MOVI handling (Remove wrapper function)

2013-06-03 Thread Ian Bolton
? Cheers, Ian 13-06-03 Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): No longer static. (aarch64_simd_immediate_valid_for_move): Remove. (aarch64_simd_scalar_immediate_valid_for_move): Update call

[AArch64, PATCH 4/5] Improve MOVI handling (Other minor clean-up)

2013-06-03 Thread Ian Bolton
(This patch is the fourth of five, where the first 4 do some clean-up and the last fixes a bug with scalar MOVI. The bug fix without the clean-up was particularly ugly!) I think the changelog says it all here. Nothing major, just tidying up. OK for trunk? Cheers, Ian 2013-06-03 Ian

[AArch64, PATCH 5/5] Improve MOVI handling (Fix invalid assembler bug)

2013-06-03 Thread Ian Bolton
for aarch64_print_operand, as is done for vector immediates. Regression runs have passed for Linux and bare-metal. OK for trunk? Cheers, Ian 2013-06-03 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.md (*movmode_aarch64): Call into function to generate MOVI instruction

RE: [PATCH, AArch64] Support BFI instruction and insv standard pattern

2013-05-30 Thread Ian Bolton
On 05/20/2013 11:55 AM, Ian Bolton wrote: I improved this patch during the work I did on the recent insv_imm patch (http://gcc.gnu.org/ml/gcc-patches/2013-05/msg01007.html). Thanks, you cleaned up almost everything on which I would have commented with the previous patch revision

[PATCH, AArch64] Fix invalid assembler in scalar_intrinsics.c test

2013-05-22 Thread Ian Bolton
Ian Bolton ian.bol...@arm.com testsuite/ * gcc.target/aarch64/scalar_intrinsics.c (force_simd): Use a valid instruction. (test_vdupd_lane_s64): Pass a valid lane argument. (test_vdupd_lane_u64): Likewise.diff --git a/gcc/testsuite/gcc.target/aarch64

RE: [PATCH, AArch64] Support BFI instruction and insv standard pattern

2013-05-20 Thread Ian Bolton
Hi, This patch implements the BFI variant of BFM. In doing so, it also implements the insv standard pattern. I've regression tested on bare-metal and linux. It comes complete with its own compilation and execution testcase. OK for trunk? Cheers, Ian 2013-05-08 Ian Bolton

[PATCH, AArch64] Allow insv_imm to handle bigger immediates via masking to 16-bits

2013-05-17 Thread Ian Bolton
-17 Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64.c (aarch64_print_operand): Change the X format specifier to only display bottom 16 bits. * config/aarch64/aarch64.md (insv_immmode): Allow any-sized immediate to match for operand 2, since

[PATCH, AArch64] Support BFI instruction and insv standard pattern

2013-05-08 Thread Ian Bolton
Hi, This patch implements the BFI variant of BFM. In doing so, it also implements the insv standard pattern. I've regression tested on bare-metal and linux. It comes complete with its own compilation and execution testcase. OK for trunk? Cheers, Ian 2013-05-08 Ian Bolton ian.bol

[PATCH, AArch64] Testcases for TST instruction

2013-05-02 Thread Ian Bolton
I previously fixed a bug with the patterns that generate TST. I added these testcases to make our regression testing more solid. They've been running on our internal branch for about a month. OK to commit to trunk? Cheers, Ian 2013-05-02 Ian Bolton ian.bol...@arm.com * gcc.target

RE: [PATCH, AArch64] Testcases for ANDS instruction

2013-05-01 Thread Ian Bolton
testcase naming convention. OK for commit? Cheers, Ian 2013-05-01 Ian Bolton ian.bol...@arm.com * gcc.target/aarch64/ands_1.c: New test. * gcc.target/aarch64/ands_2.c: LikewiseIndex: gcc/testsuite/gcc.target/aarch64/ands_1.c

RE: [PATCH, AArch64] Support BICS instruction in the backend

2013-05-01 Thread Ian Bolton
highlighted on your other patch, ie the first pattern will also match anything matched by the second pattern. /Marcus I've fixed the rules in the testcases and renamed the files to match naming conventions in the latest patch (attached). OK to commit? Cheers, Ian 2013-05-01 Ian Bolton

[PATCH, AArch64] Fix for LDR/STR to/from S and D registers

2013-05-01 Thread Ian Bolton
. OK for trunk? Cheers, Ian 2013-05-01 Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64.md (movsi_aarch64): Only allow to/from S reg when fp attribute set. (movdi_aarch64): Only allow to/from D reg when fp attribute set.Index: gcc/config/aarch64/aarch64.md

RE: [PATCH, AArch64] Support BICS instruction in the backend

2013-05-01 Thread Ian Bolton
Can we have the patch attached ? OK Index: gcc/testsuite/gcc.target/aarch64/bics_1.c === --- gcc/testsuite/gcc.target/aarch64/bics_1.c (revision 0) +++ gcc/testsuite/gcc.target/aarch64/bics_1.c (revision 0) @@ -0,0 +1,107 @@ +/*

[PATCH, AArch64] Testcases for ANDS instruction

2013-04-26 Thread Ian Bolton
, Ian 2013-04-26 Ian Bolton ian.bol...@arm.com * gcc.target/aarch64/ands.c: New test. * gcc.target/aarch64/ands2.c: LikewiseIndex: gcc/testsuite/gcc.target/aarch64/ands2.c === --- gcc/testsuite/gcc.target/aarch64

[PATCH, AArch64] Support BICS instruction in the backend

2013-04-26 Thread Ian Bolton
With these patterns, we can now generate BICS in the appropriate places. I've included test cases. This has been run on linux and bare-metal regression tests. OK to commit? Cheers, Ian 2013-04-26 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.md

[PATCH, AArch64] Support LDR/STR to/from S and D registers

2013-04-26 Thread Ian Bolton
This patch allows us to load to and store from the S and D registers, which helps with doing scalar operations in those registers. This has been regression tested on bare-metal and linux. OK for trunk? Cheers, Ian 2013-04-26 Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64.md

RE: [PATCH, AArch64] Make MOVK output operand 2 in hex

2013-04-25 Thread Ian Bolton
Since this is a bug fix, I'll need to backport to 4.8. Is that OK? Cheers, Ian OK /Marcus On 20 March 2013 17:21, Ian Bolton ian.bol...@arm.com wrote: MOVK should not be generated with a negative immediate, which the assembler rightfully rejects. This patch makes MOVK output its

[PATCH, AArch64] Enable Redundant Extension Elimination by default at 02 or higher

2013-04-24 Thread Ian Bolton
This patch enables Redundant Extension Elimination pass for AArch64. Testing shows no regressions on linux and bare-metal. In terms of performance impact, it reduces code-size for some benchmarks and makes no difference on others. OK to commit to trunk? Cheers, Ian 2013-04-24 Ian Bolton

[PATCH AArch64] Make omit-frame-pointer work correctly

2013-03-28 Thread Ian Bolton
then they are not generated there unless LR gets clobbered in the leaf for some reason. (I have testcases here to check for that.) OK to commit to trunk? Cheers, Ian 2013-03-28 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.md (aarch64_can_eliminate): Only keep frame record when

[PATCH, AArch64] Make MOVK output operand 2 in hex

2013-03-20 Thread Ian Bolton
MOVK should not be generated with a negative immediate, which the assembler rightfully rejects. This patch makes MOVK output its 2nd operand in hex instead. Tested on bare-metal and linux. OK for trunk? Cheers, Ian 2013-03-20 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64

RE: [PING^1] [AArch64] Implement Bitwise AND and Set Flags

2013-03-15 Thread Ian Bolton
Please consider this as a reminder to review the patch posted at following link:- http://gcc.gnu.org/ml/gcc-patches/2013-01/msg01374.html The patch is slightly modified to use CC_NZ mode instead of CC. Please review the patch and let me know if its okay? Hi Naveen, With the CC_NZ fix,

[PATCH, AArch64] Support EXTR in backend

2013-03-14 Thread Ian Bolton
We couldn't generate EXTR for AArch64 ... until now! This patch includes the pattern and a test. Full regression testing for Linux and bare-metal passed. OK for trunk stage-1? Thanks, Ian 2013-03-14 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.md (*extrmode5_insn

[PATCH, AArch64] Support ROR in backend

2013-03-14 Thread Ian Bolton
-14 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.md (*rormode3_insn): New pattern. (*rorsi3_insn_uxtw): Likewise. testsuite/ * gcc.target/aarch64/ror.c: New test. diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index ef1c0f3

[PATCH, AArch64] Support SBC in the backend

2013-03-14 Thread Ian Bolton
We couldn't generate SBC for AArch64 ... until now! This really patch includes the main pattern, a zero_extend form of it and a test. Full regression testing for Linux and bare-metal passed. OK for trunk stage-1? Thanks, Ian 2013-03-14 Ian Bolton ian.bol...@arm.com gcc/ * config

[PATCH, AArch64] AND operation should use CC_NZ mode

2013-02-01 Thread Ian Bolton
The mode for AND should really be CC_NZ, so I fixed that up and in the TST patterns that (erroneously) expected it to be CC mode. It has been tested on linux and bare-metal. OK to commit to trunk (as bug fix)? Thanks. Ian 13-02-01 Ian Bolton ian.bol...@arm.com * config/aarch64

[PATCH, AArch64] Make zero_extends explicit for some SImode patterns

2013-01-15 Thread Ian Bolton
the work of one already committed. :) This has been regression-tested for linux and bare-metal. OK for trunk and backport to ARM/aarch64-4.7-branch? Cheers, Ian 2013-01-15 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.md (*cstoresi_neg_uxtw): New pattern

RE: [PATCH, AArch64] Make zero_extends explicit for common SImode patterns

2012-12-14 Thread Ian Bolton
Hi Richard, + add\\t%w0, %w2, %w, suxtSHORT:size ^^^ %w1 Got spot. I guess that pattern hasn't fired yet then! I'll fix it. This patch significantly reduces the number of redundant uxtw instructions seen in a variety of programs. (There are further patterns

RE: [PATCH, AArch64] Make zero_extends explicit for common SImode patterns

2012-12-14 Thread Ian Bolton
Hi Richard, + add\\t%w0, %w2, %w, suxtSHORT:size ^^^ %w1 Got spot. I guess that pattern hasn't fired yet then! I'll fix it. Now fixed in v3. I should have said that I am indeed running with REE enabled. It has some impact (about 70 further UXTW removed from

[PATCH, AArch64] Make zero_extends explicit for common SImode patterns

2012-12-13 Thread Ian Bolton
the number of redundant uxtw instructions seen in a variety of programs. (There are further patterns that can be done, but I have them in a separate patch that's still in development.) OK for trunk and backport to ARM/aarch64-4.7-branch? Cheers, Ian 2012-12-13 Ian Bolton ian.bol...@arm.com

RE: [PATCH, AArch64 4.7] Backport of __builtin_bswap16 optimisation

2012-11-30 Thread Ian Bolton
It turned out that this patch depended on another one from earlier, so I have backported that to ARM/aarch64-4.7-branch too. http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00452.html Cheers, Ian -Original Message- From: Ian Bolton [mailto:ian.bol...@arm.com] Sent: 23 November 2012 18

[PATCH, AArch64 4.7] Backport of __builtin_bswap16 optimisation

2012-11-23 Thread Ian Bolton
I had already committed my testcase for this for aarch64, but it depends on this patch that doesn't yet exist in 4.7, so I backported to our ARM/aarch64-4.7-branch. Cheers, Ian From: http://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=f811051bf87b1de7804c19c8192 d0d099d157145 diff --git

[PATCH AArch64] Fix faulty commit of testsuite/gcc.target/aarch64/csinc-2.c

2012-11-16 Thread Ian Bolton
A commit I did earlier in the week got truncated somehow, leading to a broken testcase for AArch64 target. I've just commited this fix as obvious on trunk and the arm/aarch64-4.7-branch. Cheers Ian Index: gcc/testsuite/gcc.target/aarch64/csinc-2.c

[PATCH AArch64] Implement bswaphi2 with rev16

2012-11-16 Thread Ian Bolton
This patch implements the standard pattern bswaphi2 for AArch64. Regression tests all pass. OK for trunk and backport to arm/aarch64-4.7-branch? Cheers, Ian 2012-11-16 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.md (bswaphi2): New pattern. * gcc/testsuite

[PATCH arm/aarch64-4.7] Fix up Changelogs

2012-11-14 Thread Ian Bolton
Some changes had been added to gcc/ChangeLog and gcc/testsuite/Changelog when they should have been recorded in the gcc/Changelog.aarch64 and gcc/testsuite/Changelog.aarch64 files instead. Committed as obvious. Cheers, Ian

[PATCH,AArch64] Optimise comparison where intermediate result not used

2012-11-06 Thread Ian Bolton
of this work. OK for trunk? Cheers, Ian 2012-11-06 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.md (*compare_negmode): New pattern. * gcc/testsuite/gcc.target/aarch64/cmn.c: New test. * gcc/testsuite/gcc.target/aarch64/adds.c: New test. * gcc/testsuite/gcc.target

[PATCH,AArch64] Use CSINC instead of CSEL to return 1

2012-11-06 Thread Ian Bolton
regression tested on trunk. OK for commit? Cheers, Ian 2012-11-06 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.md (cmovmode_insn): Emit CSINC when one of the alternatives is constant 1. * gcc/config/aarch64/constraints.md: New constraint. * gcc

RE: [PATCH][AArch64] Restrict usage of SBFIZ to valid range only

2012-10-16 Thread Ian Bolton
before allowing the pattern to be used. This has now had full regression testing and all is OK. OK for aarch64-trunk and aarch64-4_7-branch? Cheers, Ian 2012-10-15 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.md (optabALLX:mode_shft_GPI:mode): Restrict

[PATCH][AArch64] Restrict usage of SBFIZ to valid range only

2012-10-15 Thread Ian Bolton
testing and all is OK. OK for aarch64-trunk and aarch64-4_7-branch? Cheers, Ian 2012-10-15 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.md (optabALLX:mode_shft_GPI:mode): Restrict based on op2. - diff --git a/gcc/config/aarch64/aarch64.md b

RE: [PATCH, AArch64] Allow symbol+offset even if not being used for memory access

2012-09-25 Thread Ian Bolton
Ok. Having dug a bit deeper I think the main problem is that you're working against yourself by not handling this pattern right from the beginning. You have split the address incorrectly to begin and are now trying to recover after the fact. The following patch seems to do the trick for

[PATCH, AArch64] Handle symbol + offset more effectively

2012-09-25 Thread Ian Bolton
testing showed no regressions for bare-metal or linux. OK for aarch64-branch and aarch64-4.7-branch? Cheers, Ian 2012-09-25 Richard Henderson r...@redhat.com Ian Bolton ian.bol...@arm.com * config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Fix a functional

[PATCH, AArch64] Implement ctz and clrsb standard patterns

2012-09-18 Thread Ian Bolton
, Ian 2012-09-18 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.h: Define CTZ_DEFINED_VALUE_AT_ZERO. * config/aarch64/aarch64.md (clrsbmode2): New pattern. * config/aarch64/aarch64.md (rbitmode2): New pattern. * config/aarch64/aarch64.md (ctzmode2

RE: [PATCH, AArch64] Implement ctz and clrsb standard patterns

2012-09-18 Thread Ian Bolton
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 33815ff..5278957 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -153,6 +153,8 @@ (UNSPEC_CMTST 83) ; Used in aarch64-simd.md. (UNSPEC_FMAX83) ; Used

RE: [PATCH, AArch64] Implement ctz and clrsb standard patterns

2012-09-18 Thread Ian Bolton
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index 33815ff..5278957 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md @@ -153,6 +153,8 @@ (UNSPEC_CMTST 83) ; Used in aarch64-simd.md. (UNSPEC_FMAX

RE: [PATCH, AArch64] Implement ctz and clrsb standard patterns

2012-09-18 Thread Ian Bolton
New version attached with better formatted test cases. OK for aarch64-branch and aarch64-4.7-branch? Cheers, Ian - 2012-09-18 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.h: Define CTZ_DEFINED_VALUE_AT_ZERO

RE: [PATCH, AArch64] Implement fnma, fms and fnms standard patterns

2012-09-17 Thread Ian Bolton
OK for 4.7 as well? -Original Message- From: Richard Earnshaw Sent: 14 September 2012 18:18 To: Ian Bolton Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH, AArch64] Implement fnma, fms and fnms standard patterns On 14/09/12 18:05, Ian Bolton wrote: The following standard

RE: [PATCH, AArch64] Implement ffs standard pattern

2012-09-17 Thread Ian Bolton
OK for aarch64-4.7-branch as well? -Original Message- From: Richard Earnshaw Sent: 14 September 2012 18:31 To: Ian Bolton Cc: gcc-patches@gcc.gnu.org Subject: Re: [PATCH, AArch64] Implement ffs standard pattern On 14/09/12 16:26, Ian Bolton wrote: I've implemented the standard

[PATCH, AArch64] Implement ffs standard pattern

2012-09-14 Thread Ian Bolton
I've implemented the standard pattern ffs, which leads to __builtin_ffs being generated with 4 instructions instead of 5 instructions. Regression tests and my new test pass. OK to commit? Cheers, Ian 2012-09-14 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.md

[PATCH, AArch64] Implement fnma, fms and fnms standard patterns

2012-09-14 Thread Ian Bolton
2012-09-14 Ian Bolton ian.bol...@arm.com gcc/ * config/aarch64/aarch64.md (fmsubmode4): Renamed to fnmamode4. * config/aarch64/aarch64.md (fnmsubmode4): Renamed to fmsmode4. * config/aarch64/aarch64.md (fnmaddmode4): Renamed to fnmsmode4

RE: [PATCH, AArch64] Allow symbol+offset even if not being used for memory access

2012-09-10 Thread Ian Bolton
Can you send me the test case you were looking at for this? See attached. (Most of it is superfluous, but the point is that we are not using the address to do a memory access.) Cheers, Ian constant-test1.c Description: Binary data

RE: [PATCH, AArch64] Allow symbol+offset even if not being used for memory access

2012-09-06 Thread Ian Bolton
On 2012-08-31 07:49, Ian Bolton wrote: +(define_split + [(set (match_operand:DI 0 register_operand =r) + (const:DI (plus:DI (match_operand:DI 1 aarch64_valid_symref S) + (match_operand:DI 2 const_int_operand i] + + [(set (match_dup 0) (high:DI

RE: [PATCH, AArch64] Allow symbol+offset even if not being used for memory access

2012-09-06 Thread Ian Bolton
From: Richard Henderson [mailto:r...@redhat.com] On 09/06/2012 08:06 AM, Ian Bolton wrote: If I don't use my split pattern, I could alter combine to remove the requirement that parent is a MEM. What do you think? I merely question the calling out of CONST as special. Either you've

[PATCH, AArch64] Allow symbol+offset even if not being used for memory access

2012-08-31 Thread Ian Bolton
shows no regressions. OK to commit? 2012-08-31 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.md: New pattern.diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md index a00d3f0..de9c927 100644 --- a/gcc/config/aarch64/aarch64.md +++ b/gcc/config

[PATCH, AArch64] Allow symbol+offset as symbolic constant expression

2012-07-06 Thread Ian Bolton
have seen up to 1K reduction in code size. OK to commit? Cheers, Ian 2012-07-06 Ian Bolton ian.bol...@arm.com * gcc/config/aarch64/aarch64.c (aarch64_print_operand): Use aarch64_classify_symbolic_expression for classifying operands. * gcc/config/aarch64/aarch64.c

RE: Move cgraph_node_set and varpool_node_set out of GGC and make them use pointer_map

2011-05-04 Thread Ian Bolton
Hi, I always considered the cgrpah_node_set/varpool_node_set to be overengineered but they also turned out to be quite ineffective since we do quite a lot of queries into them during stremaing out. This patch moves them to pointer_map, like I did for streamer cache. While doing so I