| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| Common | ||
| D3D8 | ||
| D3D9 | ||
| Device | ||
| Main | ||
| OpenGL | ||
| Pipeline | ||
| Reactor | ||
| Renderer | ||
| Shader | ||
| SwiftShader | ||
| System | ||
| Vulkan | ||
| WSI | ||
| Android.bp | ||
| SwiftShader.workspace | ||
| commit_id.py | ||
| swiftshader.gni |
As the name suggest, this CL adds many operations related
to arithmetic subgroup operations, i.e.:
- Reduction / Inclusive Scan / Exclusive Scans for:
- IntAdd, UIntAdd, FloatAdd
- IntMul, UIntMul, FloatMul,
- IntMin, UIntMin, FloatMin,
- IntMax, UIntMax, FloatMax,
- BitwiseAnd, BitwiseOr, BitwiseXor
- LogicalAnd, LogicalOr, LogicalXor
The implementation uses a single template function to
implement all these, based on the fact that these are
all binary commutative operations.
NOTE: Only 32-bit values are supported.
To make scans efficient, a new Reactor operation, named
Blend() is introduced. It is used to mix two input vectors
using 4 3-bit indices (encoded in a single 16-bit value)
to select the result's lane values.
A new unit-test is added to ReactorUnittests to check its
behaviour. Unfortunately, the test takes about 2 minutes
on a fast workstation when doing a full scan, so it will
by default only check 1/11th of all possible values
(see comments in the patch for more details).
Also, Float4::positive_inf() and Float4::negative_inf()
methods were added, since trying to build Float4(INFINITY)
will trigger a DCHECK() in the Float4(float) constructor,
and the infinity values are required by the subgroup
floating-point scan operations.
Bug: b/142002682
Test: dEQP-VK.subgroups.arithmetic.*
Change-Id: I86f509fc47f7475ca126615ed698ee493ae835ef
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38929Reviewed-by:
Chris Forbes <chrisforbes@google.com>
Reviewed-by:
Ben Clayton <bclayton@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by:
David Turner <digit@google.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| Common | Loading commit data... | |
| D3D8 | Loading commit data... | |
| D3D9 | Loading commit data... | |
| Device | Loading commit data... | |
| Main | Loading commit data... | |
| OpenGL | Loading commit data... | |
| Pipeline | Loading commit data... | |
| Reactor | Loading commit data... | |
| Renderer | Loading commit data... | |
| Shader | Loading commit data... | |
| SwiftShader | Loading commit data... | |
| System | Loading commit data... | |
| Vulkan | Loading commit data... | |
| WSI | Loading commit data... | |
| Android.bp | Loading commit data... | |
| SwiftShader.workspace | Loading commit data... | |
| commit_id.py | Loading commit data... | |
| swiftshader.gni | Loading commit data... |