-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Implement the dot4add_u8packed
HLSL Function
#99219
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
```- create a clang built-in in Builtins.td - link dot4add_u8packed in hlsl_intrinsics.h - add lowering to spirv backend through expansion of operation as OpUDot is missing up to SPIRV 1.6 in SPIRVInstructionSelector.cpp - add lowering to spirv backend using OpUDot if applicable SPIRV version or SPV_KHR_integer_dot_product is enabled - add dot4add_u8packed intrinsic to IntrinsicsDirectX.td and mapping to DXIL.td op Dot4AddU8Packed - add tests for HLSL intrinsic lowering to dx/spv intrinsic in dot4add_u8packed.hlsl - add tests for sema checks in dot4add_u8packed-errors.hlsl - add test of spir-v lowering in SPIRV/dot4add_u8packed.ll - add test to dxil lowering in DirectX/dot4add_u8packed.ll ``` Resolves #99219
@llvm/issue-subscribers-clang-codegen Author: Farzon Lotfi (farzonl)
- [ ] Implement `dot4add_u8packed` clang builtin,
- [ ] Link `dot4add_u8packed` clang builtin with `hlsl_intrinsics.h`
- [ ] Add sema checks for `dot4add_u8packed` to `CheckHLSLBuiltinFunctionCall` in `SemaChecking.cpp`
- [ ] Add codegen for `dot4add_u8packed` to `EmitHLSLBuiltinExpr` in `CGBuiltin.cpp`
- [ ] Add codegen tests to `clang/test/CodeGenHLSL/builtins/dot4add_u8packed.hlsl`
- [ ] Add sema tests to `clang/test/SemaHLSL/BuiltIns/dot4add_u8packed-errors.hlsl`
- [ ] Create the `int_dx_dot4add_u8packed` intrinsic in `IntrinsicsDirectX.td`
- [ ] Create the `DXILOpMapping` of `int_dx_dot4add_u8packed` to `164` in `DXIL.td`
- [ ] Create the `dot4add_u8packed.ll` and `dot4add_u8packed_errors.ll` tests in `llvm/test/CodeGen/DirectX/`
- [ ] Create the `int_spv_dot4add_u8packed` intrinsic in `IntrinsicsSPIRV.td`
- [ ] In SPIRVInstructionSelector.cpp create the `dot4add_u8packed` lowering and map it to `int_spv_dot4add_u8packed` in `SPIRVInstructionSelector::selectIntrinsic`.
- [ ] Create SPIR-V backend test case in `llvm/test/CodeGen/SPIRV/hlsl-intrinsics/dot4add_u8packed.ll`
DirectX
SPIR-VOpUDot:Description:Unsigned integer dot product of Vector 1 and Vector 2. Result Type must be an integer type with Signedness of 0 whose Vector 1 and Vector 2 must have the same type. Vector 1 and Vector 2 must be either 32-bit integers (enabled by the When Vector 1 and Vector 2 are scalar integer types, Packed Vector All components of the input vectors are zero-extended to the bit width Capability: Missing before version 1.6. <table style="width:100%;"> Test Case(s)Example 1//dxc dot4add_u8packed_test.hlsl -T lib_6_8 -enable-16bit-types -O0
export uint fn(uint p1, uint p2, uint p3) {
return dot4add_u8packed(p1, p2, p3);
} HLSL:Syntaxuint dot4add_u8packed(uint a, uint b, uint c); Type Description
Minimum Shader ModelThis function is supported in the following shader models.
Shader StagesSee also |
```- create a clang built-in in Builtins.td - link dot4add_u8packed in hlsl_intrinsics.h - add lowering to spirv backend through expansion of operation as OpUDot is missing up to SPIRV 1.6 in SPIRVInstructionSelector.cpp - add lowering to spirv backend using OpUDot if applicable SPIRV version or SPV_KHR_integer_dot_product is enabled - add dot4add_u8packed intrinsic to IntrinsicsDirectX.td and mapping to DXIL.td op Dot4AddU8Packed - add tests for HLSL intrinsic lowering to dx/spv intrinsic in dot4add_u8packed.hlsl - add tests for sema checks in dot4add_u8packed-errors.hlsl - add test of spir-v lowering in SPIRV/dot4add_u8packed.ll - add test to dxil lowering in DirectX/dot4add_u8packed.ll ``` Resolves llvm#99219
dot4add_u8packed
clang builtin,dot4add_u8packed
clang builtin withhlsl_intrinsics.h
dot4add_u8packed
toCheckHLSLBuiltinFunctionCall
inSemaChecking.cpp
dot4add_u8packed
toEmitHLSLBuiltinExpr
inCGBuiltin.cpp
clang/test/CodeGenHLSL/builtins/dot4add_u8packed.hlsl
clang/test/SemaHLSL/BuiltIns/dot4add_u8packed-errors.hlsl
int_dx_dot4add_u8packed
intrinsic inIntrinsicsDirectX.td
DXILOpMapping
ofint_dx_dot4add_u8packed
to164
inDXIL.td
dot4add_u8packed.ll
anddot4add_u8packed_errors.ll
tests inllvm/test/CodeGen/DirectX/
int_spv_dot4add_u8packed
intrinsic inIntrinsicsSPIRV.td
dot4add_u8packed
lowering and map it toint_spv_dot4add_u8packed
inSPIRVInstructionSelector::selectIntrinsic
.llvm/test/CodeGen/SPIRV/hlsl-intrinsics/dot4add_u8packed.ll
DirectX
SPIR-V
OpUDot:
Description:
Unsigned integer dot product of Vector 1 and Vector 2.
Result Type must be an integer type with Signedness of 0 whose
Width must be greater than or equal to that of the components of
Vector 1 and Vector 2.
Vector 1 and Vector 2 must have the same type.
Vector 1 and Vector 2 must be either 32-bit integers (enabled by the
DotProductInput4x8BitPacked capability) or vectors of
integer type with Signedness of 0 (enabled by the
DotProductInput4x8Bit or DotProductInputAll
capability).
When Vector 1 and Vector 2 are scalar integer types, Packed Vector
Format must be specified to select how the integers are to be
interpreted as vectors.
All components of the input vectors are zero-extended to the bit width
of the result’s type. The zero-extended input vectors are then
multiplied component-wise and all components of the vector resulting
from the component-wise multiplication are added together. The resulting
value will equal the low-order N bits of the correct result R, where N
is the result width and R is computed with enough precision to avoid
overflow and underflow.
Capability:
DotProduct
Missing before version 1.6.
5 + variable
4451
<id>
Result Type
Result <id>
<id>
Vector 1
<id>
Vector 2
Optional
Packed Vector Format
Packed Vector Format
Test Case(s)
Example 1
HLSL:
Syntax
uint dot4add_u8packed(uint a, uint b, uint c);
Type Description
Minimum Shader Model
This function is supported in the following shader models.
Shader Stages
See also
The text was updated successfully, but these errors were encountered: