clang 20.0.0git
hlsl_detail.h
Go to the documentation of this file.
1//===----- detail.h - HLSL definitions for intrinsics ----------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef _HLSL_HLSL_DETAILS_H_
10#define _HLSL_HLSL_DETAILS_H_
11
12namespace hlsl {
13
14namespace __detail {
15
16template <bool B, typename T> struct enable_if {};
17
18template <typename T> struct enable_if<true, T> {
19 using Type = T;
20};
21
22template <bool B, class T = void>
24
25template <typename U, typename T, int N>
26constexpr enable_if_t<sizeof(U) == sizeof(T), vector<U, N>>
27bit_cast(vector<T, N> V) {
28 return __builtin_bit_cast(vector<U, N>, V);
29}
30
31template <typename U, typename T>
32constexpr enable_if_t<sizeof(U) == sizeof(T), U> bit_cast(T F) {
33 return __builtin_bit_cast(U, F);
34}
35
36} // namespace __detail
37} // namespace hlsl
38#endif //_HLSL_HLSL_DETAILS_H_
#define V(N, I)
Definition: ASTContext.h:3443
typename enable_if< B, T >::Type enable_if_t
Definition: hlsl_detail.h:23
constexpr enable_if_t< sizeof(U)==sizeof(T), vector< U, N > > bit_cast(vector< T, N > V)
Definition: hlsl_detail.h:27
#define true
Definition: stdbool.h:25