[all-commits] [llvm/llvm-project] f56550: [ARM] Enabling range checks on Neon intrinsics' la...

Lucas Duarte Prates via All-commits all-commits at lists.llvm.org
Thu Mar 19 05:07:28 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: f56550cf7f12b581a237b48a7f4d8b6682d45a09
      https://github.com/llvm/llvm-project/commit/f56550cf7f12b581a237b48a7f4d8b6682d45a09
  Author: Lucas Prates <lucas.prates at arm.com>
  Date:   2020-03-19 (Thu, 19 Mar 2020)

  Changed paths:
    M clang/include/clang/Basic/arm_neon.td
    M clang/include/clang/Basic/arm_neon_incl.td
    M clang/lib/CodeGen/CGBuiltin.cpp
    M clang/lib/CodeGen/CodeGenFunction.h
    M clang/test/CodeGen/aarch64-neon-2velem.c
    M clang/test/CodeGen/aarch64-neon-fma.c
    M clang/test/CodeGen/aarch64-poly64.c
    M clang/test/CodeGen/aarch64-v8.2a-neon-intrinsics.c
    A clang/test/CodeGen/arm-neon-range-checks.c
    M clang/test/CodeGen/arm-v8.2a-neon-intrinsics.c
    M clang/test/CodeGen/arm64_vdupq_n_f64.c
    M clang/test/CodeGen/arm_neon_intrinsics.c
    M clang/utils/TableGen/NeonEmitter.cpp

  Log Message:
  -----------
  [ARM] Enabling range checks on Neon intrinsics' lane arguments

Summary:
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.

Reviewers: jmolloy, t.p.northover, rsmith, olista01, ostannard

Reviewed By: ostannard

Subscribers: ostannard, dnsampaio, danielkiss, kristof.beyls, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D74619




More information about the All-commits mailing list