Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e4b1106bc45645cdf986bb2b174622b82c8b03bd
      
https://github.com/WebKit/WebKit/commit/e4b1106bc45645cdf986bb2b174622b82c8b03bd
  Author: Angelos Oikonomopoulos <[email protected]>
  Date:   2024-07-09 (Tue, 09 Jul 2024)

  Changed paths:
    M Source/JavaScriptCore/Sources.txt
    M Source/JavaScriptCore/b3/B3Generate.cpp
    A Source/JavaScriptCore/b3/B3LowerInt64.cpp
    A Source/JavaScriptCore/b3/B3LowerInt64.h
    M Source/JavaScriptCore/b3/B3LowerToAir32_64.cpp
    M Source/JavaScriptCore/b3/B3Opcode.cpp
    M Source/JavaScriptCore/b3/B3Opcode.h
    M Source/JavaScriptCore/b3/B3StackmapSpecial.cpp
    M Source/JavaScriptCore/b3/B3Validate.cpp
    M Source/JavaScriptCore/b3/B3Value.cpp
    M Source/JavaScriptCore/b3/B3Value.h
    M Source/JavaScriptCore/b3/B3ValueInlines.h
    M Source/JavaScriptCore/b3/B3ValueRep.h
    M Source/JavaScriptCore/b3/air/AirOpcode.opcodes

  Log Message:
  -----------
  Add a LowerInt64 B3 pass
https://bugs.webkit.org/show_bug.cgi?id=275988

Reviewed by Yusuke Suzuki and Justin Michaud.

Base infrastructure and partial implementation of a lowering pass for
Int64 values on 32-bits.

Crucially, this doesn't lower Patchpoints/CCalls and Add/Sub on Int64
values.  The former would, at the moment, complicate the generic paths
that simultaneously iterate over B3 Values and Air args. The latter
(Add/Sub) is lowered to the pre-existing Add64/Sub64 Air forms, which
avoids the need to track the carry bit.

Since we need to interface with the above values that use Int64s, this
patch also introduces two new B3 opcodes (that are only used on
32-bits):

- TruncHigh: extracts the high Int32 of an Int64 value.
- Stitch: creates an Int64 out of two Int32 values.

They need to be defined on 64-bits too because B3ValueInlines.h
references opcodes in a macro definition.

This removes the previously added lowering code to
B3LowerToAir32_64.cpp. It implements enough ops in B3LowerInt64.cpp to
keep i64-call.js and cc-int-to-int.js working with OMG on ARMv7.

It also fixes a bug in the Air forms for Add64/Sub64.

* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/b3/B3Generate.cpp:
(JSC::B3::generateToAir):
* Source/JavaScriptCore/b3/B3LowerInt64.cpp: Added.
(JSC::B3::lowerInt64):
* Source/JavaScriptCore/b3/B3LowerInt64.h: Added.
* Source/JavaScriptCore/b3/B3LowerToAir32_64.cpp:
* Source/JavaScriptCore/b3/B3Opcode.cpp:
(WTF::printInternal):
* Source/JavaScriptCore/b3/B3Opcode.h:
* Source/JavaScriptCore/b3/B3StackmapSpecial.cpp:
(JSC::B3::StackmapSpecial::isArgValidForRep):
* Source/JavaScriptCore/b3/B3Validate.cpp:
* Source/JavaScriptCore/b3/B3Value.cpp:
(JSC::B3::Value::effects const):
(JSC::B3::Value::key const):
(JSC::B3::Value::typeFor):
* Source/JavaScriptCore/b3/B3Value.h:
* Source/JavaScriptCore/b3/B3ValueInlines.h:
* Source/JavaScriptCore/b3/B3ValueRep.h:
(JSC::B3::ValueRep::ValueRep):
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:

Canonical link: https://commits.webkit.org/280764@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to