Add decompositions for some HLSL intrinsics.
diff --git a/Test/hlsl.intrinsics.vert b/Test/hlsl.intrinsics.vert
index efafb4a..cab79a8 100644
--- a/Test/hlsl.intrinsics.vert
+++ b/Test/hlsl.intrinsics.vert
@@ -30,6 +30,7 @@
isnan(inF0);
ldexp(inF0, inF1);
log(inF0);
+ log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
@@ -39,8 +40,10 @@
reversebits(2);
round(inF0);
rsqrt(inF0);
+ saturate(inF0);
sign(inF0);
sin(inF0);
+ sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
@@ -95,6 +98,7 @@
ldexp(inF0, inF1);
length(inF0);
log(inF0);
+ log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
@@ -107,8 +111,10 @@
reversebits(int2(1,2));
round(inF0);
rsqrt(inF0);
+ saturate(inF0);
sign(inF0);
sin(inF0);
+ sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
@@ -159,6 +165,7 @@
ldexp(inF0, inF1);
length(inF0);
log(inF0);
+ log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
@@ -171,8 +178,10 @@
reversebits(int3(1,2,3));
round(inF0);
rsqrt(inF0);
+ saturate(inF0);
sign(inF0);
sin(inF0);
+ sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
@@ -203,6 +212,7 @@
degrees(inF0);
distance(inF0, inF1);
dot(inF0, inF1);
+ dst(inF0, inF1);
// EvaluateAttributeAtCentroid(inF0);
// EvaluateAttributeAtSample(inF0, 0);
// TODO: EvaluateAttributeSnapped(inF0, int2(1,2));
@@ -222,6 +232,7 @@
ldexp(inF0, inF1);
length(inF0);
log(inF0);
+ log10(inF0);
log2(inF0);
max(inF0, inF1);
min(inF0, inF1);
@@ -234,8 +245,10 @@
reversebits(int4(1,2,3,4));
round(inF0);
rsqrt(inF0);
+ saturate(inF0);
sign(inF0);
sin(inF0);
+ sincos(inF0, inF1, inF2);
sinh(inF0);
smoothstep(inF0, inF1, inF2);
sqrt(inF0);
@@ -275,6 +288,7 @@
fwidth(inF0); \
ldexp(inF0, inF1); \
log(inF0); \
+ log10(inF0); \
log2(inF0); \
max(inF0, inF1); \
min(inF0, inF1); \
@@ -282,8 +296,10 @@
radians(inF0); \
round(inF0); \
rsqrt(inF0); \
+ saturate(inF0); \
sign(inF0); \
sin(inF0); \
+ sincos(inF0, inF1, inF2); \
sinh(inF0); \
smoothstep(inF0, inF1, inF2); \
sqrt(inF0); \
@@ -321,3 +337,36 @@
// TODO: ... add when float1 prototypes are generated
return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4);
}
+
+#define TESTGENMUL(ST, VT, MT) \
+ ST r0 = mul(inF0, inF1); \
+ VT r1 = mul(inFV0, inF0); \
+ VT r2 = mul(inF0, inFV0); \
+ ST r3 = mul(inFV0, inFV1); \
+ VT r4 = mul(inFM0, inFV0); \
+ VT r5 = mul(inFV0, inFM0); \
+ MT r6 = mul(inFM0, inF0); \
+ MT r7 = mul(inF0, inFM0); \
+ MT r8 = mul(inFM0, inFM1);
+
+
+void TestGenMul(float inF0, float inF1,
+ float2 inFV0, float2 inFV1,
+ float2x2 inFM0, float2x2 inFM1)
+{
+ TESTGENMUL(float, float2, float2x2);
+}
+
+void TestGenMul(float inF0, float inF1,
+ float3 inFV0, float3 inFV1,
+ float3x3 inFM0, float3x3 inFM1)
+{
+ TESTGENMUL(float, float3, float3x3);
+}
+
+void TestGenMul(float inF0, float inF1,
+ float4 inFV0, float4 inFV1,
+ float4x4 inFM0, float4x4 inFM1)
+{
+ TESTGENMUL(float, float4, float4x4);
+}