================
@@ -16,6 +16,84 @@ namespace hlsl {
 // unsigned integer and floating point. Keeping this ordering consistent will
 // help keep this file manageable as it grows.
 
+#define _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS(fn)                                 
\
+  constexpr float fn(double V) { return fn(__detail::imp_cast<float>(V)); }    
\
+  constexpr float2 fn(double2 V) { return fn(__detail::imp_cast<float2>(V)); } 
\
+  constexpr float3 fn(double3 V) { return fn(__detail::imp_cast<float3>(V)); } 
\
+  constexpr float4 fn(double4 V) { return fn(__detail::imp_cast<float4>(V)); }
+
+#define _DXC_COMPAT_BINARY_DOUBLE_OVERLOADS(fn)                                
\
+  constexpr float fn(double V1, double V2) {                                   
\
+    return fn(__detail::imp_cast<float>(V1), __detail::imp_cast<float>(V2));   
\
+  }                                                                            
\
+  constexpr float2 fn(double2 V1, double2 V2) {                                
\
+    return fn(__detail::imp_cast<float2>(V1), __detail::imp_cast<float2>(V2)); 
\
+  }                                                                            
\
+  constexpr float3 fn(double3 V1, double3 V2) {                                
\
+    return fn(__detail::imp_cast<float3>(V1), __detail::imp_cast<float3>(V2)); 
\
+  }                                                                            
\
+  constexpr float4 fn(double4 V1, double4 V2) {                                
\
+    return fn(__detail::imp_cast<float4>(V1), __detail::imp_cast<float4>(V2)); 
\
+  }
+
+#define _DXC_COMPAT_TERNARY_DOUBLE_OVERLOADS(fn)                               
\
+  constexpr float fn(double V1, double V2, double V3) {                        
\
+    return fn(__detail::imp_cast<float>(V1), __detail::imp_cast<float>(V2),    
\
+              __detail::imp_cast<float>(V3));                                  
\
+  }                                                                            
\
+  constexpr float2 fn(double2 V1, double2 V2, double2 V3) {                    
\
+    return fn(__detail::imp_cast<float2>(V1), __detail::imp_cast<float2>(V2),  
\
+              __detail::imp_cast<float2>(V3));                                 
\
+  }                                                                            
\
+  constexpr float3 fn(double3 V1, double3 V2, double3 V3) {                    
\
+    return fn(__detail::imp_cast<float3>(V1), __detail::imp_cast<float3>(V2),  
\
+              __detail::imp_cast<float3>(V3));                                 
\
+  }                                                                            
\
+  constexpr float4 fn(double4 V1, double4 V2, double4 V3) {                    
\
+    return fn(__detail::imp_cast<float4>(V1), __detail::imp_cast<float4>(V2),  
\
+              __detail::imp_cast<float4>(V3));                                 
\
+  }
+
+//===----------------------------------------------------------------------===//
+// acos builtins overloads
+//===----------------------------------------------------------------------===//
+
+#if __HLSL_VERSION <= __HLSL_202x
+_DXC_COMPAT_UNARY_DOUBLE_OVERLOADS(acos)
+#endif
+
+//===----------------------------------------------------------------------===//
+// asin builtins overloads
+//===----------------------------------------------------------------------===//
+
+#if __HLSL_VERSION <= __HLSL_202x
+_DXC_COMPAT_UNARY_DOUBLE_OVERLOADS(asin)
+#endif
+
+//===----------------------------------------------------------------------===//
+// atan builtins overloads
+//===----------------------------------------------------------------------===//
+
+#if __HLSL_VERSION <= __HLSL_202x
+_DXC_COMPAT_UNARY_DOUBLE_OVERLOADS(atan)
+#endif
+
+//===----------------------------------------------------------------------===//
+// atan2 builtins overloads
+//===----------------------------------------------------------------------===//
+
+#if __HLSL_VERSION <= __HLSL_202x
----------------
llvm-beanz wrote:

Maybe rather than being conditional on each overload, let's be conditional on 
including the header.

https://github.com/llvm/llvm-project/pull/132979
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to