Winch: implement v128
neg
and shifts for x64
#10170
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
implements the following instructions for winch x64 backend:
i8x16.neg
i16x8.neg
i32x4.neg
i64x2.neg
i8x16.shl
i16x8.shl
i32x4.shl
i64x2.shl
i8x16.shr_s
i16x8.shr_s
i32x4.shr_s
i64x2.shr_s
i8x16.shr_u
i16x8.shr_u
i32x4.shr_u
i64x2.shr_u
One thing that we may improve is the handling of constants: My initial implementation introduced
WellKnown
addresses, because this is how cranelift implemented shifts. I revised that later on, to keep things simple, and used the constant infrastructure already present in winch. The use of well known constant addresses may be more efficient, if we decided to use them. Happy to do that in a followup.#8093