Skip to content

Implement the isfinite HLSL Function #99131

Open
@farzonl

Description

@farzonl
  • Implement isfinite clang builtin,
  • Link isfinite clang builtin with hlsl_intrinsics.h
  • Add sema checks for isfinite to CheckHLSLBuiltinFunctionCall in SemaChecking.cpp
  • Add codegen for isfinite to EmitHLSLBuiltinExpr in CGBuiltin.cpp
  • Add codegen tests to clang/test/CodeGenHLSL/builtins/isfinite.hlsl
  • Add sema tests to clang/test/SemaHLSL/BuiltIns/isfinite-errors.hlsl
  • Create the int_dx_isfinite intrinsic in IntrinsicsDirectX.td
  • Create the DXILOpMapping of int_dx_isfinite to 10 in DXIL.td
  • Create the isfinite.ll and isfinite_errors.ll tests in llvm/test/CodeGen/DirectX/

DirectX

DXIL Opcode DXIL OpName Shader Model Shader Stages
10 IsFinite 6.0 ()

SPIR-V

There were no SPIR-V opcodes found for isfinite.

Test Case(s)

Example 1

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

export bool4 fn(float4 p1) {
    return isfinite(p1);
}

HLSL:

Determines if the specified floating-point value is finite.

ret isfinite(x)

Parameters

Item Description
x
[in] The specified value.

Return Value

Returns a value of the same size as the input, with a value set to True if the x parameter is finite; otherwise False.

Type Description

Name Template Type Component Type Size
x scalar, vector, or matrix float any
ret scalar, vector, or matrix bool as input

Minimum Shader Model

This function is supported in the following shader models.

Shader Model Supported
Shader Model 2 (DirectX HLSL) and higher shader models yes
Shader Model 1 (DirectX HLSL) yes (vs_1_1 only)

Requirements

Requirement Value
Header
Corecrt_math.h

See also

Intrinsic Functions (DirectX HLSL)

Metadata

Metadata

Assignees

No one assigned

    Labels

    HLSLHLSL Language Supportbackend:DirectXbot:HLSLmetabugIssue to collect references to a group of similar or related issues.

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions