Skip to content

Commit 14d2561

Browse files
authored
[HLSL] Finish exposing half types and intrinsics always (#132804)
We previously made an implementation error when adding half overloads for HLSL library functionality. The half type is always defined in HLSL and half intrinsics should not be conditionally included. When native 16-bit types are disabled half is a unique 32-bit float type with lesser promotion rank than float. Apply pattern #81782 to intrinsics added in #95999. Closes #132793
1 parent 0adc672 commit 14d2561

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

clang/lib/Headers/hlsl/hlsl_alias_intrinsics.h

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -134,16 +134,18 @@ double4 abs(double4);
134134
/// \brief Returns the arccosine of the input value, \a Val.
135135
/// \param Val The input value.
136136

137-
#ifdef __HLSL_ENABLE_16_BIT
137+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
138138
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_acos)
139139
half acos(half);
140+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
140141
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_acos)
141142
half2 acos(half2);
143+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
142144
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_acos)
143145
half3 acos(half3);
146+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
144147
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_acos)
145148
half4 acos(half4);
146-
#endif
147149

148150
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_acos)
149151
float acos(float);
@@ -447,16 +449,18 @@ double4 asdouble(uint4, uint4);
447449
/// \brief Returns the arcsine of the input value, \a Val.
448450
/// \param Val The input value.
449451

450-
#ifdef __HLSL_ENABLE_16_BIT
452+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
451453
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
452454
half asin(half);
455+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
453456
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
454457
half2 asin(half2);
458+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
455459
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
456460
half3 asin(half3);
461+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
457462
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
458463
half4 asin(half4);
459-
#endif
460464

461465
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
462466
float asin(float);
@@ -475,16 +479,18 @@ float4 asin(float4);
475479
/// \brief Returns the arctangent of the input value, \a Val.
476480
/// \param Val The input value.
477481

478-
#ifdef __HLSL_ENABLE_16_BIT
482+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
479483
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
480484
half atan(half);
485+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
481486
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
482487
half2 atan(half2);
488+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
483489
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
484490
half3 atan(half3);
491+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
485492
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
486493
half4 atan(half4);
487-
#endif
488494

489495
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
490496
float atan(float);
@@ -505,16 +511,18 @@ float4 atan(float4);
505511
/// \param y The y-coordinate.
506512
/// \param x The x-coordinate.
507513

508-
#ifdef __HLSL_ENABLE_16_BIT
514+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
509515
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
510516
half atan2(half y, half x);
517+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
511518
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
512519
half2 atan2(half2 y, half2 x);
520+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
513521
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
514522
half3 atan2(half3 y, half3 x);
523+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
515524
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
516525
half4 atan2(half4 y, half4 x);
517-
#endif
518526

519527
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
520528
float atan2(float y, float x);
@@ -721,16 +729,18 @@ float4 cos(float4);
721729
/// \brief Returns the hyperbolic cosine of the input value, \a Val.
722730
/// \param Val The input value.
723731

724-
#ifdef __HLSL_ENABLE_16_BIT
732+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
725733
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
726734
half cosh(half);
735+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
727736
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
728737
half2 cosh(half2);
738+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
729739
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
730740
half3 cosh(half3);
741+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
731742
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
732743
half4 cosh(half4);
733-
#endif
734744

735745
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
736746
float cosh(float);
@@ -2124,16 +2134,18 @@ float4 sin(float4);
21242134
/// \brief Returns the hyperbolic sine of the input value, \a Val.
21252135
/// \param Val The input value.
21262136

2127-
#ifdef __HLSL_ENABLE_16_BIT
2137+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
21282138
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
21292139
half sinh(half);
2140+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
21302141
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
21312142
half2 sinh(half2);
2143+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
21322144
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
21332145
half3 sinh(half3);
2146+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
21342147
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
21352148
half4 sinh(half4);
2136-
#endif
21372149

21382150
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
21392151
float sinh(float);
@@ -2215,16 +2227,18 @@ float4 step(float4, float4);
22152227
/// \brief Returns the tangent of the input value, \a Val.
22162228
/// \param Val The input value.
22172229

2218-
#ifdef __HLSL_ENABLE_16_BIT
2230+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22192231
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
22202232
half tan(half);
2233+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22212234
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
22222235
half2 tan(half2);
2236+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22232237
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
22242238
half3 tan(half3);
2239+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22252240
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
22262241
half4 tan(half4);
2227-
#endif
22282242

22292243
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
22302244
float tan(float);
@@ -2243,16 +2257,18 @@ float4 tan(float4);
22432257
/// \brief Returns the hyperbolic tangent of the input value, \a Val.
22442258
/// \param Val The input value.
22452259

2246-
#ifdef __HLSL_ENABLE_16_BIT
2260+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22472261
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
22482262
half tanh(half);
2263+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22492264
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
22502265
half2 tanh(half2);
2266+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22512267
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
22522268
half3 tanh(half3);
2269+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
22532270
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
22542271
half4 tanh(half4);
2255-
#endif
22562272

22572273
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
22582274
float tanh(float);

0 commit comments

Comments
 (0)