[PATCH] D74619: [ARM] Enabling range checks on Neon intrinsics' lane arguments

Lucas Prates via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 14 08:14:17 PST 2020


pratlucas created this revision.
Herald added subscribers: cfe-commits, kristof.beyls.
Herald added a project: clang.

Range checks were not properly performed in the lane arguments of Neon
intrinsics implemented based on splat operations. Calls to those
intrinsics where translated to __builtin__shufflevector calls directly
by the pre-processor through the arm_neon.h macros, missing the chance
for the proper range checks.

This patch enables the range check by introducing an auxiliary splat
instruction in arm_neon.td, delaying the translation to shufflevector
calls to CGBuiltin.cpp in clang after the checks were performed.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D74619

Files:
  clang/include/clang/Basic/arm_neon.td
  clang/include/clang/Basic/arm_neon_incl.td
  clang/lib/CodeGen/CGBuiltin.cpp
  clang/lib/CodeGen/CodeGenFunction.h
  clang/test/CodeGen/aarch64-neon-2velem.c
  clang/test/CodeGen/aarch64-neon-fma.c
  clang/test/CodeGen/aarch64-poly64.c
  clang/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c
  clang/test/CodeGen/arm-v8.2a-neon-intrinsics.c
  clang/test/CodeGen/arm64_vdupq_n_f64.c
  clang/test/CodeGen/arm_neon_intrinsics.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74619.244676.patch
Type: text/x-patch
Size: 377319 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200214/188becc6/attachment-0001.bin>


More information about the cfe-commits mailing list