WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
204442
[JSC] Extend MacroAssemblerARM64::load/store for datasize = 16
https://bugs.webkit.org/show_bug.cgi?id=204442
Summary
[JSC] Extend MacroAssemblerARM64::load/store for datasize = 16
Yusuke Suzuki
Reported
2019-11-20 20:40:03 PST
[JSC] Extend MacroAssemblerARM64::load/store for datasize = 16
Attachments
Patch
(5.98 KB, patch)
2019-11-20 20:40 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(5.94 KB, patch)
2019-11-20 20:43 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(8.11 KB, patch)
2019-11-20 21:04 PST
,
Yusuke Suzuki
mark.lam
: review+
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Yusuke Suzuki
Comment 1
2019-11-20 20:40:27 PST
Created
attachment 384026
[details]
Patch WIP
Yusuke Suzuki
Comment 2
2019-11-20 20:40:49 PST
<
rdar://problem/57366761
>
Yusuke Suzuki
Comment 3
2019-11-20 20:43:49 PST
Created
attachment 384027
[details]
Patch WIP
Yusuke Suzuki
Comment 4
2019-11-20 21:04:43 PST
Created
attachment 384029
[details]
Patch
Mark Lam
Comment 5
2019-11-20 21:19:10 PST
Comment on
attachment 384029
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=384029&action=review
> Source/JavaScriptCore/ChangeLog:9 > + Our `void load16(const void* address, RegisterID dest)` and `void store16(RegisterID src, const void* address)` do not aware of
/do not aware/are not aware/.
> Source/JavaScriptCore/ChangeLog:10 > + the condition that passed register is memoryTempRegister, while `MacroAssemblerARM64::{load,store}` handles it correctly, e.g.
/is memoryTempRegister/can be memoryTempRegister/
> Source/JavaScriptCore/ChangeLog:24 > + to support 16 so that `or16` implementation looks like almost the same to `or32` etc.
/looks like almost the same to/is similar to/
> Source/JavaScriptCore/assembler/testmasm.cpp:1137 > + // Just compiling test. > + compile([&] (CCallHelpers& jit) { > + emitFunctionPrologue(jit); > + jit.or16(CCallHelpers::TrustedImm32(42), CCallHelpers::AbsoluteAddress(nullptr)); > + emitFunctionEpilogue(jit); > + jit.ret(); > + });
How is this test case different than the one immediately above it?
Yusuke Suzuki
Comment 6
2019-11-20 21:20:02 PST
Comment on
attachment 384029
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=384029&action=review
>> Source/JavaScriptCore/assembler/testmasm.cpp:1137 >> + }); > > How is this test case different than the one immediately above it?
nullptr is always invalid logical imm in ARM64, so this takes the path this patch is fixing.
Mark Lam
Comment 7
2019-11-20 21:57:13 PST
Comment on
attachment 384029
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=384029&action=review
r=me with fixes.
>>> Source/JavaScriptCore/assembler/testmasm.cpp:1137 >>> + }); >> >> How is this test case different than the one immediately above it? > > nullptr is always invalid logical imm in ARM64, so this takes the path this patch is fixing.
Yusuke told me offline that his intent is to take the !logicalImm.isValid() case in or16. For that, we need to pass TrustedImm(0), not AbsoluteAddress(nullptr).
Yusuke Suzuki
Comment 8
2019-11-20 21:57:47 PST
Comment on
attachment 384029
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=384029&action=review
Thanks!
>> Source/JavaScriptCore/ChangeLog:9 >> + Our `void load16(const void* address, RegisterID dest)` and `void store16(RegisterID src, const void* address)` do not aware of > > /do not aware/are not aware/.
Fixed.
>> Source/JavaScriptCore/ChangeLog:10 >> + the condition that passed register is memoryTempRegister, while `MacroAssemblerARM64::{load,store}` handles it correctly, e.g. > > /is memoryTempRegister/can be memoryTempRegister/
Fixed.
>> Source/JavaScriptCore/ChangeLog:24 >> + to support 16 so that `or16` implementation looks like almost the same to `or32` etc. > > /looks like almost the same to/is similar to/
Fixed.
>>>> Source/JavaScriptCore/assembler/testmasm.cpp:1137 >>>> + }); >>> >>> How is this test case different than the one immediately above it? >> >> nullptr is always invalid logical imm in ARM64, so this takes the path this patch is fixing. > > Yusuke told me offline that his intent is to take the !logicalImm.isValid() case in or16. For that, we need to pass TrustedImm(0), not AbsoluteAddress(nullptr).
Nice, fixed.
Yusuke Suzuki
Comment 9
2019-11-20 22:02:57 PST
Committed
r252728
: <
https://trac.webkit.org/changeset/252728
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug