Re-write the IndexOf code without the use of the pcmpestri instruction, only 
using AVX2 instructions.  This change accelerates String.IndexOf on average 
1.3x for AVX2.  The benchmark numbers:


Benchmark                                                      Score            
Latest          
StringIndexOf.advancedWithMediumSub   343.573           317.934         
0.925375393x
StringIndexOf.advancedWithShortSub1       1039.081              1053.96         
1.014319384x
StringIndexOf.advancedWithShortSub2           55.828            110.541         
1.980027943x
StringIndexOf.constantPattern                   9.361           11.906          
1.271872663x
StringIndexOf.searchCharLongSuccess             4.216           4.218           
1.000474383x
StringIndexOf.searchCharMediumSuccess   3.133           3.216           
1.02649218x
StringIndexOf.searchCharShortSuccess    3.76                    3.761           
1.000265957x
StringIndexOf.success                                   9.186           9.713   
        1.057369911x
StringIndexOf.successBig                              14.341            46.343  
        3.231504079x
StringIndexOfChar.latin1_AVX2_String      6220.918              12154.52        
        1.953814533x
StringIndexOfChar.latin1_AVX2_char        5503.556              5540.044        
        1.006629895x
StringIndexOfChar.latin1_SSE4_String      6978.854              6818.689        
        0.977049957x
StringIndexOfChar.latin1_SSE4_char        5657.499              5474.624        
        0.967675646x
StringIndexOfChar.latin1_Short_String     7132.541              6863.359        
        0.962260014x
StringIndexOfChar.latin1_Short_char     16013.389             16162.437         
1.009307711x
StringIndexOfChar.latin1_mixed_String     7386.123            14771.622         
1.999915517x
StringIndexOfChar.latin1_mixed_char       9901.671              9782.245        
        0.987938803

-------------

Commit messages:
 - Fix whitespace
 - Merge branch 'openjdk:master' into indexof
 - Comments; added exhaustive-ish test
 - Subtracting 0x10 twice.
 - Stomped on r13 in switch branch calculation
 - Windows register preservation fix
 - Fix merge problem
 - Merge branch 'master' into indexof
 - Working version
 - Protecting against page faults
 - ... and 6 more: https://git.openjdk.org/jdk/compare/ce4e6e2b...60d762b9

Changes: https://git.openjdk.org/jdk/pull/16753/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=16753&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8320448
  Stats: 3062 lines in 14 files changed: 2928 ins; 11 del; 123 mod
  Patch: https://git.openjdk.org/jdk/pull/16753.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/16753/head:pull/16753

PR: https://git.openjdk.org/jdk/pull/16753

Reply via email to