[webkit-changes] [WebKit/WebKit] 69748f: [JSC] Add Imm64 concept to ARM64 Air
Yusuke Suzuki
noreply at github.com
Thu Jun 8 20:04:55 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 69748fe9d91871e2d5dca2b32348864df28d882e
https://github.com/WebKit/WebKit/commit/69748fe9d91871e2d5dca2b32348864df28d882e
Author: Yusuke Suzuki <ysuzuki at apple.com>
Date: 2023-06-08 (Thu, 08 Jun 2023)
Changed paths:
M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
M Source/JavaScriptCore/b3/B3LowerToAir.cpp
M Source/JavaScriptCore/b3/air/AirArg.cpp
M Source/JavaScriptCore/b3/air/AirArg.h
M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
M Source/JavaScriptCore/b3/air/opcode_generator.rb
M Source/WTF/wtf/StdLibExtras.h
Log Message:
-----------
[JSC] Add Imm64 concept to ARM64 Air
https://bugs.webkit.org/show_bug.cgi?id=257559
rdar://110076490
Reviewed by Mark Lam.
ARM64 can represent wider range of imm in instruction if the instruction is 64bit-wide (not 32bit instruction).
To leverage this, we introduce Imm64 concept to Air. This Imm64 can be seen only in 64bit-wide instructions (e.g. Add64),
and it can accept wider range of imm.
1. Add toTwosComplement function to safely negate int32_t / int64_t without considering about overflow UB effect.
2. Add Imm64 concept.
3. Add some missing Imm handling (compare64 etc.) in Air for ARM64
* Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::add32):
(JSC::MacroAssemblerARM64::add64):
(JSC::MacroAssemblerARM64::sub32):
(JSC::MacroAssemblerARM64::sub64):
(JSC::MacroAssemblerARM64::moveConditionally32):
(JSC::MacroAssemblerARM64::moveConditionally64):
(JSC::MacroAssemblerARM64::moveDoubleConditionally32):
(JSC::MacroAssemblerARM64::moveDoubleConditionally64):
(JSC::MacroAssemblerARM64::branch32):
(JSC::MacroAssemblerARM64::branch64):
(JSC::MacroAssemblerARM64::branchAdd32):
(JSC::MacroAssemblerARM64::branchAdd64):
(JSC::MacroAssemblerARM64::branchSub32):
(JSC::MacroAssemblerARM64::branchSub64):
(JSC::MacroAssemblerARM64::compare32):
(JSC::MacroAssemblerARM64::compare64):
(JSC::MacroAssemblerARM64::tryFoldBaseAndOffsetPart):
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/air/AirArg.cpp:
(JSC::B3::Air::Arg::jsHash const):
(JSC::B3::Air::Arg::dump const):
(WTF::printInternal):
* Source/JavaScriptCore/b3/air/AirArg.h:
(JSC::B3::Air::Arg::imm64):
(JSC::B3::Air::Arg::isImm64 const):
(JSC::B3::Air::Arg::isSomeImm const):
(JSC::B3::Air::Arg::isGP const):
(JSC::B3::Air::Arg::isFP const):
(JSC::B3::Air::Arg::hasBank const):
(JSC::B3::Air::Arg::isValidImmForm):
(JSC::B3::Air::Arg::isValidImm64Form):
(JSC::B3::Air::Arg::isValidForm const):
(JSC::B3::Air::Arg::asTrustedImm64 const):
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
* Source/JavaScriptCore/b3/air/opcode_generator.rb:
* Source/WTF/wtf/StdLibExtras.h:
(WTF::toTwosComplement):
Canonical link: https://commits.webkit.org/265006@main
More information about the webkit-changes
mailing list