Skip to content

Commit a47537f

Browse files
authored
Refactor long vector exec tests to use classes for the op types and some (#7679)
This PR refactors the long vector execution tests I have been working on to remove the need for a LongVectorOpTypeT template parameter and instead rely on OOP/Polymorphism. This is a much cleaner approach for this application. I Initially chose not to go that route thinking that the templated path for the LongVectorOpTypeT would be clean and easy. That proved to be wrong as I added additional ops. Also gets rid of the tpp file as it's no longer required. **Edit:** Added an additional commit which re-factors some of the test setup a little more by introducing a struct for test metadata that helps simplify the code in each test op type constructor.
1 parent 3c6e259 commit a47537f

File tree

6 files changed

+1427
-1343
lines changed

6 files changed

+1427
-1343
lines changed

tools/clang/unittests/HLSLExec/LongVectorOpTable.xml

Lines changed: 89 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,6 @@
314314
<Parameter Name="OpTypeEnum">BinaryOpType_Max</Parameter>
315315
<Parameter Name="DataType">uint32</Parameter>
316316
</Row>
317-
<Row Name="AsDouble_uint32">
318-
<Parameter Name="OpTypeEnum">BinaryOpType_AsDouble</Parameter>
319-
<Parameter Name="DataType">uint32</Parameter>
320-
</Row>
321317
<!-- LongVectorBinaryOpTypeTable DataType: uint64 -->
322318
<Row Name="ScalarAdd_uint64">
323319
<Parameter Name="OpTypeEnum">BinaryOpType_ScalarAdd</Parameter>
@@ -559,35 +555,11 @@
559555
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
560556
<Parameter Name="DataType">int16</Parameter>
561557
</Row>
562-
<Row Name="AsFloat16_int16">
563-
<Parameter Name="OpTypeEnum">UnaryOpType_AsFloat16</Parameter>
564-
<Parameter Name="DataType">int16</Parameter>
565-
</Row>
566-
<Row Name="AsInt16_int16">
567-
<Parameter Name="OpTypeEnum">UnaryOpType_AsInt16</Parameter>
568-
<Parameter Name="DataType">int16</Parameter>
569-
</Row>
570-
<Row Name="AsUint16_int16">
571-
<Parameter Name="OpTypeEnum">UnaryOpType_AsUint16</Parameter>
572-
<Parameter Name="DataType">int16</Parameter>
573-
</Row>
574558
<!-- LongVectorUnaryOpTypeTable DataType: int32 -->
575559
<Row Name="Initialize_int32">
576560
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
577561
<Parameter Name="DataType">int32</Parameter>
578562
</Row>
579-
<Row Name="AsFloat_int32">
580-
<Parameter Name="OpTypeEnum">UnaryOpType_AsFloat</Parameter>
581-
<Parameter Name="DataType">int32</Parameter>
582-
</Row>
583-
<Row Name="AsInt_int32">
584-
<Parameter Name="OpTypeEnum">UnaryOpType_AsInt</Parameter>
585-
<Parameter Name="DataType">int32</Parameter>
586-
</Row>
587-
<Row Name="AsUint_int32">
588-
<Parameter Name="OpTypeEnum">UnaryOpType_AsUint</Parameter>
589-
<Parameter Name="DataType">int32</Parameter>
590-
</Row>
591563
<!-- LongVectorUnaryOpTypeTable DataType: int64 -->
592564
<Row Name="Initialize_int64">
593565
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
@@ -598,35 +570,11 @@
598570
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
599571
<Parameter Name="DataType">uint16</Parameter>
600572
</Row>
601-
<Row Name="AsFloat16_uint16">
602-
<Parameter Name="OpTypeEnum">UnaryOpType_AsFloat16</Parameter>
603-
<Parameter Name="DataType">uint16</Parameter>
604-
</Row>
605-
<Row Name="AsInt16_uint16">
606-
<Parameter Name="OpTypeEnum">UnaryOpType_AsInt16</Parameter>
607-
<Parameter Name="DataType">uint16</Parameter>
608-
</Row>
609-
<Row Name="AsUint16_uint16">
610-
<Parameter Name="OpTypeEnum">UnaryOpType_AsUint16</Parameter>
611-
<Parameter Name="DataType">uint16</Parameter>
612-
</Row>
613573
<!-- LongVectorUnaryOpTypeTable DataType: uint32 -->
614574
<Row Name="Initialize_uint32">
615575
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
616576
<Parameter Name="DataType">uint32</Parameter>
617577
</Row>
618-
<Row Name="AsFloat_uint32">
619-
<Parameter Name="OpTypeEnum">UnaryOpType_AsFloat</Parameter>
620-
<Parameter Name="DataType">uint32</Parameter>
621-
</Row>
622-
<Row Name="AsInt_uint32">
623-
<Parameter Name="OpTypeEnum">UnaryOpType_AsInt</Parameter>
624-
<Parameter Name="DataType">uint32</Parameter>
625-
</Row>
626-
<Row Name="AsUint_uint32">
627-
<Parameter Name="OpTypeEnum">UnaryOpType_AsUint</Parameter>
628-
<Parameter Name="DataType">uint32</Parameter>
629-
</Row>
630578
<!-- LongVectorUnaryOpTypeTable DataType: uint64 -->
631579
<Row Name="Initialize_uint64">
632580
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
@@ -637,18 +585,6 @@
637585
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
638586
<Parameter Name="DataType">float16</Parameter>
639587
</Row>
640-
<Row Name="AsFloat16_float16">
641-
<Parameter Name="OpTypeEnum">UnaryOpType_AsFloat16</Parameter>
642-
<Parameter Name="DataType">float16</Parameter>
643-
</Row>
644-
<Row Name="AsInt16_float16">
645-
<Parameter Name="OpTypeEnum">UnaryOpType_AsInt16</Parameter>
646-
<Parameter Name="DataType">float16</Parameter>
647-
</Row>
648-
<Row Name="AsUint16_float16">
649-
<Parameter Name="OpTypeEnum">UnaryOpType_AsUint16</Parameter>
650-
<Parameter Name="DataType">float16</Parameter>
651-
</Row>
652588
<!-- LongVectorUnaryOpTypeTable DataType: float32 -->
653589
<Row Name="Initialize_float32">
654590
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
@@ -659,13 +595,6 @@
659595
<Parameter Name="OpTypeEnum">UnaryOpType_Initialize</Parameter>
660596
<Parameter Name="DataType">float64</Parameter>
661597
</Row>
662-
<Row Name="AsUint_SplitDouble_float64">
663-
<Parameter Name="OpTypeEnum">UnaryOpType_AsUint_SplitDouble</Parameter>
664-
<Parameter Name="DataType">float64</Parameter>
665-
<!-- Use a special InputValueSetName1 so we verify with values that
666-
produce non-zero outputs for HighBits and LowBits -->
667-
<Parameter Name="InputValueSetName1">SplitDoubleInputValueSet</Parameter>
668-
</Row>
669598
</Table>
670599
<Table Id="TrigonometricOpTable">
671600
<ParameterTypes>
@@ -761,4 +690,93 @@
761690
<Parameter Name="DataType">float32</Parameter>
762691
</Row>
763692
</Table>
693+
<Table Id="AsTypeOpTable">
694+
<ParameterTypes>
695+
<!-- InputValueSetName1 is optional. If no value is provided use the
696+
default value set for the data type. This string is meant to be a key
697+
value for the the array of std::pairs defined in LongVectorTestData.h
698+
for the applicable DataTypeIn-->
699+
<ParameterType Name="InputValueSetName1">String</ParameterType>
700+
<ParameterType Name="InputValueSetName2">String</ParameterType>
701+
<ParameterType Name="DataTypeIn">String</ParameterType>
702+
<ParameterType Name="OpTypeEnum">String</ParameterType>
703+
</ParameterTypes>
704+
<!-- AsTypeOpTable_AsType DataTypeIn: int16 -->
705+
<Row Name="AsFloat16_int16">
706+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsFloat16</Parameter>
707+
<Parameter Name="DataTypeIn">int16</Parameter>
708+
</Row>
709+
<Row Name="AsInt16_int16">
710+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsInt16</Parameter>
711+
<Parameter Name="DataTypeIn">int16</Parameter>
712+
</Row>
713+
<Row Name="AsUint16_int16">
714+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsUint16</Parameter>
715+
<Parameter Name="DataTypeIn">int16</Parameter>
716+
</Row>
717+
<!-- AsTypeOpTable_AsType DataTypeIn: int32 -->
718+
<Row Name="AsFloat_int32">
719+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsFloat</Parameter>
720+
<Parameter Name="DataTypeIn">int32</Parameter>
721+
</Row>
722+
<Row Name="AsInt_int32">
723+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsInt</Parameter>
724+
<Parameter Name="DataTypeIn">int32</Parameter>
725+
</Row>
726+
<Row Name="AsUint_int32">
727+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsUint</Parameter>
728+
<Parameter Name="DataTypeIn">int32</Parameter>
729+
</Row>
730+
<!-- AsTypeOpTable_AsType DataTypeIn: uint16 -->
731+
<Row Name="AsFloat16_uint16">
732+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsFloat16</Parameter>
733+
<Parameter Name="DataTypeIn">uint16</Parameter>
734+
</Row>
735+
<Row Name="AsInt16_uint16">
736+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsInt16</Parameter>
737+
<Parameter Name="DataTypeIn">uint16</Parameter>
738+
</Row>
739+
<Row Name="AsUint16_uint16">
740+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsUint16</Parameter>
741+
<Parameter Name="DataTypeIn">uint16</Parameter>
742+
</Row>
743+
<!-- AsTypeOpTable_AsType DataTypeIn: uint32 -->
744+
<Row Name="AsFloat_uint32">
745+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsFloat</Parameter>
746+
<Parameter Name="DataTypeIn">uint32</Parameter>
747+
</Row>
748+
<Row Name="AsInt_uint32">
749+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsInt</Parameter>
750+
<Parameter Name="DataTypeIn">uint32</Parameter>
751+
</Row>
752+
<Row Name="AsUint_uint32">
753+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsUint</Parameter>
754+
<Parameter Name="DataTypeIn">uint32</Parameter>
755+
</Row>
756+
<Row Name="AsDouble_uint32">
757+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsDouble</Parameter>
758+
<Parameter Name="DataTypeIn">uint32</Parameter>
759+
</Row>
760+
<!-- AsTypeOpTable_AsType DataTypeIn: float16-->
761+
<Row Name="AsFloat16_float16">
762+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsFloat16</Parameter>
763+
<Parameter Name="DataTypeIn">float16</Parameter>
764+
</Row>
765+
<Row Name="AsInt16_float16">
766+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsInt16</Parameter>
767+
<Parameter Name="DataTypeIn">float16</Parameter>
768+
</Row>
769+
<Row Name="AsUint16_float16">
770+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsUint16</Parameter>
771+
<Parameter Name="DataTypeIn">float16</Parameter>
772+
</Row>
773+
<!-- AsTypeOpTable_AsType DataTypeIn: float64 -->
774+
<Row Name="AsUint_SplitDouble_float64">
775+
<Parameter Name="OpTypeEnum">AsTypeOpType_AsUint_SplitDouble</Parameter>
776+
<Parameter Name="DataTypeIn">float64</Parameter>
777+
<!-- Use a special InputValueSetName1 so we verify with values that
778+
produce non-zero outputs for HighBits and LowBits -->
779+
<Parameter Name="InputValueSetName1">SplitDoubleInputValueSet</Parameter>
780+
</Row>
781+
</Table>
764782
</Data>

0 commit comments

Comments
 (0)