[all-commits] [llvm/llvm-project] 7441e8: [libclc] Move several integer functions to CLC lib...

Fraser Cormack via All-commits all-commits at lists.llvm.org
Wed Jan 29 05:45:54 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 7441e87fe05376782d0ddb90a13e1756eb1b1976
      https://github.com/llvm/llvm-project/commit/7441e87fe05376782d0ddb90a13e1756eb1b1976
  Author: Fraser Cormack <fraser at codeplay.com>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M libclc/amdgcn/lib/SOURCES
    R libclc/amdgcn/lib/integer/popcount.cl
    R libclc/amdgcn/lib/integer/popcount.inc
    A libclc/clc/include/clc/integer/clc_clz.h
    A libclc/clc/include/clc/integer/clc_hadd.h
    A libclc/clc/include/clc/integer/clc_mad24.h
    A libclc/clc/include/clc/integer/clc_mad_hi.h
    A libclc/clc/include/clc/integer/clc_mul24.h
    A libclc/clc/include/clc/integer/clc_mul_hi.h
    A libclc/clc/include/clc/integer/clc_popcount.h
    A libclc/clc/include/clc/integer/clc_rhadd.h
    A libclc/clc/include/clc/integer/clc_upsample.h
    A libclc/clc/include/clc/integer/definitions.h
    A libclc/clc/include/clc/integer/gentype24.inc
    M libclc/clc/include/clc/math/clc_mad.h
    R libclc/clc/include/clc/math/ternary_decl.inc
    A libclc/clc/include/clc/shared/ternary_decl.inc
    A libclc/clc/include/clc/shared/ternary_def.inc
    A libclc/clc/include/clc/shared/unary_decl.inc
    A libclc/clc/include/clc/shared/unary_def.inc
    M libclc/clc/lib/clspv/SOURCES
    M libclc/clc/lib/generic/SOURCES
    A libclc/clc/lib/generic/integer/clc_clz.cl
    A libclc/clc/lib/generic/integer/clc_hadd.cl
    A libclc/clc/lib/generic/integer/clc_hadd.inc
    A libclc/clc/lib/generic/integer/clc_mad24.cl
    A libclc/clc/lib/generic/integer/clc_mad24.inc
    A libclc/clc/lib/generic/integer/clc_mul24.cl
    A libclc/clc/lib/generic/integer/clc_mul24.inc
    A libclc/clc/lib/generic/integer/clc_mul_hi.cl
    A libclc/clc/lib/generic/integer/clc_popcount.cl
    A libclc/clc/lib/generic/integer/clc_rhadd.cl
    A libclc/clc/lib/generic/integer/clc_rhadd.inc
    A libclc/clc/lib/generic/integer/clc_upsample.cl
    M libclc/clc/lib/spirv/SOURCES
    M libclc/clc/lib/spirv64/SOURCES
    M libclc/generic/include/clc/integer/clz.h
    R libclc/generic/include/clc/integer/clz.inc
    R libclc/generic/include/clc/integer/definitions.h
    M libclc/generic/include/clc/integer/hadd.h
    R libclc/generic/include/clc/integer/hadd.inc
    M libclc/generic/include/clc/integer/mad24.h
    R libclc/generic/include/clc/integer/mad24.inc
    M libclc/generic/include/clc/integer/mad_hi.h
    M libclc/generic/include/clc/integer/mul24.h
    R libclc/generic/include/clc/integer/mul24.inc
    M libclc/generic/include/clc/integer/mul_hi.h
    R libclc/generic/include/clc/integer/mul_hi.inc
    M libclc/generic/include/clc/integer/popcount.h
    M libclc/generic/include/clc/integer/rhadd.h
    R libclc/generic/include/clc/integer/rhadd.inc
    M libclc/generic/include/clc/integer/upsample.h
    M libclc/generic/include/clc/math/fma.h
    M libclc/generic/include/clc/math/mad.h
    R libclc/generic/include/integer/popcount.h
    R libclc/generic/include/integer/unary_intrin.inc
    M libclc/generic/include/math/clc_fma.h
    M libclc/generic/lib/SOURCES
    M libclc/generic/lib/integer/clz.cl
    M libclc/generic/lib/integer/hadd.cl
    R libclc/generic/lib/integer/hadd.inc
    M libclc/generic/lib/integer/mad24.cl
    R libclc/generic/lib/integer/mad24.inc
    A libclc/generic/lib/integer/mad_hi.cl
    M libclc/generic/lib/integer/mul24.cl
    R libclc/generic/lib/integer/mul24.inc
    M libclc/generic/lib/integer/mul_hi.cl
    M libclc/generic/lib/integer/popcount.cl
    M libclc/generic/lib/integer/rhadd.cl
    R libclc/generic/lib/integer/rhadd.inc
    M libclc/generic/lib/integer/upsample.cl
    M libclc/generic/lib/math/clc_fma.cl
    M libclc/generic/lib/math/clc_fmod.cl
    M libclc/generic/lib/math/clc_remainder.cl
    M libclc/generic/lib/math/clc_remquo.cl
    M libclc/generic/lib/math/sincos_helpers.cl

  Log Message:
  -----------
  [libclc] Move several integer functions to CLC library (#116786)

This commit moves over the OpenCL clz, hadd, mad24, mad_hi, mul24,
mul_hi, popcount, rhadd, and upsample builtins to the CLC library.

This commit also optimizes the vector forms of the mul_hi and upsample
builtins to consistently remain in vector types, instead of recursively
splitting vectors down to the scalar form.

The OpenCL mad_hi builtin wasn't previously publicly available from the
CLC libraries, as it was hash-defined to mul_hi in the header files.
That issue has been fixed, and mad_hi is now exposed.

The custom AMD implementation/workaround for popcount has been removed
as it was only required for clang < 7.

There are still two integer functions which haven't been moved over. The
OpenCL mad_sat builtin uses many of the other integer builtins, and
would benefit from optimization for vector types. That can take place in
a follow-up commit. The rotate builtin could similarly use some more
dedicated focus, potentially using clang builtins.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list