[PATCH] D87056: [POC] SVE/SVE2 implementation (LLVM 9)

Sander de Smalen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 2 14:38:00 PDT 2020


sdesmalen created this revision.
Herald added subscribers: llvm-commits, cfe-commits, dang, nikic, aaron.ballman, ecnelises, dantrushin, kerbowa, s.egerton, Jim, asbirlea, jfb, arphaman, dexonsmith, rogfer01, steven_wu, atanasyan, mgrang, zzheng, jrtc27, delcypher, simoncook, haicheng, kosarev, javed.absar, fedor.sergeev, kbarton, hiraditya, kristof.beyls, eraman, jgravelle-google, krytarowski, tschuett, sbc100, mgorny, nhaehnle, jvesely, nemanjai, sdardis, dylanmckay, dschuff, arsenm, qcolombet, MatzeB, emaste, jholewinski.
Herald added a reviewer: deadalnix.
Herald added a reviewer: alexshap.
Herald added a reviewer: rupprecht.
Herald added a reviewer: jhenderson.
Herald added a reviewer: rengolin.
Herald added a reviewer: DavidTruby.
Herald added a reviewer: ctetreau.
Herald added a reviewer: sscalpone.
Herald added a reviewer: aaron.ballman.
Herald added a reviewer: jdoerfert.
Herald added projects: clang, LLVM.
sdesmalen requested review of this revision.
Herald added subscribers: sstefan1, vkmr, ormris, MaskRay, aheejin.

DO NOT REVIEW; For reference only.

This patch contains Arm's changes to LLVM 9 to support 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 9, it should be a good
indication of the changes we've made to support scalable vectors.
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 `llvmorg-9.0.0` tag in the Monorepo.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D87056

Files:
  clang/include/clang/AST/ASTContext.h
  clang/include/clang/AST/BuiltinTypesSVE.def
  clang/include/clang/AST/CanonicalType.h
  clang/include/clang/AST/Decl.h
  clang/include/clang/AST/Expr.h
  clang/include/clang/AST/TargetTypes.h
  clang/include/clang/AST/Type.h
  clang/include/clang/AST/TypeLoc.h
  clang/include/clang/Basic/Attr.td
  clang/include/clang/Basic/AttrDocs.td
  clang/include/clang/Basic/BuiltinsSVE.def
  clang/include/clang/Basic/CMakeLists.txt
  clang/include/clang/Basic/CodeGenOptions.def
  clang/include/clang/Basic/CodeGenOptions.h
  clang/include/clang/Basic/Diagnostic.td
  clang/include/clang/Basic/DiagnosticASTKinds.td
  clang/include/clang/Basic/DiagnosticDriverKinds.td
  clang/include/clang/Basic/DiagnosticFrontendKinds.td
  clang/include/clang/Basic/DiagnosticGroups.td
  clang/include/clang/Basic/DiagnosticIDs.h
  clang/include/clang/Basic/DiagnosticParseKinds.td
  clang/include/clang/Basic/DiagnosticSemaKinds.td
  clang/include/clang/Basic/LangOptions.def
  clang/include/clang/Basic/OpenMPKinds.def
  clang/include/clang/Basic/Sanitizers.def
  clang/include/clang/Basic/Specifiers.h
  clang/include/clang/Basic/TargetBuiltins.h
  clang/include/clang/Basic/TargetInfo.h
  clang/include/clang/Basic/TokenKinds.def
  clang/include/clang/Basic/Version.h
  clang/include/clang/Basic/arm_sve.td
  clang/include/clang/Config/config.h.cmake
  clang/include/clang/Driver/Action.h
  clang/include/clang/Driver/CC1Options.td
  clang/include/clang/Driver/Compilation.h
  clang/include/clang/Driver/Driver.h
  clang/include/clang/Driver/Options.h
  clang/include/clang/Driver/Options.td
  clang/include/clang/Driver/Phases.h
  clang/include/clang/Driver/ToolChain.h
  clang/include/clang/Driver/Types.def
  clang/include/clang/Driver/Types.h
  clang/include/clang/Driver/Util.h
  clang/include/clang/Frontend/CompilerInstance.h
  clang/include/clang/Parse/Parser.h
  clang/include/clang/Sema/DeclSpec.h
  clang/include/clang/Sema/Initialization.h
  clang/include/clang/Sema/Sema.h
  clang/include/clang/module.modulemap
  clang/lib/AST/ASTContext.cpp
  clang/lib/AST/ExprClassification.cpp
  clang/lib/AST/ExprConstant.cpp
  clang/lib/AST/ItaniumMangle.cpp
  clang/lib/AST/MicrosoftMangle.cpp
  clang/lib/AST/RecordLayoutBuilder.cpp
  clang/lib/AST/Type.cpp
  clang/lib/Basic/CMakeLists.txt
  clang/lib/Basic/OpenMPKinds.cpp
  clang/lib/Basic/TargetInfo.cpp
  clang/lib/Basic/Targets.cpp
  clang/lib/Basic/Targets/AArch64.cpp
  clang/lib/Basic/Targets/AArch64.h
  clang/lib/Basic/Version.cpp
  clang/lib/CodeGen/BackendUtil.cpp
  clang/lib/CodeGen/CGAtomic.cpp
  clang/lib/CodeGen/CGBlocks.cpp
  clang/lib/CodeGen/CGBuilder.h
  clang/lib/CodeGen/CGBuiltin.cpp
  clang/lib/CodeGen/CGCXXABI.cpp
  clang/lib/CodeGen/CGCall.cpp
  clang/lib/CodeGen/CGDebugInfo.cpp
  clang/lib/CodeGen/CGDebugInfo.h
  clang/lib/CodeGen/CGDecl.cpp
  clang/lib/CodeGen/CGDeclCXX.cpp
  clang/lib/CodeGen/CGExpr.cpp
  clang/lib/CodeGen/CGExprAgg.cpp
  clang/lib/CodeGen/CGExprCXX.cpp
  clang/lib/CodeGen/CGExprScalar.cpp
  clang/lib/CodeGen/CGLoopInfo.cpp
  clang/lib/CodeGen/CGLoopInfo.h
  clang/lib/CodeGen/CGObjC.cpp
  clang/lib/CodeGen/CGObjCRuntime.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.cpp
  clang/lib/CodeGen/CGOpenMPRuntime.h
  clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
  clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
  clang/lib/CodeGen/CGStmt.cpp
  clang/lib/CodeGen/CGStmtOpenMP.cpp
  clang/lib/CodeGen/CMakeLists.txt
  clang/lib/CodeGen/CodeGenAction.cpp
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/lib/CodeGen/CodeGenFunction.h
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/CodeGen/CodeGenModule.h
  clang/lib/CodeGen/CodeGenTBAA.cpp
  clang/lib/CodeGen/CodeGenTargetTypes.cpp
  clang/lib/CodeGen/CodeGenTargetTypes.h
  clang/lib/CodeGen/CodeGenTypes.cpp
  clang/lib/CodeGen/CodeGenTypes.h
  clang/lib/CodeGen/ItaniumCXXABI.cpp
  clang/lib/CodeGen/MicrosoftCXXABI.cpp
  clang/lib/CodeGen/SwiftCallingConv.cpp
  clang/lib/CodeGen/TargetInfo.cpp
  clang/lib/Driver/Action.cpp
  clang/lib/Driver/CMakeLists.txt
  clang/lib/Driver/Compilation.cpp
  clang/lib/Driver/Driver.cpp
  clang/lib/Driver/DriverOptions.cpp
  clang/lib/Driver/Job.cpp
  clang/lib/Driver/Phases.cpp
  clang/lib/Driver/ToolChain.cpp
  clang/lib/Driver/ToolChains/AMDGPU.cpp
  clang/lib/Driver/ToolChains/AVR.cpp
  clang/lib/Driver/ToolChains/Ananas.cpp
  clang/lib/Driver/ToolChains/Arch/AArch64.cpp
  clang/lib/Driver/ToolChains/Arch/AArch64.h
  clang/lib/Driver/ToolChains/BareMetal.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/lib/Driver/ToolChains/CloudABI.cpp
  clang/lib/Driver/ToolChains/CommonArgs.cpp
  clang/lib/Driver/ToolChains/CommonArgs.h
  clang/lib/Driver/ToolChains/CrossWindows.cpp
  clang/lib/Driver/ToolChains/Cuda.cpp
  clang/lib/Driver/ToolChains/Cuda.h
  clang/lib/Driver/ToolChains/Darwin.cpp
  clang/lib/Driver/ToolChains/DragonFly.cpp
  clang/lib/Driver/ToolChains/Flang.cpp
  clang/lib/Driver/ToolChains/Flang.h
  clang/lib/Driver/ToolChains/FreeBSD.cpp
  clang/lib/Driver/ToolChains/Fuchsia.cpp
  clang/lib/Driver/ToolChains/Gnu.cpp
  clang/lib/Driver/ToolChains/Hexagon.cpp
  clang/lib/Driver/ToolChains/Linux.cpp
  clang/lib/Driver/ToolChains/Linux.h
  clang/lib/Driver/ToolChains/MSVC.cpp
  clang/lib/Driver/ToolChains/MinGW.cpp
  clang/lib/Driver/ToolChains/Minix.cpp
  clang/lib/Driver/ToolChains/Myriad.cpp
  clang/lib/Driver/ToolChains/NaCl.cpp
  clang/lib/Driver/ToolChains/NetBSD.cpp
  clang/lib/Driver/ToolChains/OpenBSD.cpp
  clang/lib/Driver/ToolChains/PS4CPU.cpp
  clang/lib/Driver/ToolChains/Solaris.cpp
  clang/lib/Driver/ToolChains/WebAssembly.cpp
  clang/lib/Driver/ToolChains/XCore.cpp
  clang/lib/Driver/Types.cpp
  clang/lib/Frontend/CompilerInstance.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/lib/Frontend/InitPreprocessor.cpp
  clang/lib/Frontend/TextDiagnostic.cpp
  clang/lib/Headers/CMakeLists.txt
  clang/lib/Headers/math.h
  clang/lib/Headers/module.modulemap
  clang/lib/Index/IndexSymbol.cpp
  clang/lib/Index/USRGeneration.cpp
  clang/lib/Lex/ModuleMap.cpp
  clang/lib/Parse/ParseDecl.cpp
  clang/lib/Parse/ParseDeclCXX.cpp
  clang/lib/Parse/ParseOpenMP.cpp
  clang/lib/Parse/ParsePragma.cpp
  clang/lib/Parse/ParseTentative.cpp
  clang/lib/Parse/Parser.cpp
  clang/lib/Sema/DeclSpec.cpp
  clang/lib/Sema/Sema.cpp
  clang/lib/Sema/SemaCXXScopeSpec.cpp
  clang/lib/Sema/SemaCast.cpp
  clang/lib/Sema/SemaChecking.cpp
  clang/lib/Sema/SemaCodeComplete.cpp
  clang/lib/Sema/SemaDecl.cpp
  clang/lib/Sema/SemaDeclAttr.cpp
  clang/lib/Sema/SemaDeclCXX.cpp
  clang/lib/Sema/SemaExpr.cpp
  clang/lib/Sema/SemaExprCXX.cpp
  clang/lib/Sema/SemaExprMember.cpp
  clang/lib/Sema/SemaFixItUtils.cpp
  clang/lib/Sema/SemaInit.cpp
  clang/lib/Sema/SemaLambda.cpp
  clang/lib/Sema/SemaOpenMP.cpp
  clang/lib/Sema/SemaOverload.cpp
  clang/lib/Sema/SemaStmtAsm.cpp
  clang/lib/Sema/SemaStmtAttr.cpp
  clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
  clang/lib/Sema/SemaTemplateVariadic.cpp
  clang/lib/Sema/SemaType.cpp
  clang/lib/Serialization/ASTCommon.cpp
  clang/lib/Tooling/CompilationDatabase.cpp
  clang/test/AST/dump.cpp
  clang/test/Analysis/Inputs/insight-md5sum-testfile.c
  clang/test/CXX/modules-ts/basic/basic.link/p2/module.cpp
  clang/test/CodeGen/AArch64/aarch64-sve-inline-asm-vec-low.c
  clang/test/CodeGen/AArch64/acle/acle_sve_abd.c
  clang/test/CodeGen/AArch64/acle/acle_sve_abs.c
  clang/test/CodeGen/AArch64/acle/acle_sve_acge.c
  clang/test/CodeGen/AArch64/acle/acle_sve_acgt.c
  clang/test/CodeGen/AArch64/acle/acle_sve_acle.c
  clang/test/CodeGen/AArch64/acle/acle_sve_aclt.c
  clang/test/CodeGen/AArch64/acle/acle_sve_add.c
  clang/test/CodeGen/AArch64/acle/acle_sve_adda.c
  clang/test/CodeGen/AArch64/acle/acle_sve_addv.c
  clang/test/CodeGen/AArch64/acle/acle_sve_adrb.c
  clang/test/CodeGen/AArch64/acle/acle_sve_adrd.c
  clang/test/CodeGen/AArch64/acle/acle_sve_adrh.c
  clang/test/CodeGen/AArch64/acle/acle_sve_adrw.c
  clang/test/CodeGen/AArch64/acle/acle_sve_and.c
  clang/test/CodeGen/AArch64/acle/acle_sve_andv.c
  clang/test/CodeGen/AArch64/acle/acle_sve_asr.c
  clang/test/CodeGen/AArch64/acle/acle_sve_asrd.c
  clang/test/CodeGen/AArch64/acle/acle_sve_bic.c
  clang/test/CodeGen/AArch64/acle/acle_sve_brka.c
  clang/test/CodeGen/AArch64/acle/acle_sve_brkb.c
  clang/test/CodeGen/AArch64/acle/acle_sve_brkn.c
  clang/test/CodeGen/AArch64/acle/acle_sve_brkpa.c
  clang/test/CodeGen/AArch64/acle/acle_sve_brkpb.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cadd.c
  clang/test/CodeGen/AArch64/acle/acle_sve_clasta.c
  clang/test/CodeGen/AArch64/acle/acle_sve_clastb.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cls.c
  clang/test/CodeGen/AArch64/acle/acle_sve_clz.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmla.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmpeq.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmpge.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmpgt.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmple.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmplt.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmpne.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cmpuo.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cnot.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cnt.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cntb.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cntd.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cnth.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cntp.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cntw.c
  clang/test/CodeGen/AArch64/acle/acle_sve_compact.c
  clang/test/CodeGen/AArch64/acle/acle_sve_create2.c
  clang/test/CodeGen/AArch64/acle/acle_sve_create3.c
  clang/test/CodeGen/AArch64/acle/acle_sve_create4.c
  clang/test/CodeGen/AArch64/acle/acle_sve_cvt.c
  clang/test/CodeGen/AArch64/acle/acle_sve_div.c
  clang/test/CodeGen/AArch64/acle/acle_sve_divr.c
  clang/test/CodeGen/AArch64/acle/acle_sve_dot.c
  clang/test/CodeGen/AArch64/acle/acle_sve_dup.c
  clang/test/CodeGen/AArch64/acle/acle_sve_dupq.c
  clang/test/CodeGen/AArch64/acle/acle_sve_eor.c
  clang/test/CodeGen/AArch64/acle/acle_sve_eorv.c
  clang/test/CodeGen/AArch64/acle/acle_sve_expa.c
  clang/test/CodeGen/AArch64/acle/acle_sve_ext.c
  clang/test/CodeGen/AArch64/acle/acle_sve_extb.c
  clang/test/CodeGen/AArch64/acle/acle_sve_exth.c
  clang/test/CodeGen/AArch64/acle/acle_sve_extw.c
  (1633 more files...)



More information about the llvm-commits mailing list