Skip to content

Commit 731c6cb

Browse files
authored
[0030][SM6.9] Add list of ops with vector overload (#481)
* [0030][SM6.9] Add list of ops with vector overload This updates the spec to explicitly list the DXIL operations wtih vector overloads being added by this feature. * Add missing intrinsics based on #7120
1 parent 53b183f commit 731c6cb

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

proposals/0030-dxil-vectors.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ Previously usage of `extractelement` and `insertelement` in DXIL didn't allow dy
100100
#### Elementwise intrinsics
101101

102102
A selection of elementwise intrinsics are given additional native vector forms.
103+
The full list of intrinsics with elementwise overloads is listed in [Appendix 1](#appendix-1-new-elementwise-overloads).
103104
Elementwise intrinsics are those that perform their calculations irrespective of the location of the element
104105
in the vector or matrix arguments except insofar as that position corresponds to those of the other elements
105106
that might be used in the individual element calculations.
@@ -183,6 +184,71 @@ Calculations should produce the correct results in all cases for a range of vect
183184
In practice, this testing will largely represent verifying correct intrinsic output
184185
with the new shader model.
185186

187+
## Appendix 1: New Elementwise Overloads
188+
189+
| Opcode | Name | Class |
190+
| ------ | -------------- | -------- |
191+
| 6 | FAbs | Unary |
192+
| 7 | Saturate | Unary |
193+
| 8 | IsNaN | IsSpecialFloat |
194+
| 9 | IsInf | IsSpecialFloat |
195+
| 10 | IsFinite | IsSpecialFloat |
196+
| 11 | IsNormal | IsSpecialFloat |
197+
| 12 | Cos | Unary |
198+
| 13 | Sin | Unary |
199+
| 14 | Tan | Unary |
200+
| 15 | Acos | Unary |
201+
| 16 | Asin | Unary |
202+
| 17 | Atan | Unary |
203+
| 18 | Hcos | Unary |
204+
| 19 | Hsin | Unary |
205+
| 20 | Htan | Unary |
206+
| 21 | Exp | Unary |
207+
| 22 | Frc | Unary |
208+
| 23 | Log | Unary |
209+
| 24 | Sqrt | Unary |
210+
| 25 | Rsqrt | Unary |
211+
| 26 | Round_ne | Unary |
212+
| 27 | Round_ni | Unary |
213+
| 28 | Round_pi | Unary |
214+
| 29 | Round_z | Unary |
215+
| 30 | Bfrev | Unary |
216+
| 31 | Countbits | UnaryBits |
217+
| 32 | FirstBitLo | UnaryBits |
218+
| 33 | FirstBitHi | UnaryBits |
219+
| 34 | FirstBitSHi | UnaryBits |
220+
| 35 | FMax | Binary |
221+
| 36 | FMin | Binary |
222+
| 37 | IMax | Binary |
223+
| 38 | IMin | Binary |
224+
| 39 | UMax | Binary |
225+
| 40 | UMin | Binary |
226+
| 46 | FMad | Tertiary |
227+
| 47 | Fma | Tertiary |
228+
| 48 | IMad | Tertiary |
229+
| 49 | UMad | Tertiary |
230+
| 83 | DerivCoarseX | Unary |
231+
| 84 | DerivCoarseY | Unary |
232+
| 85 | DerivFineX | Unary |
233+
| 86 | DerivFineY | Unary |
234+
| 115 | WaveActiveAllEqual | WaveActiveAllEqual |
235+
| 117 | WaveReadLaneAt | WaveReadLaneAt |
236+
| 118 | WaveReadLaneFirst | WaveReadLaneFirst |
237+
| 119 | WaveActiveOp | WaveActiveOp |
238+
| 120 | WaveActiveBit | WaveActiveBit |
239+
| 121 | WavePrefixOp | WavePrefixOp |
240+
| 122 | QuadReadLaneAt | QuadReadLaneAt |
241+
| 123 | QuadOp | QuadOp |
242+
| 124 | BitcastI16toF16 | BitcastI16toF16 |
243+
| 125 | BitcastF16toI16 | BitcastF16toI16 |
244+
| 126 | BitcastI32toF32 | BitcastI32toF32 |
245+
| 127 | BitcastF32toI32 | BitcastF32toI32 |
246+
| 128 | BitcastI64toF64 | BitcastI64toF64 |
247+
| 129 | BitcastF64toI64 | BitcastF64toI64 |
248+
| 165 | WaveMatch | WaveMatch |
249+
250+
251+
186252
## Acknowledgments
187253

188254
* [Anupama Chandrasekhar](https://github.com/anupamachandra) and [Tex Riddell](https://github.com/tex3d) for foundational contributions to the design.

0 commit comments

Comments
 (0)