This is an archive of the discontinued LLVM Phabricator instance.

Downstream SVE/SVE2 implementation (LLVM)
AbandonedPublic

Authored by sdesmalen on Dec 19 2019, 9:03 AM.

Details

Summary

DO NOT REVIEW; For reference only.

This patch contains Arm's downstream changes to LLVM for SVE/SVE2. This supports SVE/SVE2 CodeGen, scalable auto-vectorization and the ACLE (C/C++ intrinsics interface).

While the patches are still based on LLVM 7, it should be a good indication of the changes we've made to support scalable vectors. Note that these patches are meant for reference and are not intended to be committed. This patch may help clarify some of the design choices we've made when implementing scalable vectors for SVE, and it allows others to experiment with our scalable-vector implementation.

The patches apply cleanly to the LLVM 7 release branch.

Diff Detail

Event Timeline

sdesmalen created this revision.Dec 19 2019, 9:03 AM
sdesmalen planned changes to this revision.Dec 19 2019, 9:03 AM

Hi Sander,

How different is this to the GitHub repo?

Is this updated with the recent patches that have gone in and the changes that they pose on your internal implementation?

Thanks!
--renato

Hi Renato,

How different is this to the GitHub repo?

The GitHub repo you refer to was already several years ago and was based on an older version of LLVM. Our code base has progressed quite a bit since then; we've cleaned up and reimplemented certain functionality, added new optimizations and also added support for SVE2. Even though the patch is based on LLVM 7, the patch is still quite recent as we created it just before starting our merge to LLVM 9.

Note that the reason for posting these patches here (rather than posting this on another GitHub repo) was because some people on the SVE/SVE2 sync-up call mentioned they have restrictions downloading from GitHub repositories other than the llvm-project, whereas the process of downloading patches from Phabricator is allowed by their company policies.

Thanks for checking!

vkmr added a subscriber: vkmr.Jan 10 2020, 6:23 AM

The Download raw diff button seems to run into a Unhandled Exception page.
arc patch doesn't work either because the patches are missing the llvm/ and clang/ prefix to the file paths.

To download patch D71712 and D71713, you can use the following commands:

CONDUIT_TOKEN=<copy/paste an API Token from https://reviews.llvm.org/conduit/login/>

# Download D71712 (LLVM)
curl https://reviews.llvm.org/api/differential.getrawdiff \
   -d api.token=$CONDUIT_TOKEN \
   -d diffID=234735 \
 | python -c 'import json,sys;obj=json.load(sys.stdin); print obj["result"].encode("utf8")' > llvm.diff

# Download D71713 (Clang)
curl https://reviews.llvm.org/api/differential.getrawdiff \
   -d api.token=$CONDUIT_TOKEN \
   -d diffID=234737 \
 | python -c 'import json,sys;obj=json.load(sys.stdin); print obj["result"].encode("utf8")' > clang.diff
nhaehnle removed a subscriber: nhaehnle.Jan 22 2020, 5:04 AM
sdesmalen abandoned this revision.Sep 3 2020, 1:43 AM

Abandoning this revision because an updated version of this patch (based on LLVM 9) has been posted in D87056.