@@ -114,11 +114,17 @@ public void simpleGoodSequencesScalar()
114
114
115
115
[ Trait ( "Category" , "avx" ) ]
116
116
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
117
- public void simpleGoodSequencesAVX ( )
117
+ public void simpleGoodSequencesAvx2 ( )
118
118
{
119
119
simpleGoodSequences ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
120
120
}
121
121
122
+ [ Trait ( "Category" , "arm64" ) ]
123
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
124
+ public void simpleGoodSequencesArm64 ( )
125
+ {
126
+ simpleGoodSequences ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
127
+ }
122
128
123
129
private void BadSequences ( Utf8ValidationDelegate utf8ValidationDelegate )
124
130
{
@@ -177,11 +183,18 @@ public void BadSequencesScalar()
177
183
178
184
[ Trait ( "Category" , "avx" ) ]
179
185
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
180
- public void BadSequencesAVX ( )
186
+ public void BadSequencesAvx2 ( )
181
187
{
182
188
BadSequences ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
183
189
}
184
190
191
+ [ Trait ( "Category" , "arm64" ) ]
192
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
193
+ public void BadSequencesArm64 ( )
194
+ {
195
+ BadSequences ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
196
+ }
197
+
185
198
// this was in the C++ code
186
199
private void Node48995Test ( Utf8ValidationDelegate utf8ValidationDelegate )
187
200
{
@@ -222,11 +235,18 @@ public void NoErrorScalar()
222
235
223
236
[ Trait ( "Category" , "avx" ) ]
224
237
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
225
- public void NoErrorAVX ( )
238
+ public void NoErrorAvx2 ( )
226
239
{
227
240
NoError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
228
241
}
229
242
243
+ [ Trait ( "Category" , "arm64" ) ]
244
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
245
+ public void NoErrorArm64 ( )
246
+ {
247
+ NoError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
248
+ }
249
+
230
250
private void NoErrorSpecificByteCount ( Utf8ValidationDelegate utf8ValidationDelegate )
231
251
{
232
252
RunTestForByteLength ( 1 , utf8ValidationDelegate ) ;
@@ -268,11 +288,17 @@ public void NoErrorSpecificByteCountScalar()
268
288
269
289
[ Trait ( "Category" , "avx" ) ]
270
290
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
271
- public void NoErrorSpecificByteCountAVX ( )
291
+ public void NoErrorSpecificByteCountAvx2 ( )
272
292
{
273
293
NoErrorSpecificByteCount ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
274
294
}
275
295
296
+ [ Trait ( "Category" , "arm64" ) ]
297
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
298
+ public void NoErrorSpecificByteCountArm64 ( )
299
+ {
300
+ NoErrorSpecificByteCount ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
301
+ }
276
302
private void NoErrorIncompleteThenASCII ( Utf8ValidationDelegate utf8ValidationDelegate )
277
303
{
278
304
foreach ( int outputLength in outputLengths ) {
@@ -319,12 +345,18 @@ public void NoErrorIncompleteThenASCIIScalar()
319
345
320
346
[ Trait ( "Category" , "avx" ) ]
321
347
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
322
- public void NoErrorIncompleteThenASCIIAVX ( )
348
+ public void NoErrorIncompleteThenASCIIAvx2 ( )
323
349
{
324
350
NoErrorIncompleteThenASCII ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
325
351
}
326
352
327
353
354
+ [ Trait ( "Category" , "arm64" ) ]
355
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
356
+ public void NoErrorIncompleteThenASCIIArm64 ( )
357
+ {
358
+ NoErrorIncompleteThenASCII ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
359
+ }
328
360
329
361
private void NoErrorIncompleteAt256Vector ( Utf8ValidationDelegate utf8ValidationDelegate )
330
362
{
@@ -370,11 +402,18 @@ public void NoErrorIncompleteAt256VectorScalar()
370
402
371
403
[ Trait ( "Category" , "avx" ) ]
372
404
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
373
- public void NoErrorIncompleteAt256VectorAVX ( )
405
+ public void NoErrorIncompleteAt256VectorAvx2 ( )
374
406
{
375
407
NoErrorIncompleteAt256Vector ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
376
408
}
377
409
410
+ [ Trait ( "Category" , "arm64" ) ]
411
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
412
+ public void NoErrorIncompleteAt256VectorArm64 ( )
413
+ {
414
+ NoErrorIncompleteAt256Vector ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
415
+ }
416
+
378
417
private void BadHeaderBits ( Utf8ValidationDelegate utf8ValidationDelegate )
379
418
{
380
419
foreach ( int outputLength in outputLengths )
@@ -419,11 +458,18 @@ public void BadHeaderBitsScalar()
419
458
420
459
[ Trait ( "Category" , "avx" ) ]
421
460
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
422
- public void BadHeaderBitsAVX ( )
461
+ public void BadHeaderBitsAvx2 ( )
423
462
{
424
463
BadHeaderBits ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
425
464
}
426
465
466
+ [ Trait ( "Category" , "arm64" ) ]
467
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
468
+ public void BadHeaderBitsArm64 ( )
469
+ {
470
+ BadHeaderBits ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
471
+ }
472
+
427
473
private void TooShortError ( Utf8ValidationDelegate utf8ValidationDelegate )
428
474
{
429
475
foreach ( int outputLength in outputLengths )
@@ -467,11 +513,18 @@ public void TooShortErrorScalar()
467
513
468
514
[ Trait ( "Category" , "avx" ) ]
469
515
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
470
- public void TooShortErrorAVX ( )
516
+ public void TooShortErrorAvx2 ( )
471
517
{
472
518
TooShortError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
473
519
}
474
520
521
+ [ Trait ( "Category" , "arm64" ) ]
522
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
523
+ public void TooShortErrorArm64 ( )
524
+ {
525
+ TooShortError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
526
+ }
527
+
475
528
private void TooLongError ( Utf8ValidationDelegate utf8ValidationDelegate )
476
529
{
477
530
@@ -515,11 +568,18 @@ public void TooLongErrorScalar()
515
568
516
569
[ Trait ( "Category" , "avx" ) ]
517
570
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
518
- public void TooLongErrorAVX ( )
571
+ public void TooLongErrorAvx2 ( )
519
572
{
520
573
TooLongError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
521
574
}
522
575
576
+ [ Trait ( "Category" , "arm64" ) ]
577
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
578
+ public void TooLongErrorArm64 ( )
579
+ {
580
+ TooLongError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
581
+ }
582
+
523
583
private void OverlongError ( Utf8ValidationDelegate utf8ValidationDelegate )
524
584
{
525
585
for ( int trial = 0 ; trial < NumTrials ; trial ++ )
@@ -570,11 +630,11 @@ public void OverlongErrorScalar()
570
630
OverlongError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteScalar ) ;
571
631
}
572
632
573
- [ Trait ( "Category" , "avx " ) ]
574
- [ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
575
- public void OverlongErrorAVX ( )
633
+ [ Trait ( "Category" , "arm64 " ) ]
634
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
635
+ public void OverlongErrorArm64 ( )
576
636
{
577
- OverlongError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
637
+ OverlongError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
578
638
}
579
639
580
640
@@ -632,12 +692,6 @@ public void TooShortErrorAtEndScalar()
632
692
TooShortErrorAtEnd ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteScalar ) ;
633
693
}
634
694
635
- [ Trait ( "Category" , "avx" ) ]
636
- [ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
637
- public void TooShortErrorAtEndAVX ( )
638
- {
639
- TooShortErrorAtEnd ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
640
- }
641
695
642
696
[ Trait ( "Category" , "avx" ) ]
643
697
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
@@ -646,6 +700,12 @@ public void TooShortErrorAtEndAvx2()
646
700
TooShortErrorAtEnd ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
647
701
}
648
702
703
+ [ Trait ( "Category" , "arm64" ) ]
704
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
705
+ public void TooShortErrorAtEndArm64 ( )
706
+ {
707
+ TooShortErrorAtEnd ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
708
+ }
649
709
650
710
//corresponds to condition 5.4.1 in the paper
651
711
private void Invalid0xf50xff ( Utf8ValidationDelegate utf8ValidationDelegate )
@@ -675,18 +735,20 @@ public void Invalid0xf50xffScalar()
675
735
Invalid0xf50xff ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteScalar ) ;
676
736
}
677
737
738
+
678
739
[ Trait ( "Category" , "avx" ) ]
679
740
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
680
- public void Invalid0xf50xffAVX ( )
741
+ public void Invalid0xf50xffAvx2 ( )
681
742
{
682
743
Invalid0xf50xff ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
683
744
}
684
745
685
- [ Trait ( "Category" , "avx" ) ]
686
- [ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
687
- public void Invalid0xf50xffAvx2 ( )
746
+
747
+ [ Trait ( "Category" , "arm64" ) ]
748
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
749
+ public void Invalid0xf50xffArm64 ( )
688
750
{
689
- Invalid0xf50xff ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
751
+ Invalid0xf50xff ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
690
752
}
691
753
692
754
// helper function for debugging: it prints a green byte every 32 bytes and a red byte at a given index
@@ -793,6 +855,13 @@ public void TooLargeErrorAvx()
793
855
}
794
856
795
857
858
+ [ Trait ( "Category" , "arm64" ) ]
859
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
860
+ public void TooLargeErrorArm64 ( )
861
+ {
862
+ TooLargeError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
863
+ }
864
+
796
865
private void AsciiPlusContinuationAtEndError ( Utf8ValidationDelegate utf8ValidationDelegate )
797
866
{
798
867
foreach ( int outputLength in outputLengths )
@@ -823,11 +892,11 @@ public void AsciiPlusContinuationAtEndErrorScalar()
823
892
AsciiPlusContinuationAtEndError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteScalar ) ;
824
893
}
825
894
826
- [ Trait ( "Category" , "avx " ) ]
827
- [ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
828
- public void AsciiPlusContinuationAtEndErrorAVX ( )
895
+ [ Trait ( "Category" , "arm64 " ) ]
896
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
897
+ public void AsciiPlusContinuationAtEndErrorArm64 ( )
829
898
{
830
- AsciiPlusContinuationAtEndError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
899
+ AsciiPlusContinuationAtEndError ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
831
900
}
832
901
833
902
[ Trait ( "Category" , "avx" ) ]
@@ -881,11 +950,17 @@ public void SurrogateErrorTestScalar()
881
950
882
951
[ Trait ( "Category" , "avx" ) ]
883
952
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
884
- public void SurrogateErrorTestAVX ( )
953
+ public void SurrogateErrorTestAvx2 ( )
885
954
{
886
955
SurrogateErrorTest ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
887
956
}
888
957
958
+ [ Trait ( "Category" , "arm64" ) ]
959
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
960
+ public void SurrogateErrorTestArm64 ( )
961
+ {
962
+ SurrogateErrorTest ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
963
+ }
889
964
890
965
private void BruteForceTest ( Utf8ValidationDelegate utf8ValidationDelegate )
891
966
{
@@ -943,12 +1018,19 @@ public void BruteForceTestScalar()
943
1018
944
1019
[ Trait ( "Category" , "avx" ) ]
945
1020
[ FactOnSystemRequirementAttribute ( TestSystemRequirements . X64Avx2 ) ]
946
- public void BruteForceTestAVX ( )
1021
+ public void BruteForceTestAvx2 ( )
947
1022
{
948
1023
BruteForceTest ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteAvx2 ) ;
949
1024
}
950
1025
951
1026
1027
+ [ Trait ( "Category" , "arm64" ) ]
1028
+ [ FactOnSystemRequirementAttribute ( TestSystemRequirements . Arm64 ) ]
1029
+ public void BruteForceTestArm64 ( )
1030
+ {
1031
+ BruteForceTest ( SimdUnicode . UTF8 . GetPointerToFirstInvalidByteArm64 ) ;
1032
+ }
1033
+
952
1034
// credit: based on code from Google Fuchsia (Apache Licensed)
953
1035
public static bool ValidateUtf8Fuschia ( byte [ ] data )
954
1036
{
0 commit comments