[webkit-changes] [WebKit/WebKit] 919ed0: [JSC] Add SensitiveToNaN flag to B3 Kind

Yusuke Suzuki noreply at github.com
Wed Jan 4 16:07:45 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 919ed00f75d8752cddfdacb59d286f1fc168a307
      https://github.com/WebKit/WebKit/commit/919ed00f75d8752cddfdacb59d286f1fc168a307
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-01-04 (Wed, 04 Jan 2023)

  Changed paths:
    M JSTests/wasm/spec-tests/float_exprs.wast.js
    M Source/JavaScriptCore/b3/B3Kind.cpp
    M Source/JavaScriptCore/b3/B3Kind.h
    M Source/JavaScriptCore/b3/B3ReduceStrength.cpp
    M Source/JavaScriptCore/b3/B3Value.h
    M Source/JavaScriptCore/wasm/generateWasmB3IRGeneratorInlinesHeader.py

  Log Message:
  -----------
  [JSC] Add SensitiveToNaN flag to B3 Kind
https://bugs.webkit.org/show_bug.cgi?id=249991
rdar://103807651

Reviewed by Saam Barati.

This patch adds SensitiveToNaN flag to B3 Kind. This means "The B3 Value is sensitive to NaN bit pattern",
and it supresses some of strength reduction which can be observable as a NaN bit pattern difference.
>From JS, this flag is always false since JS does not care about NaN bit pattern. On the other hand, Wasm
cares. In B3 Wasm IR generator, we put this flag to Wasm generated B3 Values.
This makes float spec-tests pass by 100%.

* JSTests/wasm/spec-tests/float_exprs.wast.js:
* Source/JavaScriptCore/b3/B3Kind.cpp:
(JSC::B3::Kind::dump const):
* Source/JavaScriptCore/b3/B3Kind.h:
(JSC::B3::Kind::Kind):
(JSC::B3::Kind::hasSensitiveToNaN):
(JSC::B3::Kind::hasSensitiveToNaN const):
(JSC::B3::Kind::sensitiveToNaN const):
(JSC::B3::Kind::setSensitiveToNaN):
(JSC::B3::Kind::operator== const):
(JSC::B3::Kind::hash const):
(JSC::B3::sensitiveToNaN):
* Source/JavaScriptCore/b3/B3ReduceStrength.cpp:
* Source/JavaScriptCore/b3/B3Value.h:
* Source/JavaScriptCore/wasm/generateWasmB3IRGeneratorInlinesHeader.py:
(CodeGenerator.generateB3OpCode):
(CodeGenerator):
(CodeGenerator.generateConstCode):
(CodeGenerator.generateOpcode):
(CodeGenerator.makeResult):
(CodeGenerator.generate):
(temp):
(generateB3OpCode): Deleted.
(generateConstCode): Deleted.

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




More information about the webkit-changes mailing list