-
Couldn't load subscription status.
- Fork 15k
Description
NOTE: asdouble is special: there are questions around what the right design is for this. If 64-bit integers are supported then we don't need a specific DXIL operation to do this. We also need to consider what the right thing is for the SPIR-V backend.
- Implement
asdoubleclang builtin, - Link
asdoubleclang builtin withhlsl_intrinsics.h - Add sema checks for
asdoubletoCheckHLSLBuiltinFunctionCallinSemaChecking.cpp - Add codegen for
asdoubletoEmitHLSLBuiltinExprinCGBuiltin.cpp - Add codegen tests to
clang/test/CodeGenHLSL/builtins/asdouble.hlsl - Add sema tests to
clang/test/SemaHLSL/BuiltIns/asdouble-errors.hlsl - Create the
int_dx_asdoubleintrinsic inIntrinsicsDirectX.td - Create the
DXILOpMappingofint_dx_asdoubleto101inDXIL.td - Create the
asdouble.llandasdouble_errors.lltests inllvm/test/CodeGen/DirectX/
DirectX
| DXIL Opcode | DXIL OpName | Shader Model | Shader Stages |
|---|---|---|---|
| 101 | MakeDouble | 6.0 | () |
SPIR-V
There is no support for asdouble when targeting SPIR-V.
Test Case(s)
Example 1
//dxc asdouble_test.hlsl -T lib_6_8 -enable-16bit-types -O0
export double4 fn(uint4 p1, uint4 p2) {
return asdouble(p1, p2);
}HLSL:
Reinterprets a cast value (two 32-bit values) into a double.
Syntax
double asdouble(
in uint lowbits,
in uint highbits
);Parameters
-
lowbits [in]
-
Type: uint
The low 32-bit pattern of the input value.
-
highbits [in]
-
Type: uint
The high 32-bit pattern of the input value.
Return value
Type: double
The input (two 32-bit values) recast as a double.
Remarks
The following overloaded version is also available:
double2 asdouble(uint2 lowbits, uint2 highbits);If the input value is two 32-bit components, the return type will contain one double. If the input value is four 32-bit components, the return type will contain two doubles. If the input value is a 64-bit type, the returned value will have the same number of components as the input value.
Minimum Shader Model
This function is supported in the following shader models.
| Shader Model | Supported |
|---|---|
| Shader Model 5 and higher shader models | yes |
This function is supported in the following types of shaders:
| Vertex | Hull | Domain | Geometry | Pixel | Compute |
|---|---|---|---|---|---|
| x | x | x | x | x | x |
See also
Metadata
Metadata
Assignees
Labels
Type
Projects
Status