Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2cba369d0b95a5e3a07452103efbb20d16ca3de0 https://github.com/WebKit/WebKit/commit/2cba369d0b95a5e3a07452103efbb20d16ca3de0 Author: Justin Michaud <jus...@justinmichaud.com> Date: 2024-11-27 (Wed, 27 Nov 2024)
Changed paths: M Source/JavaScriptCore/b3/air/AirCode.h M Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp M Source/JavaScriptCore/b3/air/testair.cpp Log Message: ----------- Air shuffles should not use fringe destination as scratch https://bugs.webkit.org/show_bug.cgi?id=283641 Reviewed by Yusuke Suzuki. When we have a shuffle in air, we have a series of shifts and rotates. Rotates have extra bits not part of the loop, called the fringe. A series of shifts permits the destination of the first shift to be used as scratch before it gets its final value. This is not true for a fringe, even though a fringe is basically a shift. This is only because the lifetime of the scratch register extends into the rotate that follows it. Basically, the mutable state in this code gets very confused because of the constantly changing order of instructions emitted. This bug was discovered with ARMv7 wasm tail calls, and the test case will be included in that patch. * Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp: (JSC::B3::Air::emitShuffle): Canonical link: https://commits.webkit.org/287139@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes