-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Implement the firstbithigh
HLSL Function
#99115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
looking at this |
@llvm/issue-subscribers-clang-codegen Author: Farzon Lotfi (farzonl)
- [ ] Implement `firstbithigh` clang builtin,
- [ ] Link `firstbithigh` clang builtin with `hlsl_intrinsics.h`
- [ ] Add sema checks for `firstbithigh` to `CheckHLSLBuiltinFunctionCall` in `SemaChecking.cpp`
- [ ] Add codegen for `firstbithigh` to `EmitHLSLBuiltinExpr` in `CGBuiltin.cpp`
- [ ] Add codegen tests to `clang/test/CodeGenHLSL/builtins/firstbithigh.hlsl`
- [ ] Add sema tests to `clang/test/SemaHLSL/BuiltIns/firstbithigh-errors.hlsl`
- [ ] Create the `int_dx_firstbithigh` intrinsic in `IntrinsicsDirectX.td`
- [ ] Create the `DXILOpMapping` of `int_dx_firstbithigh` to `34` in `DXIL.td`
- [ ] Create the `firstbithigh.ll` and `firstbithigh_errors.ll` tests in `llvm/test/CodeGen/DirectX/`
- [ ] Create the `int_spv_firstbithigh` intrinsic in `IntrinsicsSPIRV.td`
- [ ] In SPIRVInstructionSelector.cpp create the `firstbithigh` lowering and map it to `int_spv_firstbithigh` in `SPIRVInstructionSelector::selectIntrinsic`.
- [ ] Create SPIR-V backend test case in `llvm/test/CodeGen/SPIRV/hlsl-intrinsics/firstbithigh.ll`
DirectX
SPIR-VFindSMsb:Description:FindSMsb Signed-integer most-significant bit, with Value interpreted as a For positive numbers, the result will be the bit number of the most Result Type and the type of Value must both be integer scalar or This instruction is currently limited to 32-bit width components. <table> Test Case(s)Example 1//dxc firstbithigh_test.hlsl -T lib_6_8 -enable-16bit-types -O0
export uint4 fn(int4 p1) {
return firstbithigh(p1);
} HLSL:Gets the location of the first set bit starting from the highest order bit and working downward, per component. Syntaxint firstbithigh(
in int value
); Parameters<dl> <dt> value [in] Type: int The input value. </dd> </dl> Return valueType: int The location of the first set bit. RemarksFor a signed integer, the first significant bit is zero for a negative number. The following overloaded versions are also available: int2 firstbithigh(int2 value);
int3 firstbithigh(int3 value);
int4 firstbithigh(int4 value);
uint firstbithigh(uint value);
uint2 firstbithigh(uint2 value);
uint3 firstbithigh(uint3 value);
uint4 firstbithigh(uint4 value); Minimum Shader ModelThis function is supported in the following shader models.
This function is supported in the following types of shaders:
See also<dl> <dt> Intrinsic Functions Shader Model 5 |
firstbithigh
clang builtin,firstbithigh
clang builtin withhlsl_intrinsics.h
firstbithigh
toCheckHLSLBuiltinFunctionCall
inSemaChecking.cpp
firstbithigh
toEmitHLSLBuiltinExpr
inCGBuiltin.cpp
clang/test/CodeGenHLSL/builtins/firstbithigh.hlsl
clang/test/SemaHLSL/BuiltIns/firstbithigh-errors.hlsl
int_dx_firstbithigh
intrinsic inIntrinsicsDirectX.td
DXILOpMapping
ofint_dx_firstbithigh
to34
inDXIL.td
firstbithigh.ll
andfirstbithigh_errors.ll
tests inllvm/test/CodeGen/DirectX/
int_spv_firstbithigh
intrinsic inIntrinsicsSPIRV.td
firstbithigh
lowering and map it toint_spv_firstbithigh
inSPIRVInstructionSelector::selectIntrinsic
.llvm/test/CodeGen/SPIRV/hlsl-intrinsics/firstbithigh.ll
DirectX
SPIR-V
FindSMsb:
Description:
FindSMsb
Signed-integer most-significant bit, with Value interpreted as a
signed integer.
For positive numbers, the result will be the bit number of the most
significant 1-bit. For negative numbers, the result will be the bit
number of the most significant 0-bit. For a Value of 0 or -1, the
result is -1.
Result Type and the type of Value must both be integer scalar or
integer vector types. Result Type and operand types must have the same
number of components with the same component width. Results are computed
per component.
This instruction is currently limited to 32-bit width components.
74
<id>
Value
Test Case(s)
Example 1
HLSL:
Gets the location of the first set bit starting from the highest order bit and working downward, per component.
Syntax
Parameters
value [in]
Type: int
The input value.
Return value
Type: int
The location of the first set bit.
Remarks
For a signed integer, the first significant bit is zero for a negative number.
The following overloaded versions are also available:
Minimum Shader Model
This function is supported in the following shader models.
This function is supported in the following types of shaders:
See also
Intrinsic Functions
Shader Model 5
The text was updated successfully, but these errors were encountered: