Skip to content

Commit 9db5ceb

Browse files
authored
[0030] Update DXIL Ops supported by Long Vectors (microsoft#584)
Fixes microsoft#532 - Adds more dxil ops that fit the elementwise requirements - confirms support for shufflevector - Removes unnecessary bitcasts
1 parent 84b42e0 commit 9db5ceb

1 file changed

Lines changed: 63 additions & 61 deletions

File tree

proposals/0030-dxil-vectors.md

Lines changed: 63 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ Here and hereafter, `NUM` is the number of elements in the loaded vector, `TYPE`
9494
#### Vector access
9595

9696
Dynamic access to vectors were previously converted to array accesses.
97-
Native vectors can be dynamically accessed using `extractelement`, `insertelement`, or `getelementptr` operations.
97+
Native vectors can be dynamically accessed using `extractelement`, `insertelement`, `shufflevector` or `getelementptr` operations.
9898
Previously usage of `extractelement` and `insertelement` in DXIL didn't allow dynamic index parameters.
9999

100100
#### Elementwise intrinsics
@@ -186,66 +186,68 @@ In practice, this testing will largely represent verifying correct intrinsic out
186186

187187
## Appendix 1: New Elementwise Overloads
188188

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 |
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+
| 113 | WaveAnyTrue | WaveAnyTrue |
235+
| 114 | WaveAllTrue | WaveAllTrue |
236+
| 115 | WaveActiveAllEqual | WaveActiveAllEqual |
237+
| 116 | WaveActiveBallot | WaveActiveBallot |
238+
| 117 | WaveReadLaneAt | WaveReadLaneAt |
239+
| 118 | WaveReadLaneFirst | WaveReadLaneFirst |
240+
| 119 | WaveActiveOp | WaveActiveOp |
241+
| 120 | WaveActiveBit | WaveActiveBit |
242+
| 121 | WavePrefixOp | WavePrefixOp |
243+
| 122 | QuadReadLaneAt | QuadReadLaneAt |
244+
| 123 | QuadOp | QuadOp |
245+
| 135 | WaveAllBitCount | WaveAllBitCount |
246+
| 136 | WavePrefixBitCount | WavePrefixBitCount |
247+
| 165 | WaveMatch | WaveMatch |
248+
| 166 | WaveMultiPrefixOp | WaveMultiPrefixOp |
249+
| 167 | WaveMultiPrefixBitCount | WaveMultiPrefixBitCount |
250+
| 222 | QuadVote | QuadVote |
249251

250252

251253

0 commit comments

Comments
 (0)