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

Reply via email to