This selects MVE VQADD from the vector llvm.sadd.sat or llvm.uadd.sat intrinsics.
The signed versions seem hard to get from C, but the unsigned are simple enough. And both are available from llvm, obviously.
Paths
| Differential D68566
[ARM] VQADD instructions ClosedPublic Authored by dmgreen on Oct 7 2019, 4:00 AM.
Details Summary This selects MVE VQADD from the vector llvm.sadd.sat or llvm.uadd.sat intrinsics. The signed versions seem hard to get from C, but the unsigned are simple enough. And both are available from llvm, obviously.
Diff Detail
Event TimelineComment Actions Looks like a nice bit of isel to me.
This revision is now accepted and ready to land.Oct 7 2019, 5:07 AM Comment Actions Just wondering, who generates the intrinsics? From the little that I remember from the last time I looked, I thought it was clang but it that is was x86 specific? Do we have some hooks somewhere saying that we support them? Comment Actions The usat version can be idiom recognised from C:
Closed by commit rG39596ec2fee0: [ARM] VQADD instructions (authored by dmgreen). · Explain WhyOct 10 2019, 6:09 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 224326 llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll
|
And looking at this, I almost start to like tablegen. :-)