[PATCH] Rewrite arm_neon.h generation from scratch
Tim Northover
t.p.northover at gmail.com
Wed Jun 11 03:28:19 PDT 2014
Hi James,
On 11 June 2014 10:08, James Molloy <James.Molloy at arm.com> wrote:
> Ping? :)
I also think this is a wonderful change! Even committed now, it would
be a vast improvement on the existing code. I just spotted a couple of
possibilities:
+ /// NeededEarly - set if any other intrinsic depends on this intrinsic.
+ bool NeededEarly;
Was this an early version of the Dependencies thing? It seems unused.
> def OP_XTN : Op<(call "vcombine", $p0, (call "vmovn", $p1))>;
(And others). Was it a conscious decision to use a "vcombine" call
over "(shuffle X, Y, (add mask0, mask1))"? I can see arguments both
ways.
Depending on how cunning we want to be, we could use something like:
class ConcatOp<dag LHS, dag RHS> : Op<(shuffle LHS, RHS, (add
mask0, mask1))>;
Then write (with appropriate "node" handling in Intrinsic::emitDag):
def node;
def OP_XTN : ConcatOp<(node $p0), (call "vmovn", $p1)>;
It only really works because the vcombine is at the outside,
unfortunately. I'd love to be able to apply it to the many vget_high
calls too but can't think of a clean way without reinventing something
like DAGISel's PatFrag.
Cheers.
Tim.
More information about the cfe-commits
mailing list