This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH/AArch64 3/3] * opcodes/aarch64-tbl.h (aarch64_opcode_table): Add back the "lost" instruction aliases for scalar compare and vector compare.
- From: "Dr. Philipp Tomsich" <philipp dot tomsich at theobroma-systems dot com>
- To: James Greenhalgh <james dot greenhalgh at arm dot com>
- Cc: Marcus Shawcroft <marcus dot shawcroft at gmail dot com>, "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Wed, 11 Dec 2013 15:38:15 +0100
- Subject: Re: [PATCH/AArch64 3/3] * opcodes/aarch64-tbl.h (aarch64_opcode_table): Add back the "lost" instruction aliases for scalar compare and vector compare.
- Authentication-results: sourceware.org; auth=none
- References: <1386181767-10323-1-git-send-email-philipp dot tomsich at theobroma-systems dot com> <1386181767-10323-3-git-send-email-philipp dot tomsich at theobroma-systems dot com> <CAFqB+Pw=_LLrOFWPS+MnGsA094OVh_udbyhFJXNO=JOafnpNWg at mail dot gmail dot com> <A691769C-9DA2-49B9-9278-6D51B505A194 at theobroma-systems dot com> <20131211093830 dot GA2589 at arm dot com>
James,
thanks for the clarification and pointing out the change in iterators.md, which only
applies to 4.9 (I didn’t check the sources carefully enough last night), but seems to
have never made it into the 4.8.2 tree.
On 11 Dec 2013, at 10:38 , James Greenhalgh <james.greenhalgh@arm.com> wrote:
> In fact, we have this explicit comment in aarch64/iterators.md calling
> out the absence of the FCMLE and FCMLT 3 register variants and
> describing the workaround.
>
> ;; For comparison operators we use the FCM* and CM* instructions.
> ;; As there are no CMLE or CMLT instructions which act on 3 vector
> ;; operands, we must use CMGE or CMGT and swap the order of the
> ;; source operands.
>
> If you are seeing other instructions generated it is either a bug,
> or some other pattern.
I just rechecked against a fresh checkout of 4.8.2 and still don't see the n_optab
iterator there, so it appears as if that change didn’t make it onto the 4.8 tree.
The sources in 4.8.2 still show:
> fcm<cmp>\t%<v>0<Vmtype>, %<v>1<Vmtype>, %<v>2<Vmtype>
> fcm<cmp>\t%<v>0<Vmtype>, %<v>1<Vmtype>, 0”
with the iterator
> (define_int_attr cmp [(UNSPEC_CMGE "ge") (UNSPEC_CMGT "gt")
> (UNSPEC_CMLE "le") (UNSPEC_CMLT "lt")
> (UNSPEC_CMEQ "eq")
> (UNSPEC_CMHS "hs") (UNSPEC_CMHI "hi")
> (UNSPEC_CMTST "tst")])
Note, that this breaks 481.wrf from SPEC at -O3.
Best,
Philipp.