File tree Expand file tree Collapse file tree 3 files changed +112
-79
lines changed Expand file tree Collapse file tree 3 files changed +112
-79
lines changed Original file line number Diff line number Diff line change 3700
3700
(local $6 i32 )
3701
3701
(local $7 i32 )
3702
3702
(local $8 i32 )
3703
- (local $9 v128 )
3703
+ (local $9 i32 )
3704
3704
(local $10 v128 )
3705
3705
(local $11 v128 )
3706
3706
(local $12 v128 )
3707
+ (local $13 v128 )
3708
+ (local $14 v128 )
3709
+ (local $15 v128 )
3707
3710
(if
3708
3711
(i32.eqz
3709
3712
(local.tee $2
3718
3721
)
3719
3722
)
3720
3723
)
3721
- (local.set $5
3724
+ (local.set $3
3722
3725
(i32.extend8_s
3723
3726
(local.get $2 )
3724
3727
)
3738
3741
)
3739
3742
)
3740
3743
)
3741
- (local.set $4
3744
+ (local.set $5
3742
3745
(local.get $6 )
3743
3746
)
3744
3747
(loop $label
3745
3748
(if
3746
3749
(i32.ne
3747
- (local.tee $3
3750
+ (local.tee $4
3748
3751
(i32.load8_u
3749
3752
(i32.add
3750
3753
(local.get $1 )
3751
- (local.get $4 )
3754
+ (local.get $5 )
3752
3755
)
3753
3756
)
3754
3757
)
3755
3758
(local.get $2 )
3756
3759
)
3757
3760
(then
3758
3761
(local.set $2
3759
- (local.get $3 )
3762
+ (local.get $4 )
3760
3763
)
3761
3764
(br $block )
3762
3765
)
3763
3766
)
3764
3767
(br_if $label
3765
- (local.tee $4
3768
+ (local.tee $5
3766
3769
(i32.sub
3767
- (local.get $4 )
3770
+ (local.get $5 )
3768
3771
(i32.const 1 )
3769
3772
)
3770
3773
)
3778
3781
)
3779
3782
)
3780
3783
)
3781
- (local.set $4
3784
+ (local.set $5
3782
3785
(local.get $6 )
3783
3786
)
3784
3787
)
3785
- (local.set $3
3788
+ (local.set $4
3786
3789
(select
3787
3790
(i32.or
3788
- (local.get $5 )
3791
+ (local.get $3 )
3789
3792
(i32.const 32 )
3790
3793
)
3791
- (local.get $5 )
3794
+ (local.get $3 )
3792
3795
(i32.lt_u
3793
3796
(i32.sub
3794
- (local.get $5 )
3797
+ (local.get $3 )
3795
3798
(i32.const 65 )
3796
3799
)
3797
3800
(i32.const 26 )
3798
3801
)
3799
3802
)
3800
3803
)
3801
- (local.set $2
3804
+ (local.set $3
3805
+ (select
3806
+ (i32.and
3807
+ (local.get $3 )
3808
+ (i32.const 95 )
3809
+ )
3810
+ (local.get $3 )
3811
+ (i32.lt_u
3812
+ (i32.sub
3813
+ (local.get $3 )
3814
+ (i32.const 97 )
3815
+ )
3816
+ (i32.const 26 )
3817
+ )
3818
+ )
3819
+ )
3820
+ (local.set $8
3802
3821
(select
3803
3822
(i32.or
3804
3823
(local.tee $2
3818
3837
)
3819
3838
)
3820
3839
)
3840
+ (local.set $2
3841
+ (select
3842
+ (i32.and
3843
+ (local.get $2 )
3844
+ (i32.const 95 )
3845
+ )
3846
+ (local.get $2 )
3847
+ (i32.lt_u
3848
+ (i32.sub
3849
+ (local.get $2 )
3850
+ (i32.const 97 )
3851
+ )
3852
+ (i32.const 26 )
3853
+ )
3854
+ )
3855
+ )
3821
3856
(block $block3
3822
3857
(block $block4
3823
3858
(block $block1
3824
3859
(br_if $block1
3825
3860
(i32.lt_u
3826
- (local.tee $5
3861
+ (local.tee $9
3827
3862
(i32.sub
3828
3863
(i32.sub
3829
3864
(i32.shl
3830
3865
(memory.size )
3831
3866
(i32.const 16 )
3832
3867
)
3833
- (local.get $4 )
3868
+ (local.get $5 )
3834
3869
)
3835
3870
(i32.const 16 )
3836
3871
)
3837
3872
)
3838
3873
(local.get $0 )
3839
3874
)
3840
3875
)
3841
- (local.set $10
3876
+ (local.set $11
3877
+ (i8x16.splat
3878
+ (local.get $4 )
3879
+ )
3880
+ )
3881
+ (local.set $12
3842
3882
(i8x16.splat
3843
3883
(local.get $3 )
3844
3884
)
3845
3885
)
3846
- (local.set $11
3886
+ (local.set $13
3887
+ (i8x16.splat
3888
+ (local.get $8 )
3889
+ )
3890
+ )
3891
+ (local.set $14
3847
3892
(i8x16.splat
3848
3893
(local.get $2 )
3849
3894
)
3850
3895
)
3851
- (local.set $8
3896
+ (local.set $3
3852
3897
(i32.add
3853
3898
(local.get $1 )
3854
3899
(i32.const 1 )
3857
3902
(loop $label2
3858
3903
(local.set $2
3859
3904
(i8x16.all_true
3860
- (local.tee $9
3861
- (v128.or
3862
- (v128.bitselect
3863
- (v128.const i32x4 0x20202020 0x20202020 0x20202020 0x20202020 )
3864
- (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 )
3865
- (i8x16.gt_s
3866
- (i8x16.add
3867
- (local.tee $9
3868
- (v128.load align = 1
3869
- (local.get $0 )
3870
- )
3871
- )
3872
- (v128.const i32x4 0x25252525 0x25252525 0x25252525 0x25252525 )
3873
- )
3874
- (v128.const i32x4 0x65656565 0x65656565 0x65656565 0x65656565 )
3875
- )
3876
- )
3877
- (local.get $9 )
3905
+ (local.tee $10
3906
+ (v128.load align = 1
3907
+ (local.get $0 )
3878
3908
)
3879
3909
)
3880
3910
)
3881
3911
)
3882
3912
(block $block2
3883
3913
(if
3884
3914
(v128.any_true
3885
- (local.tee $9
3915
+ (local.tee $10
3886
3916
(v128.and
3887
- (i8x16.eq
3888
- (local.get $11 )
3889
- (v128.or
3890
- (v128.bitselect
3891
- (v128.const i32x4 0x20202020 0x20202020 0x20202020 0x20202020 )
3892
- (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000 )
3893
- (i8x16.gt_s
3894
- (i8x16.add
3895
- (local.tee $12
3896
- (v128.load align = 1
3897
- (i32.add
3898
- (local.get $0 )
3899
- (local.get $4 )
3900
- )
3901
- )
3902
- )
3903
- (v128.const i32x4 0x25252525 0x25252525 0x25252525 0x25252525 )
3917
+ (v128.or
3918
+ (i8x16.eq
3919
+ (local.get $13 )
3920
+ (local.tee $15
3921
+ (v128.load align = 1
3922
+ (i32.add
3923
+ (local.get $0 )
3924
+ (local.get $5 )
3904
3925
)
3905
- (v128.const i32x4 0x65656565 0x65656565 0x65656565 0x65656565 )
3906
3926
)
3907
3927
)
3908
- (local.get $12 )
3928
+ )
3929
+ (i8x16.eq
3930
+ (local.get $14 )
3931
+ (local.get $15 )
3909
3932
)
3910
3933
)
3911
- (i8x16.eq
3912
- (local.get $10 )
3913
- (local.get $9 )
3934
+ (v128.or
3935
+ (i8x16.eq
3936
+ (local.get $11 )
3937
+ (local.get $10 )
3938
+ )
3939
+ (i8x16.eq
3940
+ (local.get $12 )
3941
+ (local.get $10 )
3942
+ )
3914
3943
)
3915
3944
)
3916
3945
)
3925
3954
(i32.eqz
3926
3955
(local.tee $2
3927
3956
(i8x16.bitmask
3928
- (local.get $9 )
3957
+ (local.get $10 )
3929
3958
)
3930
3959
)
3931
3960
)
3935
3964
(i32.eqz
3936
3965
(call $strncasecmp
3937
3966
(i32.add
3938
- (local.tee $3
3967
+ (local.tee $4
3939
3968
(i32.add
3940
3969
(local.get $0 )
3941
3970
(i32.ctz
3945
3974
)
3946
3975
(i32.const 1 )
3947
3976
)
3948
- (local.get $8 )
3977
+ (local.get $3 )
3949
3978
(local.get $6 )
3950
3979
)
3951
3980
)
3979
4008
(i32.const 16 )
3980
4009
)
3981
4010
)
3982
- (local.get $5 )
4011
+ (local.get $9 )
3983
4012
)
3984
4013
)
3985
4014
)
3986
4015
)
3987
- (local.set $3
4016
+ (local.set $4
3988
4017
(local.get $0 )
3989
4018
)
3990
4019
(local.set $2
3997
4026
(i32.load8_s
3998
4027
(i32.add
3999
4028
(local.get $2 )
4000
- (local.get $3 )
4029
+ (local.get $4 )
4001
4030
)
4002
4031
)
4003
4032
)
4007
4036
(i32.eq
4008
4037
(select
4009
4038
(i32.or
4010
- (local.tee $4
4039
+ (local.tee $5
4011
4040
(i32.load8_s
4012
4041
(i32.add
4013
4042
(local.get $1 )
4017
4046
)
4018
4047
(i32.const 32 )
4019
4048
)
4020
- (local.get $4 )
4049
+ (local.get $5 )
4021
4050
(i32.lt_u
4022
4051
(i32.sub
4023
- (local.get $4 )
4052
+ (local.get $5 )
4024
4053
(i32.const 65 )
4025
4054
)
4026
4055
(i32.const 26 )
4055
4084
)
4056
4085
)
4057
4086
(else
4058
- (local.set $3
4087
+ (local.set $4
4059
4088
(i32.add
4060
- (local.get $3 )
4089
+ (local.get $4 )
4061
4090
(i32.const 1 )
4062
4091
)
4063
4092
)
4070
4099
)
4071
4100
(unreachable )
4072
4101
)
4073
- (local.set $3
4102
+ (local.set $4
4074
4103
(i32.const 0 )
4075
4104
)
4076
4105
)
4077
- (local.get $3 )
4106
+ (local.get $4 )
4078
4107
)
4079
4108
(func $memccpy (param $0 i32 ) (param $1 i32 ) (param $2 i32 ) (param $3 i32 ) (result i32 )
4080
4109
(memory.copy
Original file line number Diff line number Diff line change @@ -616,18 +616,22 @@ char *strcasestr(const char *haystk, const char *needle) {
616
616
while (i > 0 && needle [0 ] == needle [i ]) i -- ;
617
617
if (i == 0 ) i = sn - 1 ;
618
618
619
- const v128_t fst = wasm_i8x16_splat (tolower (needle [0 ]));
620
- const v128_t lst = wasm_i8x16_splat (tolower (needle [i ]));
619
+ const v128_t fstl = wasm_i8x16_splat (tolower (needle [0 ]));
620
+ const v128_t fstu = wasm_i8x16_splat (toupper (needle [0 ]));
621
+ const v128_t lstl = wasm_i8x16_splat (tolower (needle [i ]));
622
+ const v128_t lstu = wasm_i8x16_splat (toupper (needle [i ]));
621
623
622
624
// The last haystk offset for which loading blk_lst is safe.
623
625
const char * H =
624
626
(char * )(__builtin_wasm_memory_size (0 ) * PAGESIZE - i - sizeof (v128_t ));
625
627
626
628
while (haystk <= H ) {
627
- const v128_t blk_fst = __tolower8x16 (wasm_v128_load ((v128_t * )(haystk )));
628
- const v128_t blk_lst = __tolower8x16 (wasm_v128_load ((v128_t * )(haystk + i )));
629
- const v128_t eq_fst = wasm_i8x16_eq (fst , blk_fst );
630
- const v128_t eq_lst = wasm_i8x16_eq (lst , blk_lst );
629
+ const v128_t blk_fst = wasm_v128_load ((v128_t * )(haystk ));
630
+ const v128_t blk_lst = wasm_v128_load ((v128_t * )(haystk + i ));
631
+ const v128_t eq_fst =
632
+ wasm_i8x16_eq (fstl , blk_fst ) | wasm_i8x16_eq (fstu , blk_fst );
633
+ const v128_t eq_lst =
634
+ wasm_i8x16_eq (lstl , blk_lst ) | wasm_i8x16_eq (lstu , blk_lst );
631
635
632
636
const v128_t cmp = eq_fst & eq_lst ;
633
637
if (wasm_v128_any_true (cmp )) {
You can’t perform that action at this time.
0 commit comments