Skip to content

Commit

Permalink
[HLSL] Change WaveActiveCountBits to wrapper of __builtin_hlsl_wave_a…
Browse files Browse the repository at this point in the history
…ctive_count_bits

Change WaveActiveCountBits from builtin into wrapper of __builtin_hlsl_wave_active_count_bits.
For comment at
https://reviews.llvm.org/D126857#inline-1235949

Reviewed By: beanz

Differential Revision: https://reviews.llvm.org/D128855
  • Loading branch information
python3kgae committed Jun 30, 2022
1 parent cde1df4 commit a591c7c
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 4 deletions.
2 changes: 1 addition & 1 deletion clang/include/clang/Basic/Builtins.def
Expand Up @@ -1699,7 +1699,7 @@ BUILTIN(__builtin_os_log_format, "v*v*cC*.", "p:0:nt")
LANGBUILTIN(__builtin_get_device_side_mangled_name, "cC*.", "ncT", CUDA_LANG)

// HLSL
LANGBUILTIN(WaveActiveCountBits, "Uib", "nc", HLSL_LANG)
LANGBUILTIN(__builtin_hlsl_wave_active_count_bits, "Uib", "nc", HLSL_LANG)

// Builtins for XRay
BUILTIN(__xray_customevent, "vcC*z", "")
Expand Down
2 changes: 1 addition & 1 deletion clang/include/clang/Basic/DiagnosticSemaKinds.td
Expand Up @@ -4183,7 +4183,7 @@ def err_attribute_preferred_name_arg_invalid : Error<
"argument %0 to 'preferred_name' attribute is not a typedef for "
"a specialization of %1">;
def err_attribute_builtin_alias : Error<
"%0 attribute can only be applied to a ARM or RISC-V builtin">;
"%0 attribute can only be applied to a ARM, HLSL or RISC-V builtin">;

// called-once attribute diagnostics.
def err_called_once_attribute_wrong_type : Error<
Expand Down
1 change: 1 addition & 0 deletions clang/lib/Headers/CMakeLists.txt
Expand Up @@ -65,6 +65,7 @@ set(hip_files
set(hlsl_files
hlsl.h
hlsl/hlsl_basic_types.h
hlsl/hlsl_intrinsics.h
)

set(mips_msa_files
Expand Down
1 change: 1 addition & 0 deletions clang/lib/Headers/hlsl.h
Expand Up @@ -10,5 +10,6 @@
#define _HLSL_H_

#include "hlsl/hlsl_basic_types.h"
#include "hlsl/hlsl_intrinsics.h"

#endif //_HLSL_H_
15 changes: 15 additions & 0 deletions clang/lib/Headers/hlsl/hlsl_intrinsics.h
@@ -0,0 +1,15 @@
//===----- hlsl_intrinsics.h - HLSL definitions for intrinsics ----------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _HLSL_HLSL_INTRINSICS_H_
#define _HLSL_HLSL_INTRINSICS_H_

__attribute__((clang_builtin_alias(__builtin_hlsl_wave_active_count_bits))) uint
WaveActiveCountBits(bool bBit);

#endif //_HLSL_HLSL_INTRINSICS_H_
3 changes: 2 additions & 1 deletion clang/lib/Sema/SemaDeclAttr.cpp
Expand Up @@ -5629,11 +5629,12 @@ static void handleBuiltinAliasAttr(Sema &S, Decl *D,
bool IsAArch64 = S.Context.getTargetInfo().getTriple().isAArch64();
bool IsARM = S.Context.getTargetInfo().getTriple().isARM();
bool IsRISCV = S.Context.getTargetInfo().getTriple().isRISCV();
bool IsHLSL = S.Context.getLangOpts().HLSL;
if ((IsAArch64 && !ArmSveAliasValid(S.Context, BuiltinID, AliasName)) ||
(IsARM && !ArmMveAliasValid(BuiltinID, AliasName) &&
!ArmCdeAliasValid(BuiltinID, AliasName)) ||
(IsRISCV && !RISCVAliasValid(BuiltinID, AliasName)) ||
(!IsAArch64 && !IsARM && !IsRISCV)) {
(!IsAArch64 && !IsARM && !IsRISCV && !IsHLSL)) {
S.Diag(AL.getLoc(), diag::err_attribute_builtin_alias) << AL;
return;
}
Expand Down
2 changes: 1 addition & 1 deletion clang/test/SemaHLSL/Wave.hlsl
@@ -1,4 +1,4 @@
// RUN: %clang_cc1 -x hlsl -triple dxil--shadermodel6.7-library %s -verify
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple dxil--shadermodel6.7-library %s -verify

// Make sure WaveActiveCountBits is accepted.

Expand Down

0 comments on commit a591c7c

Please sign in to comment.