This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE] Implement shift intrinsics
ClosedPublic

Authored by kmclaughlin on Nov 19 2019, 5:51 AM.

Details

Summary

Adds the following intrinsics:

  • asr & asrd
  • insr
  • lsl & lsr

This patch also adds a new AArch64ISD node (INSR) to represent the int_aarch64_sve_insr intrinsic.

Diff Detail

Event Timeline

kmclaughlin created this revision.Nov 19 2019, 5:51 AM
Herald added a project: Restricted Project. · View Herald Transcript

Two small comments, but overall looks good!

llvm/include/llvm/IR/IntrinsicsAArch64.td
839

If this is an immediate, please add ImmArg<OpNo> to the list of properties.

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
671

Given that we need this for some SVE instructions, perhaps enclose it in if (Subtarget->isSVE()) ?

  • Rebased & enclosed additional setOperationAction calls within check for Subtarget->isSVE()
  • Removed re-ordering of integer arithmetic & logical op intrinsic definitions in IntrinsicsAArch64.td
sdesmalen accepted this revision.Dec 2 2019, 9:43 AM

LGTM!

This revision is now accepted and ready to land.Dec 2 2019, 9:43 AM
This revision was automatically updated to reflect the committed changes.