Skip to content

Implement the asfloat HLSL Function #70098

Closed
@llvm-beanz

Description

@llvm-beanz
  • Link asfloat clang builtin (__builtin_bit_cast) with `hlsl_intrinsics.h``
  • Add codegen tests to clang/test/CodeGenHLSL/builtins/asfloat.hlsl
  • Add sema tests to clang/test/SemaHLSL/BuiltIns/asfloat-errors.hlsl

DirectX

There were no DXIL opcodes found for asfloat.

SPIR-V

Description:

Test Case(s)

Example 1

//dxc asfloat_test.hlsl -T lib_6_8  -enable-16bit-types -spirv -fspv-target-env=universal1.5 -fcgl -O0

export float4 fn(float p1) {
    return asfloat(p1);
}

Example 2

//dxc asfloat_1_test.hlsl -T lib_6_8 -enable-16bit-types -O0

export float4 fn(uint p1) {
    return asfloat(p1);
}

Example 3

//dxc asfloat_2_test.hlsl -T lib_6_8 -enable-16bit-types -O0

export float4 fn(int p1) {
    return asfloat(p1);
}

HLSL:

Interprets the bit pattern of x as a floating-point number.

ret asfloat(x)

Parameters

Item Description
x
[in] The input value.

Return Value

The input interpreted as a floating-point number.

Type Description

Name Template Type Component Type Size
x scalar, vector, or matrix float, int, uint any
ret same as input x float same dimension(s) as input x

Function Overloads

`float<x> asfloat(float<x> value);` `float<x> asfloat(int<x> value);` `float<x> asfloat(uint<x> value);`

Minimum Shader Model

This function is supported in the following shader models.

Shader Model Supported
Shader Model 4 and higher shader models yes
Shader Model 3 (DirectX HLSL) no
Shader Model 2 (DirectX HLSL) no
Shader Model 1 (DirectX HLSL) no

Remarks

Older compilers incorrectly allowed asfloat(bool), but note that bool inputs are not supported.

See also

Intrinsic Functions (DirectX HLSL)

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Closed

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions