9
9
#ifndef _HLSL_HLSL_ALIAS_INTRINSICS_H_
10
10
#define _HLSL_HLSL_ALIAS_INTRINSICS_H_
11
11
12
+ #include " hlsl_compat_overloads.h"
13
+
12
14
namespace hlsl {
13
15
14
16
// Note: Functions in this file are sorted alphabetically, then grouped by base
@@ -35,48 +37,25 @@ namespace hlsl {
35
37
#define _HLSL_16BIT_AVAILABILITY_STAGE (environment, version, stage )
36
38
#endif
37
39
38
- #define _HLSL_CAT (a, b ) a##b
39
- #define _HLSL_VEC_SCALAR_OVERLOADS (NAME, BASE_T, AVAIL ) \
40
- _HLSL_ALL_OVERLOADS (NAME, BASE_T, AVAIL, _HLSL_CAT(_HLSL_NUM_ARGS_, NAME))
41
-
42
- #define _HLSL_ALL_OVERLOADS (NAME, BASE_T, AVAIL, NUM_ARGS ) \
43
- _HLSL_CAT (_HLSL_BOTH_OVERLOADS_, NUM_ARGS) \
44
- (NAME, BASE_T, _HLSL_CAT(BASE_T, 2 ), AVAIL) \
45
- _HLSL_CAT(_HLSL_BOTH_OVERLOADS_, NUM_ARGS)(NAME, BASE_T, \
46
- _HLSL_CAT (BASE_T, 3 ), AVAIL) \
47
- _HLSL_CAT(_HLSL_BOTH_OVERLOADS_, \
48
- NUM_ARGS)(NAME, BASE_T, _HLSL_CAT(BASE_T, 4 ), AVAIL)
49
-
50
- #define _HLSL_BOTH_OVERLOADS_2 (NAME, BASE_T, VECTOR_T, AVAIL ) \
51
- _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
52
- (_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
53
- VECTOR_T p0, BASE_T p1) { \
54
- return _HLSL_CAT (__builtin_elementwise_, NAME)(p0, (VECTOR_T)p1); \
55
- } \
56
- _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
57
- (_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
58
- BASE_T p0, VECTOR_T p1) { \
59
- return _HLSL_CAT (__builtin_elementwise_, NAME)((VECTOR_T)p0, p1); \
60
- }
40
+ #define GEN_VEC_SCALAR_OVERLOADS (FUNC_NAME, BASE_TYPE, AVAIL ) \
41
+ GEN_BOTH_OVERLOADS (FUNC_NAME, BASE_TYPE, BASE_TYPE##2 , AVAIL) \
42
+ GEN_BOTH_OVERLOADS(FUNC_NAME, BASE_TYPE, BASE_TYPE##3 , AVAIL) \
43
+ GEN_BOTH_OVERLOADS(FUNC_NAME, BASE_TYPE, BASE_TYPE##4 , AVAIL)
61
44
62
- #define _HLSL_BOTH_OVERLOADS_3 ( NAME, BASE_T, VECTOR_T , AVAIL ) \
63
- _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
64
- ( _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
65
- VECTOR_T p0, VECTOR_T p1, BASE_T p2 ) { \
66
- return _HLSL_CAT (__builtin_hlsl_elementwise_, NAME)( p0, p1, (VECTOR_T)p2); \
45
+ #define GEN_BOTH_OVERLOADS ( FUNC_NAME, BASE_TYPE, VECTOR_TYPE , AVAIL ) \
46
+ IF_TRUE_##AVAIL( \
47
+ _HLSL_16BIT_AVAILABILITY (shadermodel, 6.2 )) constexpr VECTOR_TYPE \
48
+ FUNC_NAME(VECTOR_TYPE p0, BASE_TYPE p1) { \
49
+ return __builtin_elementwise_## FUNC_NAME ( p0, (VECTOR_TYPE)p1); \
67
50
} \
68
- _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
69
- ( _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
70
- VECTOR_T p0, BASE_T p1, VECTOR_T p2 ) { \
71
- return _HLSL_CAT (__builtin_hlsl_elementwise_, NAME)( p0, (VECTOR_T)p1, p2); \
51
+ IF_TRUE_##AVAIL( \
52
+ _HLSL_16BIT_AVAILABILITY (shadermodel, 6.2 )) constexpr VECTOR_TYPE \
53
+ FUNC_NAME(BASE_TYPE p0, VECTOR_TYPE p1) { \
54
+ return __builtin_elementwise_## FUNC_NAME ((VECTOR_TYPE) p0, p1); \
72
55
}
73
56
74
- #define _HLSL_IF_TRUE_0 (EXPR )
75
- #define _HLSL_IF_TRUE_1 (EXPR ) EXPR
76
-
77
- #define _HLSL_NUM_ARGS_min 2
78
- #define _HLSL_NUM_ARGS_max 2
79
- #define _HLSL_NUM_ARGS_clamp 3
57
+ #define IF_TRUE_0 (EXPR )
58
+ #define IF_TRUE_1 (EXPR ) EXPR
80
59
81
60
// ===----------------------------------------------------------------------===//
82
61
// abs builtins
@@ -626,7 +605,6 @@ half3 clamp(half3, half3, half3);
626
605
_HLSL_16BIT_AVAILABILITY (shadermodel, 6.2 )
627
606
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
628
607
half4 clamp(half4, half4, half4);
629
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, half, 1 )
630
608
631
609
#ifdef __HLSL_ENABLE_16_BIT
632
610
_HLSL_AVAILABILITY (shadermodel, 6.2 )
@@ -641,7 +619,6 @@ int16_t3 clamp(int16_t3, int16_t3, int16_t3);
641
619
_HLSL_AVAILABILITY (shadermodel, 6.2 )
642
620
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
643
621
int16_t4 clamp(int16_t4, int16_t4, int16_t4);
644
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, int16_t , 1 )
645
622
646
623
_HLSL_AVAILABILITY (shadermodel, 6.2 )
647
624
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
@@ -655,7 +632,6 @@ uint16_t3 clamp(uint16_t3, uint16_t3, uint16_t3);
655
632
_HLSL_AVAILABILITY (shadermodel, 6.2 )
656
633
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
657
634
uint16_t4 clamp(uint16_t4, uint16_t4, uint16_t4);
658
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, uint16_t , 1 )
659
635
#endif
660
636
661
637
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
@@ -666,7 +642,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
666
642
int3 clamp(int3, int3, int3);
667
643
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
668
644
int4 clamp(int4, int4, int4);
669
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, int , 0 )
670
645
671
646
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
672
647
uint clamp(uint, uint, uint);
@@ -676,7 +651,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
676
651
uint3 clamp(uint3, uint3, uint3);
677
652
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
678
653
uint4 clamp(uint4, uint4, uint4);
679
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, uint, 0 )
680
654
681
655
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
682
656
int64_t clamp(int64_t , int64_t , int64_t );
@@ -686,7 +660,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
686
660
int64_t3 clamp(int64_t3, int64_t3, int64_t3);
687
661
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
688
662
int64_t4 clamp(int64_t4, int64_t4, int64_t4);
689
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, int64_t , 0 )
690
663
691
664
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
692
665
uint64_t clamp(uint64_t , uint64_t , uint64_t );
@@ -696,7 +669,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
696
669
uint64_t3 clamp(uint64_t3, uint64_t3, uint64_t3);
697
670
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
698
671
uint64_t4 clamp(uint64_t4, uint64_t4, uint64_t4);
699
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, uint64_t , 0 )
700
672
701
673
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
702
674
float clamp(float , float , float );
@@ -706,7 +678,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
706
678
float3 clamp(float3, float3, float3);
707
679
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
708
680
float4 clamp(float4, float4, float4);
709
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, float , 0 )
710
681
711
682
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
712
683
double clamp(double , double , double );
@@ -716,7 +687,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
716
687
double3 clamp(double3, double3, double3);
717
688
_HLSL_BUILTIN_ALIAS (__builtin_hlsl_elementwise_clamp)
718
689
double4 clamp(double4, double4, double4);
719
- _HLSL_VEC_SCALAR_OVERLOADS (clamp, double , 0 )
720
690
721
691
// ===----------------------------------------------------------------------===//
722
692
// clip builtins
@@ -1629,7 +1599,7 @@ half3 max(half3, half3);
1629
1599
_HLSL_16BIT_AVAILABILITY (shadermodel, 6.2 )
1630
1600
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1631
1601
half4 max(half4, half4);
1632
- _HLSL_VEC_SCALAR_OVERLOADS (max, half, 1 )
1602
+ GEN_VEC_SCALAR_OVERLOADS (max, half, 1 )
1633
1603
1634
1604
#ifdef __HLSL_ENABLE_16_BIT
1635
1605
_HLSL_AVAILABILITY (shadermodel, 6.2 )
@@ -1644,7 +1614,7 @@ int16_t3 max(int16_t3, int16_t3);
1644
1614
_HLSL_AVAILABILITY (shadermodel, 6.2 )
1645
1615
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1646
1616
int16_t4 max(int16_t4, int16_t4);
1647
- _HLSL_VEC_SCALAR_OVERLOADS (max, int16_t , 1 )
1617
+ GEN_VEC_SCALAR_OVERLOADS (max, int16_t , 1 )
1648
1618
1649
1619
_HLSL_AVAILABILITY(shadermodel, 6.2 )
1650
1620
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
@@ -1658,7 +1628,7 @@ uint16_t3 max(uint16_t3, uint16_t3);
1658
1628
_HLSL_AVAILABILITY (shadermodel, 6.2 )
1659
1629
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1660
1630
uint16_t4 max(uint16_t4, uint16_t4);
1661
- _HLSL_VEC_SCALAR_OVERLOADS (max, uint16_t , 1 )
1631
+ GEN_VEC_SCALAR_OVERLOADS (max, uint16_t , 1 )
1662
1632
#endif
1663
1633
1664
1634
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_max)
@@ -1669,7 +1639,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1669
1639
int3 max(int3, int3);
1670
1640
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_max)
1671
1641
int4 max(int4, int4);
1672
- _HLSL_VEC_SCALAR_OVERLOADS (max, int , 0 )
1642
+ GEN_VEC_SCALAR_OVERLOADS (max, int , 0 )
1673
1643
1674
1644
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1675
1645
uint max(uint, uint);
@@ -1679,7 +1649,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1679
1649
uint3 max(uint3, uint3);
1680
1650
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_max)
1681
1651
uint4 max(uint4, uint4);
1682
- _HLSL_VEC_SCALAR_OVERLOADS (max, uint, 0 )
1652
+ GEN_VEC_SCALAR_OVERLOADS (max, uint, 0 )
1683
1653
1684
1654
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1685
1655
int64_t max(int64_t , int64_t );
@@ -1689,7 +1659,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1689
1659
int64_t3 max(int64_t3, int64_t3);
1690
1660
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_max)
1691
1661
int64_t4 max(int64_t4, int64_t4);
1692
- _HLSL_VEC_SCALAR_OVERLOADS (max, int64_t , 0 )
1662
+ GEN_VEC_SCALAR_OVERLOADS (max, int64_t , 0 )
1693
1663
1694
1664
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1695
1665
uint64_t max(uint64_t , uint64_t );
@@ -1699,7 +1669,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1699
1669
uint64_t3 max(uint64_t3, uint64_t3);
1700
1670
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_max)
1701
1671
uint64_t4 max(uint64_t4, uint64_t4);
1702
- _HLSL_VEC_SCALAR_OVERLOADS (max, uint64_t , 0 )
1672
+ GEN_VEC_SCALAR_OVERLOADS (max, uint64_t , 0 )
1703
1673
1704
1674
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1705
1675
float max(float , float );
@@ -1709,7 +1679,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1709
1679
float3 max(float3, float3);
1710
1680
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_max)
1711
1681
float4 max(float4, float4);
1712
- _HLSL_VEC_SCALAR_OVERLOADS (max, float , 0 )
1682
+ GEN_VEC_SCALAR_OVERLOADS (max, float , 0 )
1713
1683
1714
1684
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1715
1685
double max(double , double );
@@ -1719,7 +1689,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1719
1689
double3 max(double3, double3);
1720
1690
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_max)
1721
1691
double4 max(double4, double4);
1722
- _HLSL_VEC_SCALAR_OVERLOADS (max, double , 0 )
1692
+ GEN_VEC_SCALAR_OVERLOADS (max, double , 0 )
1723
1693
1724
1694
// ===----------------------------------------------------------------------===//
1725
1695
// min builtins
@@ -1742,7 +1712,7 @@ half3 min(half3, half3);
1742
1712
_HLSL_16BIT_AVAILABILITY (shadermodel, 6.2 )
1743
1713
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1744
1714
half4 min(half4, half4);
1745
- _HLSL_VEC_SCALAR_OVERLOADS (min, half, 1 )
1715
+ GEN_VEC_SCALAR_OVERLOADS (min, half, 1 )
1746
1716
1747
1717
#ifdef __HLSL_ENABLE_16_BIT
1748
1718
_HLSL_AVAILABILITY (shadermodel, 6.2 )
@@ -1757,7 +1727,7 @@ int16_t3 min(int16_t3, int16_t3);
1757
1727
_HLSL_AVAILABILITY (shadermodel, 6.2 )
1758
1728
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1759
1729
int16_t4 min(int16_t4, int16_t4);
1760
- _HLSL_VEC_SCALAR_OVERLOADS (min, int16_t , 1 )
1730
+ GEN_VEC_SCALAR_OVERLOADS (min, int16_t , 1 )
1761
1731
1762
1732
_HLSL_AVAILABILITY(shadermodel, 6.2 )
1763
1733
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
@@ -1771,7 +1741,7 @@ uint16_t3 min(uint16_t3, uint16_t3);
1771
1741
_HLSL_AVAILABILITY (shadermodel, 6.2 )
1772
1742
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1773
1743
uint16_t4 min(uint16_t4, uint16_t4);
1774
- _HLSL_VEC_SCALAR_OVERLOADS (min, uint16_t , 1 )
1744
+ GEN_VEC_SCALAR_OVERLOADS (min, uint16_t , 1 )
1775
1745
#endif
1776
1746
1777
1747
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_min)
@@ -1782,7 +1752,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1782
1752
int3 min(int3, int3);
1783
1753
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_min)
1784
1754
int4 min(int4, int4);
1785
- _HLSL_VEC_SCALAR_OVERLOADS (min, int , 0 )
1755
+ GEN_VEC_SCALAR_OVERLOADS (min, int , 0 )
1786
1756
1787
1757
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1788
1758
uint min(uint, uint);
@@ -1792,7 +1762,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1792
1762
uint3 min(uint3, uint3);
1793
1763
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_min)
1794
1764
uint4 min(uint4, uint4);
1795
- _HLSL_VEC_SCALAR_OVERLOADS (min, uint, 0 )
1765
+ GEN_VEC_SCALAR_OVERLOADS (min, uint, 0 )
1796
1766
1797
1767
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1798
1768
float min(float , float );
@@ -1802,7 +1772,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1802
1772
float3 min(float3, float3);
1803
1773
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_min)
1804
1774
float4 min(float4, float4);
1805
- _HLSL_VEC_SCALAR_OVERLOADS (min, float , 0 )
1775
+ GEN_VEC_SCALAR_OVERLOADS (min, float , 0 )
1806
1776
1807
1777
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1808
1778
int64_t min(int64_t , int64_t );
@@ -1812,7 +1782,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1812
1782
int64_t3 min(int64_t3, int64_t3);
1813
1783
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_min)
1814
1784
int64_t4 min(int64_t4, int64_t4);
1815
- _HLSL_VEC_SCALAR_OVERLOADS (min, int64_t , 0 )
1785
+ GEN_VEC_SCALAR_OVERLOADS (min, int64_t , 0 )
1816
1786
1817
1787
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1818
1788
uint64_t min(uint64_t , uint64_t );
@@ -1822,7 +1792,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1822
1792
uint64_t3 min(uint64_t3, uint64_t3);
1823
1793
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_min)
1824
1794
uint64_t4 min(uint64_t4, uint64_t4);
1825
- _HLSL_VEC_SCALAR_OVERLOADS (min, uint64_t , 0 )
1795
+ GEN_VEC_SCALAR_OVERLOADS (min, uint64_t , 0 )
1826
1796
1827
1797
_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1828
1798
double min(double , double );
@@ -1832,7 +1802,7 @@ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1832
1802
double3 min(double3, double3);
1833
1803
_HLSL_BUILTIN_ALIAS (__builtin_elementwise_min)
1834
1804
double4 min(double4, double4);
1835
- _HLSL_VEC_SCALAR_OVERLOADS (min, double , 0 )
1805
+ GEN_VEC_SCALAR_OVERLOADS (min, double , 0 )
1836
1806
1837
1807
// ===----------------------------------------------------------------------===//
1838
1808
// normalize builtins
0 commit comments