On 27/05/16 14:03, James Greenhalgh wrote:
On Tue, May 24, 2016 at 09:23:36AM +0100, Jiong Wang wrote:
         * config/aarch64/aarch64-simd-builtins.def: Rename to
         aarch64-builtins.def.
Why? We already have some number of intrinsics in here that are not
strictly SIMD, but I don't see the value in the rename?

Mostly because this builtin infrastructure is handy that I want to
implement some vfp builtins in this .def file instead of implement those
raw structure inside aarch64-builtins.c.

And there maybe more and more such builtins in the future, so I renamed
this file.


Is this OK?

+(define_int_iterator FCVT_FIXED2F_SCALAR [UNSPEC_SCVTF_SCALAR 
UNSPEC_UCVTF_SCALAR])
Again, do we need the "SCALAR" versions at all?

That's because for scalar fixed-point conversion, we have two types of
instructions to support this.

  * scalar instruction from vfp
  * scalar variant instruction from simd

One is guarded by TARGET_FLOAT, the other is guarded by TARGET_SIMD, and
their instruction format is different, so I want to keep them in
aarch64.md and aarch64-simd.md seperately.

The other reason is these two use different patterns:

  * vfp scalar support conversion between different size, for example,
    SF->DI, DF->SI, so it's using two mode iterators, GPI and GPF, and
    is utilizing the product of the two to cover all supported
    conversions, sfsi, sfdi, dfsi, dfdi, sisf, sidf, disf, didf.

  * simd scalar only support conversion between same size that single
    mode iterator is used to cover sfsi, sisf, dfdi, didf.

For intrinsics implementation, I used builtins backed by vfp scalar
instead of simd scalar which requires the input sitting inside vector register.

I remember the simd scalar pattern was here because it's anyway needed
by patch [2/6] which extends it's modes naturally to vector modes. I was
thinking it's better to keep simd scalar variant with this scalar
intrinsics enable patch.

Is this OK?

Thanks.

Reply via email to