diff --git a/tools/simdstring/generate.go b/tools/simdstring/generate.go index 5e9657bbc..a0b7872fc 100644 --- a/tools/simdstring/generate.go +++ b/tools/simdstring/generate.go @@ -1169,8 +1169,24 @@ func (s *State) test_set1_epi8() { return } vec := f.Vec() + r := f.LoadParam("b") + q := f.Reg() + f.SetRegisterTo(q, int(' ')) + f.JumpIfEqual(r, q, "space") + f.SetRegisterTo(q, 11) + f.JumpIfEqual(r, q, "eleven") f.Set1Epi8("b", vec) f.store_vec_in_param(vec, `ans`) + f.Return() + f.Label("space") + f.Set1Epi8(int(' '), vec) + f.store_vec_in_param(vec, `ans`) + f.Return() + f.Label("eleven") + f.Set1Epi8(-1, vec) + f.store_vec_in_param(vec, `ans`) + f.Return() + } func (s *State) test_cmpeq_epi8() { diff --git a/tools/simdstring/intrinsics_test.go b/tools/simdstring/intrinsics_test.go index c88fff6e3..9e50c31ba 100644 --- a/tools/simdstring/intrinsics_test.go +++ b/tools/simdstring/intrinsics_test.go @@ -236,9 +236,10 @@ func TestIntrinsics(t *testing.T) { ae(sz, `load_test`, a, test_load(a)) }) tests = append(tests, func(sz int) { - for _, b := range []byte{1, 0b110111, 0xff, 0} { + for _, b := range []byte{1, 0b110111, 0xff, 0, ' '} { ae(sz, `set1_epi8_test`, broadcast_byte(b, sz), test_set1_epi8(b, sz)) } + ae(sz, `set1_epi8_test`, broadcast_byte(0xff, sz), test_set1_epi8(11, sz)) }) tests = append(tests, func(sz int) { a := ordered_bytes(sz)