This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [AArch64] Tighten predicates on SIMD shift intrinsics
- From: Richard Henderson <rth at redhat dot com>
- To: James Greenhalgh <james dot greenhalgh at arm dot com>, gcc-patches at gcc dot gnu dot org
- Cc: marcus dot shawcroft at arm dot com
- Date: Thu, 25 Sep 2014 08:18:26 -0700
- Subject: Re: [AArch64] Tighten predicates on SIMD shift intrinsics
- Authentication-results: sourceware.org; auth=none
- References: <541C6062 dot 5080702 at redhat dot com> <1411657518-25872-1-git-send-email-james dot greenhalgh at arm dot com>
On 09/25/2014 08:05 AM, James Greenhalgh wrote:
>
> On Fri, Sep 19, 2014 at 05:57:06PM +0100, Richard Henderson wrote:
>> On 09/11/2014 01:29 AM, James Greenhalgh wrote:
>>> +;; Predicates used by the various SIMD shift operations. These
>>> +;; fall in to 3 categories.
>>> +;; Shifts with a range 0-(bit_size - 1) (aarch64_simd_shift_imm)
>>> +;; Shifts with a range 1-bit_size (aarch64_simd_shift_imm_offset)
>>> +;; Shifts with a range 0-bit_size (aarch64_simd_shift_imm_bitsize)
>>> +(define_predicate "aarch64_simd_shift_imm_qi"
>>> + (and (match_code "const_int")
>>> + (match_test "aarch64_simd_const_bounds (op, 0, 7)")))
>>
>> The function call should be removed and this should be written as
>>
>> (match_test "IN_RANGE (ival, 0, 7)")
>>
>
> Quite right, updated as attached.
>
> Cross-tested for aarch64-none-elf with no issues.
>
> OK?
>
> Thanks,
> James
>
> ---
> gcc/
>
> 2014-09-25 James Greenhalgh <james.greenhalgh@arm.com>
>
> * config/aarch64/aarch64-protos.h (aarch64_simd_const_bounds): Delete.
> * config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shl<mode>): Use
> new predicates.
> (aarch64_<sur>shll2_n<mode>): Likewise.
> (aarch64_<sur>shr_n<mode>): Likewise.
> (aarch64_<sur>sra_n<mode>: Likewise.
> (aarch64_<sur>s<lr>i_n<mode>): Likewise.
> (aarch64_<sur>qshl<u>_n<mode>): Likewise.
> * config/aarch64/aarch64.c (aarch64_simd_const_bounds): Delete.
> * config/aarch64/iterators.md (ve_mode): New.
> (offsetlr): Remap to infix text for use in new predicates.
> * config/aarch64/predicates.md (aarch64_simd_shift_imm_qi): New.
> (aarch64_simd_shift_imm_hi): Likewise.
> (aarch64_simd_shift_imm_si): Likewise.
> (aarch64_simd_shift_imm_di): Likewise.
> (aarch64_simd_shift_imm_offset_qi): Likewise.
> (aarch64_simd_shift_imm_offset_hi): Likewise.
> (aarch64_simd_shift_imm_offset_si): Likewise.
> (aarch64_simd_shift_imm_offset_di): Likewise.
> (aarch64_simd_shift_imm_bitsize_qi): Likewise.
> (aarch64_simd_shift_imm_bitsize_hi): Likewise.
> (aarch64_simd_shift_imm_bitsize_si): Likewise.
> (aarch64_simd_shift_imm_bitsize_di): Likewise.
Looks good to me.
r~