@@ -77,119 +77,49 @@ private static void RunTransformOneTest()
77
77
private static void RunVp8Sse16X16Test ( )
78
78
{
79
79
// arrange
80
- byte [ ] a =
80
+ Random rand = new ( 1234 ) ;
81
+ byte [ ] a = new byte [ 512 * 10 ] ;
82
+ byte [ ] b = new byte [ 512 * 10 ] ;
83
+ for ( int i = 0 ; i < a . Length ; i ++ )
81
84
{
82
- 154 , 154 , 151 , 151 , 149 , 148 , 151 , 157 , 163 , 163 , 154 , 132 , 102 , 98 , 104 , 108 , 107 , 104 , 104 , 103 ,
83
- 101 , 106 , 123 , 119 , 170 , 171 , 172 , 171 , 168 , 175 , 171 , 173 , 151 , 151 , 149 , 150 , 147 , 147 , 146 , 159 ,
84
- 164 , 165 , 154 , 129 , 92 , 90 , 101 , 105 , 104 , 103 , 104 , 101 , 100 , 105 , 123 , 117 , 172 , 172 , 172 , 168 ,
85
- 170 , 177 , 170 , 175 , 151 , 149 , 150 , 150 , 147 , 147 , 156 , 161 , 161 , 161 , 151 , 126 , 93 , 90 , 102 , 107 ,
86
- 104 , 103 , 104 , 101 , 104 , 104 , 122 , 117 , 172 , 172 , 170 , 168 , 170 , 177 , 172 , 175 , 150 , 149 , 152 , 151 ,
87
- 148 , 151 , 160 , 159 , 157 , 157 , 148 , 133 , 96 , 90 , 103 , 107 , 104 , 104 , 101 , 100 , 102 , 102 , 121 , 117 ,
88
- 170 , 170 , 169 , 171 , 171 , 179 , 173 , 175 , 149 , 151 , 152 , 151 , 148 , 154 , 162 , 157 , 154 , 154 , 151 , 132 ,
89
- 92 , 89 , 101 , 108 , 104 , 102 , 101 , 101 , 103 , 103 , 123 , 118 , 171 , 168 , 177 , 173 , 171 , 178 , 172 , 176 ,
90
- 152 , 152 , 152 , 151 , 154 , 162 , 161 , 155 , 149 , 157 , 156 , 129 , 92 , 87 , 101 , 107 , 102 , 100 , 107 , 100 ,
91
- 101 , 102 , 123 , 118 , 170 , 175 , 182 , 172 , 171 , 179 , 173 , 175 , 152 , 151 , 154 , 155 , 160 , 162 , 161 , 153 ,
92
- 150 , 156 , 153 , 129 , 92 , 91 , 102 , 106 , 100 , 109 , 115 , 99 , 101 , 102 , 124 , 120 , 171 , 179 , 178 , 172 ,
93
- 171 , 181 , 171 , 173 , 154 , 154 , 154 , 162 , 160 , 158 , 156 , 152 , 153 , 157 , 151 , 128 , 86 , 86 , 102 , 105 ,
94
- 102 , 122 , 114 , 99 , 101 , 102 , 125 , 120 , 178 , 173 , 177 , 172 , 171 , 180 , 172 , 173 , 154 , 152 , 158 , 163 ,
95
- 150 , 148 , 148 , 156 , 151 , 158 , 152 , 129 , 87 , 87 , 101 , 105 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
96
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 154 , 151 , 165 , 156 , 141 , 137 , 146 , 158 , 152 , 159 , 152 , 133 ,
97
- 90 , 88 , 99 , 106 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
98
- 154 , 160 , 164 , 150 , 126 , 127 , 149 , 159 , 155 , 161 , 153 , 131 , 84 , 86 , 97 , 103 , 204 , 204 , 204 , 204 ,
99
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 157 , 167 , 157 , 137 , 102 , 128 , 155 , 161 ,
100
- 157 , 159 , 154 , 134 , 84 , 82 , 97 , 102 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
101
- 204 , 204 , 204 , 204 , 163 , 163 , 150 , 113 , 78 , 132 , 156 , 162 , 159 , 160 , 154 , 132 , 83 , 78 , 91 , 97 , 204 ,
102
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 163 , 157 , 137 , 80 , 78 ,
103
- 131 , 154 , 163 , 157 , 159 , 149 , 131 , 82 , 77 , 94 , 100 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
104
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 159 , 151 , 108 , 72 , 88 , 132 , 156 , 162 , 159 , 157 , 151 , 130 , 79 , 78 ,
105
- 95 , 102 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 151 , 130 ,
106
- 82 , 82 , 89 , 134 , 154 , 161 , 161 , 157 , 152 , 129 , 81 , 77 , 95 , 102 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
107
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204
108
- } ;
85
+ a [ i ] = ( byte ) rand . Next ( byte . MaxValue ) ;
86
+ b [ i ] = ( byte ) rand . Next ( byte . MaxValue ) ;
87
+ }
88
+ int [ ] expected = { 2533110 , 2818581 , 2984663 , 2891188 , 2855134 , 2634604 , 2466504 , 3061747 , 2626010 , 2640965 } ;
109
89
110
- byte [ ] b =
90
+ // act + assert
91
+ int offset = 0 ;
92
+ for ( int i = 0 ; i < expected . Length ; i ++ )
111
93
{
112
- 150 , 150 , 150 , 150 , 146 , 149 , 152 , 154 , 164 , 166 , 154 , 132 , 99 , 92 , 106 , 112 , 204 , 204 , 204 , 204 ,
113
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 150 , 150 , 150 , 150 , 146 , 149 , 152 , 154 ,
114
- 161 , 164 , 151 , 130 , 93 , 86 , 100 , 106 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
115
- 204 , 204 , 204 , 204 , 150 , 150 , 150 , 150 , 146 , 149 , 152 , 154 , 158 , 161 , 148 , 127 , 93 , 86 , 100 , 106 ,
116
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 150 , 150 , 150 , 150 ,
117
- 146 , 149 , 152 , 154 , 156 , 159 , 146 , 125 , 99 , 92 , 106 , 112 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
118
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 148 , 148 , 148 , 148 , 149 , 158 , 162 , 159 , 155 , 155 , 153 , 129 ,
119
- 94 , 87 , 101 , 106 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
120
- 151 , 151 , 151 , 151 , 152 , 159 , 161 , 156 , 155 , 155 , 153 , 129 , 94 , 87 , 101 , 106 , 204 , 204 , 204 , 204 ,
121
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 154 , 154 , 154 , 154 , 156 , 161 , 159 , 152 ,
122
- 155 , 155 , 153 , 129 , 94 , 87 , 101 , 106 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
123
- 204 , 204 , 204 , 204 , 156 , 156 , 156 , 156 , 159 , 162 , 158 , 149 , 155 , 155 , 153 , 129 , 94 , 87 , 101 , 106 ,
124
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 152 , 153 , 157 , 162 ,
125
- 150 , 149 , 149 , 151 , 155 , 160 , 150 , 131 , 91 , 90 , 104 , 104 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
126
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 152 , 156 , 158 , 157 , 140 , 137 , 145 , 159 , 155 , 160 , 150 , 131 ,
127
- 89 , 88 , 102 , 101 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
128
- 153 , 161 , 160 , 149 , 118 , 128 , 147 , 162 , 155 , 160 , 150 , 131 , 86 , 85 , 99 , 98 , 204 , 204 , 204 , 204 , 204 ,
129
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 154 , 165 , 161 , 144 , 96 , 128 , 154 , 159 , 155 ,
130
- 160 , 150 , 131 , 83 , 82 , 97 , 96 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
131
- 204 , 204 , 161 , 160 , 149 , 105 , 78 , 127 , 156 , 170 , 156 , 156 , 154 , 130 , 81 , 77 , 95 , 102 , 204 , 204 , 204 ,
132
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 160 , 160 , 133 , 85 , 81 , 129 , 155 ,
133
- 167 , 156 , 156 , 154 , 130 , 81 , 77 , 95 , 102 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
134
- 204 , 204 , 204 , 204 , 204 , 156 , 147 , 109 , 76 , 85 , 130 , 153 , 163 , 156 , 156 , 154 , 130 , 81 , 77 , 95 , 102 ,
135
- 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 152 , 128 , 87 , 83 ,
136
- 88 , 132 , 152 , 159 , 156 , 156 , 154 , 130 , 81 , 77 , 95 , 102 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 , 204 ,
137
- 204 , 204 , 204 , 204 , 204 , 204 , 204
138
- } ;
139
-
140
- int expected = 2063 ;
141
-
142
- // act
143
- int actual = LossyUtils . Vp8_Sse16x16 ( a , b ) ;
94
+ int actual = LossyUtils . Vp8_Sse16x16 ( a . AsSpan ( offset ) , b . AsSpan ( offset ) ) ;
95
+ Assert . Equal ( expected [ i ] , actual ) ;
144
96
145
- // assert
146
- Assert . Equal ( expected , actual ) ;
97
+ offset += 512 ;
98
+ }
147
99
}
148
100
149
101
private static void RunVp8Sse16X8Test ( )
150
102
{
151
103
// arrange
152
- byte [ ] a =
104
+ Random rand = new ( 1234 ) ;
105
+ byte [ ] a = new byte [ 256 * 10 ] ;
106
+ byte [ ] b = new byte [ 256 * 10 ] ;
107
+ for ( int i = 0 ; i < a . Length ; i ++ )
153
108
{
154
- 107 , 104 , 104 , 103 , 101 , 106 , 123 , 119 , 170 , 171 , 172 , 171 , 168 , 175 , 171 , 173 , 151 , 151 , 149 , 150 ,
155
- 147 , 147 , 146 , 159 , 164 , 165 , 154 , 129 , 92 , 90 , 101 , 105 , 104 , 103 , 104 , 101 , 100 , 105 , 123 , 117 ,
156
- 172 , 172 , 172 , 168 , 170 , 177 , 170 , 175 , 151 , 149 , 150 , 150 , 147 , 147 , 156 , 161 , 161 , 161 , 151 , 126 ,
157
- 93 , 90 , 102 , 107 , 104 , 103 , 104 , 101 , 104 , 104 , 122 , 117 , 172 , 172 , 170 , 168 , 170 , 177 , 172 , 175 ,
158
- 150 , 149 , 152 , 151 , 148 , 151 , 160 , 159 , 157 , 157 , 148 , 133 , 96 , 90 , 103 , 107 , 104 , 104 , 101 , 100 ,
159
- 102 , 102 , 121 , 117 , 170 , 170 , 169 , 171 , 171 , 179 , 173 , 175 , 149 , 151 , 152 , 151 , 148 , 154 , 162 , 157 ,
160
- 154 , 154 , 151 , 132 , 92 , 89 , 101 , 108 , 104 , 102 , 101 , 101 , 103 , 103 , 123 , 118 , 171 , 168 , 177 , 173 ,
161
- 171 , 178 , 172 , 176 , 152 , 152 , 152 , 151 , 154 , 162 , 161 , 155 , 149 , 157 , 156 , 129 , 92 , 87 , 101 , 107 ,
162
- 102 , 100 , 107 , 100 , 101 , 102 , 123 , 118 , 170 , 175 , 182 , 172 , 171 , 179 , 173 , 175 , 152 , 151 , 154 , 155 ,
163
- 160 , 162 , 161 , 153 , 150 , 156 , 153 , 129 , 92 , 91 , 102 , 106 , 100 , 109 , 115 , 99 , 101 , 102 , 124 , 120 ,
164
- 171 , 179 , 178 , 172 , 171 , 181 , 171 , 173 , 154 , 154 , 154 , 162 , 160 , 158 , 156 , 152 , 153 , 157 , 151 , 128 ,
165
- 86 , 86 , 102 , 105 , 102 , 122 , 114 , 99 , 101 , 102 , 125 , 120 , 178 , 173 , 177 , 172 , 171 , 180 , 172 , 173 ,
166
- 154 , 152 , 158 , 163 , 150 , 148 , 148 , 156 , 151 , 158 , 152 , 129 , 87 , 87 , 101 , 105
167
- } ;
109
+ a [ i ] = ( byte ) rand . Next ( byte . MaxValue ) ;
110
+ b [ i ] = ( byte ) rand . Next ( byte . MaxValue ) ;
111
+ }
112
+ int [ ] expected = { 1298274 , 1234836 , 1325264 , 1493317 , 1551995 , 1432668 , 1407891 , 1483297 , 1537930 , 1317204 } ;
168
113
169
- byte [ ] b =
114
+ // act + assert
115
+ int offset = 0 ;
116
+ for ( int i = 0 ; i < expected . Length ; i ++ )
170
117
{
171
- 103 , 103 , 103 , 103 , 101 , 106 , 122 , 114 , 171 , 171 , 171 , 171 , 171 , 177 , 169 , 175 , 150 , 150 , 150 , 150 ,
172
- 146 , 149 , 152 , 154 , 161 , 164 , 151 , 130 , 93 , 86 , 100 , 106 , 103 , 103 , 103 , 103 , 101 , 106 , 122 , 114 ,
173
- 171 , 171 , 171 , 171 , 171 , 177 , 169 , 175 , 150 , 150 , 150 , 150 , 146 , 149 , 152 , 154 , 158 , 161 , 148 , 127 ,
174
- 93 , 86 , 100 , 106 , 103 , 103 , 103 , 103 , 101 , 106 , 122 , 114 , 171 , 171 , 171 , 171 , 171 , 177 , 169 , 175 ,
175
- 150 , 150 , 150 , 150 , 146 , 149 , 152 , 154 , 156 , 159 , 146 , 125 , 99 , 92 , 106 , 112 , 103 , 103 , 103 , 103 ,
176
- 101 , 106 , 122 , 114 , 171 , 171 , 171 , 171 , 171 , 177 , 169 , 175 , 148 , 148 , 148 , 148 , 149 , 158 , 162 , 159 ,
177
- 155 , 155 , 153 , 129 , 94 , 87 , 101 , 106 , 102 , 100 , 100 , 102 , 100 , 101 , 120 , 122 , 170 , 176 , 176 , 170 ,
178
- 174 , 180 , 171 , 177 , 151 , 151 , 151 , 151 , 152 , 159 , 161 , 156 , 155 , 155 , 153 , 129 , 94 , 87 , 101 , 106 ,
179
- 102 , 105 , 105 , 102 , 100 , 101 , 120 , 122 , 170 , 176 , 176 , 170 , 174 , 180 , 171 , 177 , 154 , 154 , 154 , 154 ,
180
- 156 , 161 , 159 , 152 , 155 , 155 , 153 , 129 , 94 , 87 , 101 , 106 , 102 , 112 , 112 , 102 , 100 , 101 , 120 , 122 ,
181
- 170 , 176 , 176 , 170 , 174 , 180 , 171 , 177 , 156 , 156 , 156 , 156 , 159 , 162 , 158 , 149 , 155 , 155 , 153 , 129 ,
182
- 94 , 87 , 101 , 106 , 102 , 117 , 117 , 102 , 100 , 101 , 120 , 122 , 170 , 176 , 176 , 170 , 174 , 180 , 171 , 177 ,
183
- 152 , 153 , 157 , 162 , 150 , 149 , 149 , 151 , 155 , 160 , 150 , 131 , 91 , 90 , 104 , 104
184
- } ;
185
-
186
- int expected = 749 ;
187
-
188
- // act
189
- int actual = LossyUtils . Vp8_Sse16x8 ( a , b ) ;
118
+ int actual = LossyUtils . Vp8_Sse16x8 ( a . AsSpan ( offset ) , b . AsSpan ( offset ) ) ;
119
+ Assert . Equal ( expected [ i ] , actual ) ;
190
120
191
- // assert
192
- Assert . Equal ( expected , actual ) ;
121
+ offset += 256 ;
122
+ }
193
123
}
194
124
195
125
private static void RunVp8Sse4X4Test ( )
@@ -303,36 +233,42 @@ private static void RunHadamardTransformTest()
303
233
[ Fact ]
304
234
public void TransformOne_WithoutHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunTransformOneTest , HwIntrinsics . DisableHWIntrinsic ) ;
305
235
236
+ // This will test the AVX2 version.
306
237
[ Fact ]
307
238
public void Vp8Sse16X16_WithHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X16Test , HwIntrinsics . AllowAll ) ;
308
239
240
+ // This will test the SSE2 version.
309
241
[ Fact ]
310
- public void Vp8Sse16X16_WithoutSSE2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X16Test , HwIntrinsics . DisableSSE2 ) ;
242
+ public void Vp8Sse16X16_WithoutAVX2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X16Test , HwIntrinsics . DisableAVX2 ) ;
311
243
244
+ // This will test the fallback scalar version.
312
245
[ Fact ]
313
- public void Vp8Sse16X16_WithoutAVX2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X16Test , HwIntrinsics . DisableAVX2 ) ;
246
+ public void Vp8Sse16X16_WithoutSSE2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X16Test , HwIntrinsics . DisableSSE2 | HwIntrinsics . DisableAVX ) ;
314
247
248
+ // This will test the AVX2 version.
315
249
[ Fact ]
316
250
public void Vp8Sse16X8_WithHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X8Test , HwIntrinsics . AllowAll ) ;
317
251
252
+ // This will test the SSE2 version.
318
253
[ Fact ]
319
- public void Vp8Sse16X8_WithoutSSE2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X8Test , HwIntrinsics . DisableSSE2 ) ;
254
+ public void Vp8Sse16X8_WithoutAVX2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X8Test , HwIntrinsics . DisableAVX2 ) ;
320
255
256
+ // This will test the fallback scalar version.
321
257
[ Fact ]
322
- public void Vp8Sse16X8_WithoutAVX2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X8Test , HwIntrinsics . DisableAVX2 ) ;
258
+ public void Vp8Sse16X8_WithoutHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse16X8Test , HwIntrinsics . DisableSSE2 | HwIntrinsics . DisableAVX ) ;
323
259
324
260
// This will test the AVX2 version.
325
261
[ Fact ]
326
262
public void Vp8Sse4X4_WithHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse4X4Test , HwIntrinsics . AllowAll ) ;
327
263
328
- // This will test the fallback scalar version.
329
- [ Fact ]
330
- public void Vp8Sse4X4_WithoutHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse4X4Test , HwIntrinsics . DisableSSE2 | HwIntrinsics . DisableAVX ) ;
331
-
332
264
// This will test the SSE2 version.
333
265
[ Fact ]
334
266
public void Vp8Sse4X4_WithoutAVX2_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse4X4Test , HwIntrinsics . DisableAVX2 ) ;
335
267
268
+ // This will test the fallback scalar version.
269
+ [ Fact ]
270
+ public void Vp8Sse4X4_WithoutHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunVp8Sse4X4Test , HwIntrinsics . DisableSSE2 | HwIntrinsics . DisableAVX ) ;
271
+
336
272
[ Fact ]
337
273
public void Mean16x4_WithHardwareIntrinsics_Works ( ) => FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunMean16x4Test , HwIntrinsics . AllowAll ) ;
338
274
0 commit comments