[PATCH] D76298: [ARM,CDE] Implement CDE S and D-register intrinsics

Mikhail Maltsev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 17 10:11:13 PDT 2020


miyuki created this revision.
miyuki added reviewers: simon_tatham, MarkMurrayARM, ostannard, dmgreen.
Herald added subscribers: cfe-commits, danielkiss, hiraditya, kristof.beyls.
Herald added a project: clang.
miyuki added a child revision: D76296: [ARM,CDE] Implement GPR CDE intrinsics.
miyuki removed a child revision: D76296: [ARM,CDE] Implement GPR CDE intrinsics.
miyuki added a parent revision: D76296: [ARM,CDE] Implement GPR CDE intrinsics.
miyuki added a child revision: D76299: [ARM,CDE] Implement CDE unpredicated Q-register intrinsics.

This patch implements the following ACLE intrinsics:

  uint32_t __arm_vcx1_u32(int coproc, uint32_t imm);
  uint32_t __arm_vcx1a_u32(int coproc, uint32_t acc, uint32_t imm);
  uint32_t __arm_vcx2_u32(int coproc, uint32_t n, uint32_t imm);
  uint32_t __arm_vcx2a_u32(int coproc, uint32_t acc, uint32_t n, uint32_t imm);
  uint32_t __arm_vcx3_u32(int coproc, uint32_t n, uint32_t m, uint32_t imm);
  uint32_t __arm_vcx3a_u32(int coproc, uint32_t acc, uint32_t n, uint32_t m, uint32_t imm);
  
  uint64_t __arm_vcx1d_u64(int coproc, uint32_t imm);
  uint64_t __arm_vcx1da_u64(int coproc, uint64_t acc, uint32_t imm);
  uint64_t __arm_vcx2d_u64(int coproc, uint64_t m, uint32_t imm);
  uint64_t __arm_vcx2da_u64(int coproc, uint64_t acc, uint64_t m, uint32_t imm);
  uint64_t __arm_vcx3d_u64(int coproc, uint64_t n, uint64_t m, uint32_t imm);
  uint64_t __arm_vcx3da_u64(int coproc, uint64_t acc, uint64_t n, uint64_t m, uint32_t imm);

Since the semantics of CDE instructions is opaque to the compiler, the
ACLE intrinsics require dedicated LLVM IR intrinsics. The 64-bit and
32-bit variants share the same IR intrinsic.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D76298

Files:
  clang/include/clang/Basic/arm_cde.td
  clang/test/CodeGen/arm-cde-vfp.c
  clang/test/Sema/arm-cde-immediates.c
  clang/utils/TableGen/MveEmitter.cpp
  llvm/include/llvm/IR/IntrinsicsARM.td
  llvm/lib/Target/ARM/ARMInstrCDE.td
  llvm/test/CodeGen/Thumb2/cde-vfp.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D76298.250811.patch
Type: text/x-patch
Size: 23022 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200317/6bdb53c8/attachment-0001.bin>


More information about the cfe-commits mailing list