[PATCH] D137556: [POC] Clang implementation for AArch64 SME and SME2 builtins

Sander de Smalen via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Aug 29 09:39:15 PDT 2023


sdesmalen updated this revision to Diff 554399.
sdesmalen added a comment.
Herald added a subscriber: qcolombet.

The latest patch contains a number of fixes and has been rebased to a more recent commit.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D137556/new/

https://reviews.llvm.org/D137556

Files:
  clang/include/clang/Basic/Attr.td
  clang/include/clang/Basic/BuiltinsAArch64.def
  clang/include/clang/Basic/BuiltinsSVE.def
  clang/include/clang/Basic/CMakeLists.txt
  clang/include/clang/Basic/DiagnosticSemaKinds.td
  clang/include/clang/Basic/TargetBuiltins.h
  clang/include/clang/Basic/arm_sme.td
  clang/include/clang/Basic/arm_sve.td
  clang/include/clang/Basic/arm_sve_sme_incl.td
  clang/include/clang/Sema/Sema.h
  clang/lib/Basic/Targets/AArch64.cpp
  clang/lib/Basic/Targets/AArch64.h
  clang/lib/CodeGen/CGBuiltin.cpp
  clang/lib/CodeGen/CodeGenFunction.h
  clang/lib/Headers/CMakeLists.txt
  clang/lib/Sema/Sema.cpp
  clang/lib/Sema/SemaChecking.cpp
  clang/test/CodeGen/aarch64-sme-intrinsics/aarch64-sme-attrs.cpp
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i32.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_cnt.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_ld1.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_ld1_vnum.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_ldr.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_loads.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mem_ops.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mop.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za32.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za32.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_read.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_reads.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_st1.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_st1_vnum.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_state_funs.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_stores.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_str.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_write.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_writes.c
  clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_zero.c
  clang/test/CodeGen/aarch64-sme-intrinsics/negative/acle_sme_add.c
  clang/test/CodeGen/aarch64-sme-intrinsics/negative/acle_sme_loads.c
  clang/test/CodeGen/aarch64-sme-intrinsics/negative/acle_sme_mop.c
  clang/test/CodeGen/aarch64-sme-intrinsics/negative/acle_sme_reads.c
  clang/test/CodeGen/aarch64-sme-intrinsics/negative/acle_sme_stores.c
  clang/test/CodeGen/aarch64-sme-intrinsics/negative/acle_sme_writes.c
  clang/test/CodeGen/aarch64-sme-intrinsics/negative/acle_sme_zero.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_clamp.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_create2_bool.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_create4_bool.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvt.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvtn.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_fp_dots.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_frint.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_get2-bool.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_get4-bool.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_int_dots.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_ldr_str_zt.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt_x2.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt_x4.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt_x2.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt_x4.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_max.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_maxnm.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_min.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_minnm.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mla.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlal.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlall.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mls.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlsl.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mop.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_read.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_reinterpret_svcount_svbool.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_rshl.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_set2-bool.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_set4-bool.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_sqdmulh.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_sub.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vdot.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_write.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_zero_zt.c
  clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sve_add.c
  clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_reinterpret_from_streaming_mode.c
  clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st2-bfloat.c
  clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st2.c
  clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st3-bfloat.c
  clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st3.c
  clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st4-bfloat.c
  clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st4.c
  clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_revd.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_addqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_andqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_eorqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_faddqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_fmaxqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_fminqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_maxnmvqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_minnmvqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_orqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_smaxqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_sminqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_umaxqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2_uminqv.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfadd.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfclamp.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmax.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmaxnm.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmin.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfminnm.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmla.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmla_lane.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmls.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmls_lane.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmlsl.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmul.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmul_lane.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfsub.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_clamp.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_cntp.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_dot.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_extq.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ld1.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ld1_single.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ldnt1.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_loads.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pext.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pfalse.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pmov_to_pred.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pmov_to_vector.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_psel.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ptrue.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_qrshr.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_selx2.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_selx4.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_st1.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_st1_single.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_stnt1.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_store.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_tblq.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_tbxq.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_unpkx2.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_unpkx4.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_uzpq1.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_uzpq2.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_uzpx2.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_uzpx4.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_while_pn.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_while_pp.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_zipq1.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_zipq2.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_zipx2.c
  clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_zipx4.c
  clang/test/CodeGen/attr-arm-sve-vector-bits-types.c
  clang/test/Headers/arm-neon-header.c
  clang/test/Misc/pragma-attribute-supported-attributes-list.test
  clang/test/Preprocessor/aarch64-target-features.c
  clang/test/Sema/aarch64-incompat-sm-builtin-calls.c
  clang/test/Sema/aarch64-incompat-za-builtin-calls.c
  clang/test/Sema/aarch64-sme-attrs-on-x86.c
  clang/test/Sema/aarch64-sme-intrinsics/acle_sme_imm.cpp
  clang/test/Sema/aarch64-sme-intrinsics/acle_sme_target.c
  clang/test/Sema/aarch64-sme2-intrinsics/acle_sme2_imm.cpp
  clang/test/Sema/aarch64-sme2-sve2p1-diagnostics.c
  clang/test/Sema/aarch64-sve2p1-intrinsics/acle_sve2p1_imm.cpp
  clang/utils/TableGen/NeonEmitter.cpp
  clang/utils/TableGen/SveEmitter.cpp
  clang/utils/TableGen/TableGen.cpp
  clang/utils/TableGen/TableGenBackends.h
  llvm/include/llvm/IR/IRBuilder.h
  llvm/include/llvm/IR/IntrinsicsAArch64.td
  llvm/lib/Target/AArch64/AArch64.h
  llvm/lib/Target/AArch64/AArch64.td
  llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
  llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
  llvm/lib/Target/AArch64/AArch64FastISel.cpp
  llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
  llvm/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.h
  llvm/lib/Target/AArch64/AArch64InstrFormats.td
  llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
  llvm/lib/Target/AArch64/AArch64InstrInfo.h
  llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.h
  llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
  llvm/lib/Target/AArch64/AArch64RegisterInfo.td
  llvm/lib/Target/AArch64/AArch64SMEInstrInfo.td
  llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
  llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
  llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
  llvm/lib/Target/AArch64/CMakeLists.txt
  llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
  llvm/lib/Target/AArch64/SMEABIPass.cpp
  llvm/lib/Target/AArch64/SMEInstrFormats.td
  llvm/lib/Target/AArch64/SMEPeepholeOpt.cpp
  llvm/lib/Target/AArch64/SVEInstrFormats.td
  llvm/lib/Target/AArch64/Utils/AArch64SMEAttributes.cpp
  llvm/lib/Target/AArch64/Utils/AArch64SMEAttributes.h
  llvm/test/CodeGen/AArch64/O3-pipeline.ll
  llvm/test/CodeGen/AArch64/sme-disable-gisel-fisel.ll
  llvm/test/CodeGen/AArch64/sme-disable-rematerialize-with-streaming-mode-changes-origin-bugreport.ll
  llvm/test/CodeGen/AArch64/sme-disable-rematerialize-with-streaming-mode-changes.ll
  llvm/test/CodeGen/AArch64/sme-exceptions-with-streaming-mode-llc.ll
  llvm/test/CodeGen/AArch64/sme-exceptions-with-streaming-mode.ll
  llvm/test/CodeGen/AArch64/sme-exceptions-with-za-state-llc.ll
  llvm/test/CodeGen/AArch64/sme-exceptions-with-za-state.ll
  llvm/test/CodeGen/AArch64/sme-intrinsics-get-live-za-slices.ll
  llvm/test/CodeGen/AArch64/sme-intrinsics-loads.ll
  llvm/test/CodeGen/AArch64/sme-intrinsics-stores.ll
  llvm/test/CodeGen/AArch64/sme-invoke-resume-pstatesm.ll
  llvm/test/CodeGen/AArch64/sme-lazy-save-call.ll
  llvm/test/CodeGen/AArch64/sme-peephole-opts.ll
  llvm/test/CodeGen/AArch64/sme-peephole-opts.mir
  llvm/test/CodeGen/AArch64/sme-pstate-sm-changing-call-disable-coalescing.ll
  llvm/test/CodeGen/AArch64/sme-read-write-tpidr2.ll
  llvm/test/CodeGen/AArch64/sme-shared-za-abi.ll
  llvm/test/CodeGen/AArch64/sme-shared-za-interface.ll
  llvm/test/CodeGen/AArch64/sme-streaming-body.ll
  llvm/test/CodeGen/AArch64/sme-streaming-compatible-interface.ll
  llvm/test/CodeGen/AArch64/sme-streaming-interface.ll
  llvm/test/CodeGen/AArch64/sme-streaming-locally-interface.ll
  llvm/test/CodeGen/AArch64/sme-streaming-mode-changing-call-disable-stackslot-scavenging.ll
  llvm/test/CodeGen/AArch64/sme-streaming.ll
  llvm/test/CodeGen/AArch64/sme-tailcall.ll
  llvm/test/CodeGen/AArch64/sme-toggle-pstateza.ll
  llvm/test/CodeGen/AArch64/sme-zt0-preserve.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-extract-mova.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-luti2-lane-x2.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-luti2-lane-x4.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-luti2-lane.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-luti4-lane-x2.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-luti4-lane-x4.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-luti4-lane.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-zero-zt.ll
  llvm/test/CodeGen/AArch64/sme2-intrinsics-zt0.ll
  llvm/test/CodeGen/AArch64/sme2p1-intrinsics-luti2-lane-x2.ll
  llvm/test/CodeGen/AArch64/sme2p1-intrinsics-luti4-lane.ll
  llvm/test/CodeGen/AArch64/sme2p1-intrinsics-max.ll
  llvm/test/CodeGen/AArch64/sme2p1-intrinsics-min.ll
  llvm/test/CodeGen/AArch64/spillfill-sve.mir
  llvm/test/CodeGen/AArch64/streaming-mode-no-reorder.ll
  llvm/test/CodeGen/AArch64/sve-copy-zprpair.mir
  llvm/test/CodeGen/AArch64/sve-streaming-mode-fixed-length-int-to-fp.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-fp-reduce.ll
  llvm/test/CodeGen/AArch64/sve2-intrinsics-int-reduce.ll
  (42 more files...)



More information about the cfe-commits mailing list