Skip to content

Commit 474e748

Browse files
authored
Update some notes in long vector test plan (#778)
Update table in long vector exec test plan to reflect tests that were explicitly omitted due to already having coverage via other tests. For example, the '+=' isn't special and already has coverage via '+' and '=' tests.
1 parent fb3577a commit 474e748

1 file changed

Lines changed: 66 additions & 64 deletions

File tree

proposals/infra/INF-0006-Long-Vector-ExecutionTest-Plan.md

Lines changed: 66 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,10 @@ considered completed.
201201
waiting for an OS/HLK release.
202202

203203
## HLSL-Operators
204+
204205
✅ - Means there was an explicit test case implemented for the intrinsic.
205206
☑️ - Means the intrinsic gets coverage via other intrinsics. For example 'exp2'
206-
just uses the DXIL Opcode for Exp.
207+
just uses the DXIL Opcode for Exp.
207208

208209
### HLSL Operators
209210

@@ -216,15 +217,16 @@ Operator table from [Microsoft HLSL Operators](https://learn.microsoft.com/en-us
216217
|| Addition | + | |
217218
|| Subtraction | - | |
218219
|| Multiplication | * | |
219-
| | Additive and Multiplicative Operators | +, -, *, /, % | |
220-
| | Array Operator | [i] | llvm:ExtractElementInst OR llvm:InsertElemtInst |
221-
| | Assignment Operators | =, +=, -=, *=, /=, %= | |
222-
| | Bitwise Operators | ~, <<, >>, &, \|, ^, <<=, >>=, &=, \|=, ^= | Only valid on int and uint vectors |
223-
| | Boolean Math Operators | & &, \|\| , ?: | |
224-
| | Cast Operator | (type) | No direct operator, difference in GetElementPointer or load type |
225-
| | Comparison Operators | <, >, ==, !=, <=, >= | |
226-
| | Prefix or Postfix Operators | ++, -- | |
227-
| | Unary Operators | !, -, + | |
220+
|| Additive and Multiplicative Operators | +, -, *, /, % | |
221+
|| Array Operator | [i] | llvm:ExtractElementInst OR llvm:InsertElemtInst |
222+
| ☑️ | Assignment Operators | =, +=, -=, *=, /=, %= | |
223+
|| Bitwise Operators | ~, <<, >>, &, \|, ^, | Only valid on int and uint vectors |
224+
| ☑️ | Bitwise Assignment Operators | <<=, >>=, &=, \|=, ^= | Only valid on int and uint vectors |
225+
|| Boolean Math Operators | & &, \|\| , ?: | |
226+
|| Cast Operator | (type) | No direct operator, difference in GetElementPointer or load type |
227+
|| Comparison Operators | <, >, ==, !=, <=, >= | |
228+
| ☑️ | Prefix or Postfix Operators | ++, -- | |
229+
| ☑️ | Unary Operators | !, -, + | |
228230

229231
## Mappings of HLSL Intrinsics to DXIL OpCodes or LLVM Instructions
230232

@@ -251,104 +253,104 @@ Operator table from [Microsoft HLSL Operators](https://learn.microsoft.com/en-us
251253
|| ceil | Round_pi | | Unary | |
252254
|| exp | Exp | | Unary | |
253255
|| floor | Round_ni | | Unary | |
254-
| | fma | Fma | | Ternary | All three inputs are of the same type. Any inputs that are long vectors must have the same number of dimensions. |
256+
| | fma | Fma | | Ternary | All three inputs are of the same type. Any inputs that are long vectors must have the same number of dimensions. |
255257
|| frac | rc | | Unary | |
256-
| | frexp | | FCmpUNE, SExt, BitCast, And, Add, AShr, SIToFP, Store, And, Or | Unary | Has a return value in addition to an output parameter. |
258+
| | frexp | | FCmpUNE, SExt, BitCast, And, Add, AShr, SIToFP, Store, And, Or | Unary | Has a return value in addition to an output parameter. |
257259
| ☑️ | ldexp | Exp | FMul | Binary | Not required. Covered by floating point multiplication and exp. |
258260
| ☑️ | lerp | | FSub, FMul, FAdd | Ternary | Not required. FSub, FMul, and FAdd are all well covered. |
259261
|| log | Log | FMul | Unary | All three inputs are of the same type. Any inputs that are long vectors must have the same number of dimensions. |
260-
| | mad | IMad | | Ternary | |
262+
| | mad | IMad | | Ternary | |
261263
|| max | IMax | | Binary | |
262264
|| min | IMin | | Binary | |
263265
| ☑️ | pow | [Log, Exp] | [FMul] , [FDiv] | Binary | Not required. Ops well covered by other tests. |
264266
| ☑️ | rcp | | FDiv | Unary | Not required. Covered by floating point division. |
265267
|| round | Round_ne | | Unary | |
266268
|| rsqrt | Rsqrt | | Unary | |
267269
|| sign | | ZExt, Sub, [ICmpSLT], [FCmpOLT] | Unary | |
268-
| | smoothstep| Saturate | FMul, FSub, FDiv | Ternary | |
270+
| ☑️ | smoothstep| Saturate | FMul, FSub, FDiv | Ternary | |
269271
|| sqrt | Sqrt | | Unary | |
270-
| ☑️ | step | | FCmpOLT, Select | Binary | Not required. FCmpOLT covered by atan2 and sign. Select covered by explicit select test. |
272+
| ☑️ | step | | FCmpOLT, Select | Binary | |
271273
|| trunc | Round_z | | Unary | |
272-
| ☑️ | clamp | FMax, FMin, [UMax, UMin] , [IMax, Imin] | | Ternary | Not required. Covered by min and max. |
274+
| ☑️ | clamp | FMax, FMin, [UMax, UMin] , [IMax, Imin] | | Ternary | |
273275
| ☑️ | exp2 | Exp | | Unary | Not required. Covered by exp. |
274-
| ☑️ | log10 | Log | FMul | Unary | Not required. Covered by log.|
275-
| ☑️ | log2 | Log | | Unary | Not required. Covered by log.|
276+
| ☑️ | log10 | Log | FMul | Unary | Not required. Covered by log. |
277+
| ☑️ | log2 | Log | | Unary | Not required. Covered by log. |
276278

277279
### Float Ops
278280

279281
| Completed | Intrinsic | DXIL OpCode | LLVM Instruction | Basic Op Type | Notes |
280282
|---|-----------|--------------|------------------|----------------|-----------|
281-
| | f16tof32 | LegacyF16ToF32 | | | Unary |
282-
| | f32tof16 | LegacyF32ToF16 | | | Unary |
283-
| | isfinite | IsFinite | | | Unary |
284-
| | isinf | IsInf | | | Unary |
285-
| | isnan | IsNan | | | Unary |
286-
| | modf | Round_z | FSub, Store | Has a return value and an ouput value. | Unary |
287-
| | fmod | FAbs, Frc | FDiv, FNeg, FCmpOGE, Select, FMul | | Binary |
283+
| | f16tof32 | LegacyF16ToF32 | | | Unary. N/A. Legacy ops omitted from long vector support. |
284+
| | f32tof16 | LegacyF32ToF16 | | | Unary. N/A. Legacy ops omitted from long vector support. |
285+
| | isfinite | IsFinite | | | Unary |
286+
| ️✅ | isinf | IsInf | | | Unary |
287+
| | isnan | IsNan | | | Unary |
288+
| | modf | Round_z | FSub, Store | Has a return value and an ouput value. | Unary |
289+
| ☑️ | fmod | FAbs, Frc | FDiv, FNeg, FCmpOGE, Select, FMul | | Binary |
288290

289291
### Bitwise Ops
290292

291293
| Completed | Intrinsic | DXIL OpCode | LLVM Instruction | Basic Op Type | Notes |
292294
|---|-----------|--------------|------------------|----------------|-----------|
293-
| | saturate | Saturate | | | Unary |
294-
| | reversebits| Bfrev | | | Unary |
295-
| | countbits | Countbits | | | Unary |
296-
| | firstbithigh| FirstbitSHi | | | Unary |
297-
| | firstbitlow| FirstbitLo | | | Unary |
295+
| | saturate | Saturate | | | Unary |
296+
| | reversebits| Bfrev | | | Unary |
297+
| | countbits | Countbits | | | Unary |
298+
| | firstbithigh| FirstbitSHi | | | Unary |
299+
| | firstbitlow| FirstbitLo | | | Unary |
298300

299301
### Logic Ops
300302

301303
| Completed | Intrinsic | DXIL OpCode | LLVM Instruction | Basic Op Type | Notes |
302304
|---|-----------|--------------|------------------|----------------|-----------|
303-
| | select | | Select, [ExtractElement, InsertElement] | | Ternary |
304-
| | and | | And, [ExtractElement, InsertElement] | Not required. Covered by select. | Binary |
305-
| | or | | Or, [ExtractElement, InsertElement] | Not required. Covered by select. | Binary |
305+
| | select | | Select, [ExtractElement, InsertElement] | | Ternary |
306+
| | and | | And, [ExtractElement, InsertElement] | Not required. Covered by select. | Binary |
307+
| | or | | Or, [ExtractElement, InsertElement] | Not required. Covered by select. | Binary |
306308

307309
### Reductions
308310

309311
| Completed | Intrinsic | DXIL OpCode | LLVM Instruction | Basic Op Type | Notes |
310312
|---|-----------|--------------|------------------|----------------|-----------|
311-
| | all | | [FCmpUNE], [ICmpNE] , [ExtractElement, And] | | Unary |
312-
| | any | | [FCmpUNE], [ICmpNE] , [ExtractElement, Or] | | Unary |
313-
| | dot | | ExtractElement, Mul | | Binary |
313+
| | all | | [FCmpUNE], [ICmpNE] , [ExtractElement, And] | | Unary |
314+
| | any | | [FCmpUNE], [ICmpNE] , [ExtractElement, Or] | | Unary |
315+
| | dot | | ExtractElement, Mul | | Binary |
314316

315317
### Derivative and Quad Operations
316318

317319
| Completed | Intrinsic | DXIL OpCode | LLVM Instruction | Basic Op Type | Notes |
318320
|---|-----------|--------------|------------------|----------------|-----------|
319-
| | ddx | DerivCoarseX | | | Unary |
320-
| | ddx_fine | DerivFineX | | | Unary |
321-
| | ddy | DerivCoarseY | | | Unary |
322-
| | ddy_fine | DerivFineY | | | Unary |
323-
| | fwidth | QuadReadLaneAt | | | Unary |
324-
| | QuadReadLaneAcrossX | QuadOp | | | Unary |
325-
| | QuadReadLaneAcrossY | QuadOp | | Uses different QuadOp parameters leading to different behavior. | Unary |
326-
| | QuadReadLaneAcrossDiagonal | QuadOp | | Uses different QuadOp parameters leading to different behavior. | Unary |
327-
| | ddx_coarse| DerivCoarseX | | Not required. Covered by ddx | Unary |
328-
| | ddy_coarse| DerivCoarseY | | Not requried. Covered by ddy | Unary |
321+
| | ddx | DerivCoarseX | | | Unary |
322+
| | ddx_fine | DerivFineX | | | Unary |
323+
| | ddy | DerivCoarseY | | | Unary |
324+
| | ddy_fine | DerivFineY | | | Unary |
325+
| ☑️ | fwidth | QuadReadLaneAt | | | Unary |
326+
| | QuadReadLaneAcrossX | QuadOp | | | Unary |
327+
| | QuadReadLaneAcrossY | QuadOp | | Uses different QuadOp parameters leading to different behavior. | Unary |
328+
| | QuadReadLaneAcrossDiagonal | QuadOp | | Uses different QuadOp parameters leading to different behavior. | Unary |
329+
| ☑️ | ddx_coarse| DerivCoarseX | | Not required. Covered by ddx | Unary |
330+
| ☑️ | ddy_coarse| DerivCoarseY | | Not requried. Covered by ddy | Unary |
329331

330332
### WaveOps
331333

332334
| Completed | Intrinsic | DXIL OpCode | LLVM Instruction | Basic Op Type | Notes |
333335
|---|-----------|--------------|------------------|----------------|-----------|
334-
| | WaveActiveBitAnd | WaveActiveBit | | | Binary |
335-
| | WaveActiveBitOr | WaveActiveBit | | | Binary |
336-
| | WaveActiveBitXor | WaveActiveBit | | | Binary |
337-
| | WaveActiveProduct | WaveActiveOp | | | Binary |
338-
| | WaveActiveSum | WaveActiveOp | | | Binary |
339-
| | WaveActiveMin | WaveActiveOp | | | Binary |
340-
| | WaveActiveMax | WaveActiveOp | | | Binary |
341-
| | WaveMultiPrefixBitAnd | WaveMultiPrefixOp | | | Binary |
342-
| | WaveMultiPrefixBitOr | WaveMultiPrefixOp | | | Binary |
343-
| | WaveMultiPrefixBitXor | WaveMultiPrefixOp | | | Binary |
344-
| | WaveMultiPrefixProduct| WaveMultiPrefixOp | | | Binary |
345-
| | WaveMultiPrefixSum | WaveMultiPrefixOp | | | Binary |
346-
| | WavePrefixSum | WavePrefixOp | | | Binary |
347-
| | WavePrefixProduct | WavePrefixOp | | | Binary |
348-
| | WaveReadLaneAt | WaveReadLaneAt | | | Binary |
349-
| | WaveReadLaneFirst | WaveReadLaneFirst | | | Unary |
350-
| | WaveActiveAllEqual | WaveActiveAllEqual | | | Unary |
351-
| | WaveMatch | WaveMatch | | | Unary |
336+
| | WaveActiveBitAnd | WaveActiveBit | | | Binary |
337+
| | WaveActiveBitOr | WaveActiveBit | | | Binary |
338+
| | WaveActiveBitXor | WaveActiveBit | | | Binary |
339+
| | WaveActiveProduct | WaveActiveOp | | | Binary |
340+
| | WaveActiveSum | WaveActiveOp | | | Binary |
341+
| | WaveActiveMin | WaveActiveOp | | | Binary |
342+
| | WaveActiveMax | WaveActiveOp | | | Binary |
343+
| | WaveMultiPrefixBitAnd | WaveMultiPrefixOp | | | Binary |
344+
| | WaveMultiPrefixBitOr | WaveMultiPrefixOp | | | Binary |
345+
| | WaveMultiPrefixBitXor | WaveMultiPrefixOp | | | Binary |
346+
| | WaveMultiPrefixProduct| WaveMultiPrefixOp | | | Binary |
347+
| | WaveMultiPrefixSum | WaveMultiPrefixOp | | | Binary |
348+
| | WavePrefixSum | WavePrefixOp | | | Binary |
349+
| | WavePrefixProduct | WavePrefixOp | | | Binary |
350+
| | WaveReadLaneAt | WaveReadLaneAt | | | Binary |
351+
| | WaveReadLaneFirst | WaveReadLaneFirst | | | Unary |
352+
| | WaveActiveAllEqual | WaveActiveAllEqual | | | Unary |
353+
| | WaveMatch | WaveMatch | | | Unary |
352354

353355
### Type Casting Operations
354356

0 commit comments

Comments
 (0)