Skip to content

Enable bare minimum of OMG on 32-bits#28284

Merged
webkit-commit-queue merged 1 commit intoWebKit:mainfrom
aoikonomopoulos:armv7-omg-minimal-v1
Jun 5, 2024
Merged

Enable bare minimum of OMG on 32-bits#28284
webkit-commit-queue merged 1 commit intoWebKit:mainfrom
aoikonomopoulos:armv7-omg-minimal-v1

Conversation

@aoikonomopoulos
Copy link
Copy Markdown
Contributor

@aoikonomopoulos aoikonomopoulos commented May 8, 2024

037cafb

Enable bare minimum of OMG on 32-bits
https://bugs.webkit.org/show_bug.cgi?id=273869

Reviewed by Justin Michaud.

Add a minimal set of changes to get two simple testcases to run.

The main changes are:

- Copy WasmOMGIRGenerator.cpp to WasmOMGIRGenerator32_64.cpp.

- Copy B3LowerToAir.cpp to B3LowerToAir32_64.cpp.

- Change B3LowerToAir32_64.cpp to map B3 Values to either 1 or 2 Tmps.

- Introduce B3::ValueRep::RegisterPair and Air::Arg::TmpPair. We need this to
  represent Int64 values for argument passing/return. This is mainly used for
  Patchpoints, as the alternative of lowering Int64 values to 2 Air args would
  significantly complicate the stackmap code.

- Teach WasmCallingConvention.h to return JSValueRegs with the tagGPR set to
  InvalidGPRReg for Int32 values. This means we need to pass the valueSize all
  the way through to the register assignment point.

- Add 32-bit-specific lowering code in B3LowerToAir.cpp. For regular
  operations on Int64 values, emit code that either uses a special Air form or
  (in cases where that's possible) use the existing 32-bit forms and combine
  the results.

- Implement OpcodeOrigin. For simplicity's sake, use a 32-bit word, even if that
  truncates the offset to 24 bits.

Supporting changes:

- Disable parts of WasmOMGIRGenerator32_64.cpp we're not ready to enable yet (not required by
  our testcases).
- Make some minimal 32-bit adjustments to WasmOMGIRGenerator32_64.cpp to get
  the testcases to run.

With these changes, cc-int-to-int.js and i64-call.js tier up to OMG (with
JSC_useOMGJIT=true) and complete successfully.

* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/b3/B3ConstrainedValue.h:
(JSC::B3::ConstrainedValue::ConstrainedValue):
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/B3LowerToAir32_64.cpp: Copied from Source/JavaScriptCore/b3/B3LowerToAir.cpp.
(JSC::B3::lowerToAir):
* Source/JavaScriptCore/b3/B3StackmapSpecial.cpp:
(JSC::B3::StackmapSpecial::forEachArgImpl):
(JSC::B3::StackmapSpecial::isArgValidForType):
(JSC::B3::StackmapSpecial::isArgValidForRep):
(JSC::B3::StackmapSpecial::repForArg):
* Source/JavaScriptCore/b3/B3Validate.cpp:
* Source/JavaScriptCore/b3/B3ValueRep.cpp:
(JSC::B3::ValueRep::addUsedRegistersTo const):
(JSC::B3::ValueRep::dump const):
(WTF::printInternal):
* Source/JavaScriptCore/b3/B3ValueRep.h:
(JSC::B3::ValueRep::ValueRep):
(JSC::B3::ValueRep::regPair):
(JSC::B3::ValueRep::isRegPair const):
(JSC::B3::ValueRep::regLo const):
(JSC::B3::ValueRep::regHi const):
(JSC::B3::ValueRep::isGPRPair const):
* 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::Arg):
(JSC::B3::Air::Arg::isTmpPair const):
(JSC::B3::Air::Arg::tmpHi const):
(JSC::B3::Air::Arg::tmpLo const):
(JSC::B3::Air::Arg::isGPTmpPair const):
(JSC::B3::Air::Arg::regHi const):
(JSC::B3::Air::Arg::regLo const):
(JSC::B3::Air::Arg::isGP const):
(JSC::B3::Air::Arg::isFP const):
(JSC::B3::Air::Arg::hasBank const):
(JSC::B3::Air::Arg::isValidForm const):
(JSC::B3::Air::Arg::forEachTmpFast):
(JSC::B3::Air::Arg::forEachTmp):
* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::checkWasmStackOverflow):
* Source/JavaScriptCore/jit/AssemblyHelpers.h:
* Source/JavaScriptCore/runtime/Options.cpp:
(JSC::Options::notifyOptionsChanged):
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJITImpl::BBQJIT::emitEntryTierUpCheck):
* Source/JavaScriptCore/wasm/WasmCallingConvention.h:
(JSC::Wasm::ArgumentLocation::ArgumentLocation):
(JSC::Wasm::WasmCallingConvention::marshallRegs const):
(JSC::Wasm::WasmCallingConvention::marshallLocationImpl const):
(JSC::Wasm::WasmCallingConvention::marshallLocation const):
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
* Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:
* Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp: Copied from Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp.
(JSC::Wasm::OMGIRGenerator::ControlData::ControlData):
(JSC::Wasm::OMGIRGenerator::ControlData::isIf):
(JSC::Wasm::OMGIRGenerator::ControlData::isTry):
(JSC::Wasm::OMGIRGenerator::ControlData::isAnyCatch):
(JSC::Wasm::OMGIRGenerator::ControlData::isTopLevel):
(JSC::Wasm::OMGIRGenerator::ControlData::isLoop):
(JSC::Wasm::OMGIRGenerator::ControlData::isBlock):
(JSC::Wasm::OMGIRGenerator::ControlData::isCatch):
(JSC::Wasm::OMGIRGenerator::ControlData::dump const):
(JSC::Wasm::OMGIRGenerator::ControlData::blockType const):
(JSC::Wasm::OMGIRGenerator::ControlData::signature const):
(JSC::Wasm::OMGIRGenerator::ControlData::hasNonVoidresult const):
(JSC::Wasm::OMGIRGenerator::ControlData::targetBlockForBranch):
(JSC::Wasm::OMGIRGenerator::ControlData::convertIfToBlock):
(JSC::Wasm::OMGIRGenerator::ControlData::convertTryToCatch):
(JSC::Wasm::OMGIRGenerator::ControlData::convertTryToCatchAll):
(JSC::Wasm::OMGIRGenerator::ControlData::branchTargetArity const):
(JSC::Wasm::OMGIRGenerator::ControlData::branchTargetType const):
(JSC::Wasm::OMGIRGenerator::ControlData::tryStart const):
(JSC::Wasm::OMGIRGenerator::ControlData::tryEnd const):
(JSC::Wasm::OMGIRGenerator::ControlData::tryDepth const):
(JSC::Wasm::OMGIRGenerator::ControlData::catchKind const):
(JSC::Wasm::OMGIRGenerator::ControlData::exception const):
(JSC::Wasm::OMGIRGenerator::ControlData::stackSize const):
(JSC::Wasm::OMGIRGenerator::emptyExpression):
(JSC::Wasm::OMGIRGenerator::fail const):
(JSC::Wasm::OMGIRGenerator::advanceCallSiteIndex):
(JSC::Wasm::OMGIRGenerator::callSiteIndex const):
(JSC::Wasm::OMGIRGenerator::usesSIMD):
(JSC::Wasm::OMGIRGenerator::notifyFunctionUsesSIMD):
(JSC::Wasm::OMGIRGenerator::addConstant):
(JSC::Wasm::OMGIRGenerator::addExtractLane):
(JSC::Wasm::OMGIRGenerator::addReplaceLane):
(JSC::Wasm::OMGIRGenerator::addSIMDI_V):
(JSC::Wasm::OMGIRGenerator::addSIMDV_V):
(JSC::Wasm::OMGIRGenerator::addSIMDBitwiseSelect):
(JSC::Wasm::OMGIRGenerator::addSIMDRelOp):
(JSC::Wasm::OMGIRGenerator::fixupOutOfBoundsIndicesForSwizzle):
(JSC::Wasm::OMGIRGenerator::addSIMDV_VV):
(JSC::Wasm::OMGIRGenerator::addSIMDRelaxedFMA):
(JSC::Wasm::OMGIRGenerator::addEndToUnreachable):
(JSC::Wasm::OMGIRGenerator::endTopLevel):
(JSC::Wasm::OMGIRGenerator::setParser):
(JSC::Wasm::OMGIRGenerator::willParseOpcode):
(JSC::Wasm::OMGIRGenerator::didParseOpcode):
(JSC::Wasm::OMGIRGenerator::didFinishParsingLocals):
(JSC::Wasm::OMGIRGenerator::didPopValueFromStack):
(JSC::Wasm::OMGIRGenerator::getTypeDefinition):
(JSC::Wasm::OMGIRGenerator::addStackMap):
(JSC::Wasm::OMGIRGenerator::takeStackmaps):
(JSC::Wasm::OMGIRGenerator::takeExceptionHandlers):
(JSC::Wasm::OMGIRGenerator::emitPrepareWasmOperation):
(JSC::Wasm::OMGIRGenerator::callWasmOperation):
(JSC::Wasm::OMGIRGenerator::outerLoopIndex const):
(JSC::Wasm::OMGIRGenerator::getPushVariable):
(JSC::Wasm::OMGIRGenerator::push):
(JSC::Wasm::OMGIRGenerator::get):
(JSC::Wasm::OMGIRGenerator::set):
(JSC::Wasm::OMGIRGenerator::useSignalingMemory const):
(JSC::Wasm::OMGIRGenerator::instanceValue):
(JSC::Wasm::OMGIRGenerator::baseMemoryValue):
(JSC::Wasm::OMGIRGenerator::boundsCheckingSizeValue):
(JSC::Wasm::OMGIRGenerator::fixupPointerPlusOffset):
(JSC::Wasm::OMGIRGenerator::restoreWasmContextInstance):
(JSC::Wasm::OMGIRGenerator::computeStackCheckSize):
(JSC::Wasm::OMGIRGenerator::OMGIRGenerator):
(JSC::Wasm::OMGIRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::OMGIRGenerator::reloadMemoryRegistersFromInstance):
(JSC::Wasm::OMGIRGenerator::emitExceptionCheck):
(JSC::Wasm::OMGIRGenerator::constant):
(JSC::Wasm::OMGIRGenerator::framePointer):
(JSC::Wasm::OMGIRGenerator::insertEntrySwitch):
(JSC::Wasm::OMGIRGenerator::insertConstants):
(JSC::Wasm::OMGIRGenerator::toB3ResultType):
(JSC::Wasm::OMGIRGenerator::addLocal):
(JSC::Wasm::OMGIRGenerator::addDrop):
(JSC::Wasm::OMGIRGenerator::addInlinedArguments):
(JSC::Wasm::OMGIRGenerator::addArguments):
(JSC::Wasm::OMGIRGenerator::addRefIsNull):
(JSC::Wasm::OMGIRGenerator::addTableGet):
(JSC::Wasm::OMGIRGenerator::addTableSet):
(JSC::Wasm::OMGIRGenerator::addRefFunc):
(JSC::Wasm::OMGIRGenerator::addRefAsNonNull):
(JSC::Wasm::OMGIRGenerator::addRefEq):
(JSC::Wasm::OMGIRGenerator::addTableInit):
(JSC::Wasm::OMGIRGenerator::addElemDrop):
(JSC::Wasm::OMGIRGenerator::addTableSize):
(JSC::Wasm::OMGIRGenerator::addTableGrow):
(JSC::Wasm::OMGIRGenerator::addTableFill):
(JSC::Wasm::OMGIRGenerator::addTableCopy):
(JSC::Wasm::OMGIRGenerator::getLocal):
(JSC::Wasm::OMGIRGenerator::addUnreachable):
(JSC::Wasm::OMGIRGenerator::addCrash):
(JSC::Wasm::OMGIRGenerator::emitIndirectCall):
(JSC::Wasm::OMGIRGenerator::addGrowMemory):
(JSC::Wasm::OMGIRGenerator::addCurrentMemory):
(JSC::Wasm::OMGIRGenerator::addMemoryFill):
(JSC::Wasm::OMGIRGenerator::addMemoryInit):
(JSC::Wasm::OMGIRGenerator::addMemoryCopy):
(JSC::Wasm::OMGIRGenerator::addDataDrop):
(JSC::Wasm::OMGIRGenerator::traceValue):
(JSC::Wasm::OMGIRGenerator::traceCF):
(JSC::Wasm::OMGIRGenerator::setLocal):
(JSC::Wasm::OMGIRGenerator::getGlobal):
(JSC::Wasm::OMGIRGenerator::setGlobal):
(JSC::Wasm::OMGIRGenerator::emitWriteBarrierForJSWrapper):
(JSC::Wasm::OMGIRGenerator::emitWriteBarrier):
(JSC::Wasm::OMGIRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::sizeOfLoadOp):
(JSC::Wasm::OMGIRGenerator::memoryKind):
(JSC::Wasm::OMGIRGenerator::emitLoadOp):
(JSC::Wasm::OMGIRGenerator::load):
(JSC::Wasm::sizeOfStoreOp):
(JSC::Wasm::OMGIRGenerator::emitStoreOp):
(JSC::Wasm::OMGIRGenerator::store):
(JSC::Wasm::accessWidth):
(JSC::Wasm::sizeOfAtomicOpMemoryAccess):
(JSC::Wasm::OMGIRGenerator::sanitizeAtomicResult):
(JSC::Wasm::OMGIRGenerator::fixupPointerPlusOffsetForAtomicOps):
(JSC::Wasm::OMGIRGenerator::emitAtomicLoadOp):
(JSC::Wasm::OMGIRGenerator::atomicLoad):
(JSC::Wasm::OMGIRGenerator::emitAtomicStoreOp):
(JSC::Wasm::OMGIRGenerator::atomicStore):
(JSC::Wasm::OMGIRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::OMGIRGenerator::atomicBinaryRMW):
(JSC::Wasm::OMGIRGenerator::emitAtomicCompareExchange):
(JSC::Wasm::OMGIRGenerator::emitStructSet):
(JSC::Wasm::OMGIRGenerator::atomicCompareExchange):
(JSC::Wasm::OMGIRGenerator::atomicWait):
(JSC::Wasm::OMGIRGenerator::atomicNotify):
(JSC::Wasm::OMGIRGenerator::atomicFence):
(JSC::Wasm::OMGIRGenerator::truncSaturated):
(JSC::Wasm::OMGIRGenerator::addRefI31):
(JSC::Wasm::OMGIRGenerator::addI31GetS):
(JSC::Wasm::OMGIRGenerator::addI31GetU):
(JSC::Wasm::OMGIRGenerator::pushArrayNew):
(JSC::Wasm::OMGIRGenerator::getArrayTypeDefinition):
(JSC::Wasm::OMGIRGenerator::getArrayElementType):
(JSC::Wasm::OMGIRGenerator::getArrayRefType):
(JSC::Wasm::OMGIRGenerator::addArrayNew):
(JSC::Wasm::OMGIRGenerator::pushArrayNewFromSegment):
(JSC::Wasm::OMGIRGenerator::addArrayNewDefault):
(JSC::Wasm::OMGIRGenerator::addArrayNewData):
(JSC::Wasm::OMGIRGenerator::addArrayNewElem):
(JSC::Wasm::OMGIRGenerator::addArrayNewFixed):
(JSC::Wasm::OMGIRGenerator::addArrayGet):
(JSC::Wasm::OMGIRGenerator::emitArrayNullCheck):
(JSC::Wasm::OMGIRGenerator::emitArraySetUnchecked):
(JSC::Wasm::OMGIRGenerator::addArraySet):
(JSC::Wasm::OMGIRGenerator::addArrayLen):
(JSC::Wasm::OMGIRGenerator::addArrayFill):
(JSC::Wasm::OMGIRGenerator::addArrayCopy):
(JSC::Wasm::OMGIRGenerator::addArrayInitElem):
(JSC::Wasm::OMGIRGenerator::addArrayInitData):
(JSC::Wasm::OMGIRGenerator::addStructNew):
(JSC::Wasm::OMGIRGenerator::addStructNewDefault):
(JSC::Wasm::OMGIRGenerator::addStructGet):
(JSC::Wasm::OMGIRGenerator::addStructSet):
(JSC::Wasm::OMGIRGenerator::addRefTest):
(JSC::Wasm::OMGIRGenerator::addRefCast):
(JSC::Wasm::OMGIRGenerator::emitRefTestOrCast):
(JSC::Wasm::OMGIRGenerator::emitCheckOrBranchForCast):
(JSC::Wasm::OMGIRGenerator::emitLoadRTTFromFuncref):
(JSC::Wasm::OMGIRGenerator::emitLoadRTTFromObject):
(JSC::Wasm::OMGIRGenerator::emitNotRTTKind):
(JSC::Wasm::OMGIRGenerator::addAnyConvertExtern):
(JSC::Wasm::OMGIRGenerator::addExternConvertAny):
(JSC::Wasm::OMGIRGenerator::addSelect):
(JSC::Wasm::OMGIRGenerator::addSIMDSplat):
(JSC::Wasm::OMGIRGenerator::addSIMDShift):
(JSC::Wasm::OMGIRGenerator::addSIMDExtmul):
(JSC::Wasm::OMGIRGenerator::addSIMDShuffle):
(JSC::Wasm::OMGIRGenerator::addSIMDLoad):
(JSC::Wasm::OMGIRGenerator::addSIMDStore):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadSplat):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadLane):
(JSC::Wasm::OMGIRGenerator::addSIMDStoreLane):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadExtend):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadPad):
(JSC::Wasm::OMGIRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::OMGIRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::OMGIRGenerator::loadFromScratchBuffer):
(JSC::Wasm::OMGIRGenerator::connectControlAtEntrypoint):
(JSC::Wasm::OMGIRGenerator::addLoop):
(JSC::Wasm::OMGIRGenerator::addTopLevel):
(JSC::Wasm::OMGIRGenerator::addBlock):
(JSC::Wasm::OMGIRGenerator::addIf):
(JSC::Wasm::OMGIRGenerator::addElse):
(JSC::Wasm::OMGIRGenerator::addElseToUnreachable):
(JSC::Wasm::OMGIRGenerator::addTry):
(JSC::Wasm::OMGIRGenerator::addCatch):
(JSC::Wasm::OMGIRGenerator::preparePatchpointForExceptions):
(JSC::Wasm::OMGIRGenerator::addCatchToUnreachable):
(JSC::Wasm::OMGIRGenerator::addCatchAll):
(JSC::Wasm::OMGIRGenerator::addCatchAllToUnreachable):
(JSC::Wasm::OMGIRGenerator::emitCatchImpl):
(JSC::Wasm::OMGIRGenerator::addDelegate):
(JSC::Wasm::OMGIRGenerator::addDelegateToUnreachable):
(JSC::Wasm::OMGIRGenerator::addThrow):
(JSC::Wasm::OMGIRGenerator::addRethrow):
(JSC::Wasm::OMGIRGenerator::addInlinedReturn):
(JSC::Wasm::OMGIRGenerator::addReturn):
(JSC::Wasm::OMGIRGenerator::addBranch):
(JSC::Wasm::OMGIRGenerator::addBranchNull):
(JSC::Wasm::OMGIRGenerator::addBranchCast):
(JSC::Wasm::OMGIRGenerator::addSwitch):
(JSC::Wasm::OMGIRGenerator::endBlock):
(JSC::Wasm::OMGIRGenerator::createCallPatchpoint):
(JSC::Wasm::OMGIRGenerator::createTailCallPatchpoint):
(JSC::Wasm::OMGIRGenerator::canInline const):
(JSC::Wasm::OMGIRGenerator::emitInlineDirectCall):
(JSC::Wasm::OMGIRGenerator::addCall):
(JSC::Wasm::OMGIRGenerator::addCallIndirect):
(JSC::Wasm::OMGIRGenerator::addCallRef):
(JSC::Wasm::OMGIRGenerator::unify):
(JSC::Wasm::OMGIRGenerator::unifyValuesWithBlock):
(JSC::Wasm::dumpExpressionStack):
(JSC::Wasm::OMGIRGenerator::dump):
(JSC::Wasm::OMGIRGenerator::origin):
(JSC::Wasm::shouldDumpIRFor):
(JSC::Wasm::parseAndCompileOMG):
(JSC::Wasm::OMGIRGenerator::emitChecksForModOrDiv):
(JSC::Wasm::OMGIRGenerator::addI32DivS):
(JSC::Wasm::OMGIRGenerator::addI32RemS):
(JSC::Wasm::OMGIRGenerator::addI32DivU):
(JSC::Wasm::OMGIRGenerator::addI32RemU):
(JSC::Wasm::OMGIRGenerator::addI64DivS):
(JSC::Wasm::OMGIRGenerator::addI64RemS):
(JSC::Wasm::OMGIRGenerator::addI64DivU):
(JSC::Wasm::OMGIRGenerator::addI64RemU):
(JSC::Wasm::OMGIRGenerator::addI32Ctz):
(JSC::Wasm::OMGIRGenerator::addI64Ctz):
(JSC::Wasm::OMGIRGenerator::addI32Popcnt):
(JSC::Wasm::OMGIRGenerator::addI64Popcnt):
(JSC::Wasm::OMGIRGenerator::addF64ConvertUI64):
(JSC::Wasm::OMGIRGenerator::addF32ConvertUI64):
(JSC::Wasm::OMGIRGenerator::addF64Nearest):
(JSC::Wasm::OMGIRGenerator::addF32Nearest):
(JSC::Wasm::OMGIRGenerator::addF64Trunc):
(JSC::Wasm::OMGIRGenerator::addF32Trunc):
(JSC::Wasm::OMGIRGenerator::addI32TruncSF64):
(JSC::Wasm::OMGIRGenerator::addI32TruncSF32):
(JSC::Wasm::OMGIRGenerator::addI32TruncUF64):
(JSC::Wasm::OMGIRGenerator::addI32TruncUF32):
(JSC::Wasm::OMGIRGenerator::addI64TruncSF64):
(JSC::Wasm::OMGIRGenerator::addI64TruncUF64):
(JSC::Wasm::OMGIRGenerator::addI64TruncSF32):
(JSC::Wasm::OMGIRGenerator::addI64TruncUF32):
* Source/JavaScriptCore/wasm/WasmOpcodeOrigin.h:
(JSC::Wasm::OpcodeOrigin::OpcodeOrigin):
(JSC::Wasm::OpcodeOrigin::opcode const):
(JSC::Wasm::OpcodeOrigin::location const):
* Source/WTF/wtf/PlatformEnable.h:

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

4acc2de

Misc iOS, tvOS & watchOS macOS Linux Windows
❌ 🧪 style ✅ 🛠 ios ✅ 🛠 mac ✅ 🛠 wpe ✅ 🛠 wincairo
✅ 🛠 ios-sim 🛠 mac-AS-debug ✅ 🧪 wpe-wk2 ✅ 🧪 wincairo-tests
✅ 🧪 webkitperl 🧪 ios-wk2 ✅ 🧪 api-mac ✅ 🧪 api-wpe
🧪 ios-wk2-wpt ✅ 🧪 mac-wk1 ✅ 🛠 wpe-cairo
✅ 🛠 🧪 jsc 🧪 api-ios ✅ 🧪 mac-wk2 ✅ 🛠 gtk
✅ 🛠 🧪 jsc-arm64 🛠 tv 🧪 mac-AS-debug-wk2 ❌ 🧪 gtk-wk2
🛠 tv-sim ✅ 🧪 mac-wk2-stress ✅ 🧪 api-gtk
✅ 🛠 🧪 merge 🛠 watch ✅ 🛠 jsc-armv7
✅ 🛠 watch-sim ✅ 🧪 jsc-armv7-tests

@aoikonomopoulos aoikonomopoulos requested a review from a team as a code owner May 8, 2024 09:57
@aoikonomopoulos
Copy link
Copy Markdown
Contributor Author

Note: the PR currently consists of multiple commits, so that the changes to the cloned WasmOMGIRGenerator32_64.cpp are hopefully easier to review. Can squash them for landing.

@aoikonomopoulos aoikonomopoulos force-pushed the armv7-omg-minimal-v1 branch from b8e857e to de6729d Compare May 8, 2024 10:08
@webkit-ews-buildbot webkit-ews-buildbot added the merging-blocked Applied to prevent a change from being merged label May 8, 2024
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we just make a separate arm marshaller?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yah, that sounds simpler.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be clear, would you prefer a separate WasmCallingConventionArmThumb2& class (like we do for CCallingConventionArmThumb2 in the same file) or a different (CPU(ARM_THUMB2)) implementation of the methods in the same class. The former would ensure maximal separation, but then we can't have the callers be architecture-agnostic (at least, not without defining an abstract class interface).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure a separate WasmCallingConvention would be simpler. It looks like there's a lot of code in common right now.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kk, will upload a new version which only makes minimal changes to this file, as in an earlier iteration.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can make Tmp->MachineTmp, and SomeTmp->LogicalTmp? Or something like that? Let's get a second opinion

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yah, SomeTmp is a bit of a placeholder name. Perhaps SomeTmp -> TmpHolder? To me MachineTmp implies there's something special about the Tmp, so renaming it feels like it could mislead the reader. More suggestions welcome.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we planning to keep these?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, for the follow-up. I see

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To be clear, I would leave the PINNED_MEMORY_REGISTERS guard around until OMG is fully-functional. The other OMG_JSVALUE32_64 guards are temporary, to be removed by follow-up PRs that adjust more of WasmOMGIRGenerator32_64.cpp.

@justinmichaud
Copy link
Copy Markdown
Contributor

I am happy with this, and I think that it is unlikely to affect 64-bits. I will r+, once someone from the 64 bit ports confirms that they are fine with it.

@aoikonomopoulos
Copy link
Copy Markdown
Contributor Author

Updated with:

  • Duplicated implementation of marshallLocation, with the ARMv7-specific changes. I've also included a more extensive version that decouples the WasmCallingConvention definition as well (see 913318a) but this seems like overkill.
  • Renamed SomeTmp -> LogicalTmp as suggested, took the opportunity to also rename theTmp() -> singularTmp().
  • A pair of minor fixes (in separate commits).

Also considering forking a 32-bit version of B3LowerToAir.cpp to make subsequent PRs more self-contained.

@aoikonomopoulos
Copy link
Copy Markdown
Contributor Author

Updated to also fork B3LowerToAir.cpp, rebased on top of main, some style fixes.

Comment thread Source/JavaScriptCore/b3/B3ValueRep.h Outdated
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The following code looks unreachable on JSVALUE32_64. Should this be an #if #else case?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure a separate WasmCallingConvention would be simpler. It looks like there's a lot of code in common right now.

@aoikonomopoulos
Copy link
Copy Markdown
Contributor Author

@MenloDorian Thanks for the feedback, made the changes you suggested. Does the rest of the patch look OK to you?

Copy link
Copy Markdown
Contributor

@justinmichaud justinmichaud left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r=me

@webkit-early-warning-system
Copy link
Copy Markdown
Collaborator

Starting EWS tests for 4acc2de. Live statuses available at the PR page, #28284

@aoikonomopoulos aoikonomopoulos added merge-queue Applied to send a pull request to merge-queue and removed merging-blocked Applied to prevent a change from being merged labels Jun 5, 2024
@webkit-ews-buildbot webkit-ews-buildbot added merging-blocked Applied to prevent a change from being merged and removed merge-queue Applied to send a pull request to merge-queue labels Jun 5, 2024
@aoikonomopoulos aoikonomopoulos added merge-queue Applied to send a pull request to merge-queue and removed merging-blocked Applied to prevent a change from being merged labels Jun 5, 2024
https://bugs.webkit.org/show_bug.cgi?id=273869

Reviewed by Justin Michaud.

Add a minimal set of changes to get two simple testcases to run.

The main changes are:

- Copy WasmOMGIRGenerator.cpp to WasmOMGIRGenerator32_64.cpp.

- Copy B3LowerToAir.cpp to B3LowerToAir32_64.cpp.

- Change B3LowerToAir32_64.cpp to map B3 Values to either 1 or 2 Tmps.

- Introduce B3::ValueRep::RegisterPair and Air::Arg::TmpPair. We need this to
  represent Int64 values for argument passing/return. This is mainly used for
  Patchpoints, as the alternative of lowering Int64 values to 2 Air args would
  significantly complicate the stackmap code.

- Teach WasmCallingConvention.h to return JSValueRegs with the tagGPR set to
  InvalidGPRReg for Int32 values. This means we need to pass the valueSize all
  the way through to the register assignment point.

- Add 32-bit-specific lowering code in B3LowerToAir.cpp. For regular
  operations on Int64 values, emit code that either uses a special Air form or
  (in cases where that's possible) use the existing 32-bit forms and combine
  the results.

- Implement OpcodeOrigin. For simplicity's sake, use a 32-bit word, even if that
  truncates the offset to 24 bits.

Supporting changes:

- Disable parts of WasmOMGIRGenerator32_64.cpp we're not ready to enable yet (not required by
  our testcases).
- Make some minimal 32-bit adjustments to WasmOMGIRGenerator32_64.cpp to get
  the testcases to run.

With these changes, cc-int-to-int.js and i64-call.js tier up to OMG (with
JSC_useOMGJIT=true) and complete successfully.

* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/b3/B3ConstrainedValue.h:
(JSC::B3::ConstrainedValue::ConstrainedValue):
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/B3LowerToAir32_64.cpp: Copied from Source/JavaScriptCore/b3/B3LowerToAir.cpp.
(JSC::B3::lowerToAir):
* Source/JavaScriptCore/b3/B3StackmapSpecial.cpp:
(JSC::B3::StackmapSpecial::forEachArgImpl):
(JSC::B3::StackmapSpecial::isArgValidForType):
(JSC::B3::StackmapSpecial::isArgValidForRep):
(JSC::B3::StackmapSpecial::repForArg):
* Source/JavaScriptCore/b3/B3Validate.cpp:
* Source/JavaScriptCore/b3/B3ValueRep.cpp:
(JSC::B3::ValueRep::addUsedRegistersTo const):
(JSC::B3::ValueRep::dump const):
(WTF::printInternal):
* Source/JavaScriptCore/b3/B3ValueRep.h:
(JSC::B3::ValueRep::ValueRep):
(JSC::B3::ValueRep::regPair):
(JSC::B3::ValueRep::isRegPair const):
(JSC::B3::ValueRep::regLo const):
(JSC::B3::ValueRep::regHi const):
(JSC::B3::ValueRep::isGPRPair const):
* 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::Arg):
(JSC::B3::Air::Arg::isTmpPair const):
(JSC::B3::Air::Arg::tmpHi const):
(JSC::B3::Air::Arg::tmpLo const):
(JSC::B3::Air::Arg::isGPTmpPair const):
(JSC::B3::Air::Arg::regHi const):
(JSC::B3::Air::Arg::regLo const):
(JSC::B3::Air::Arg::isGP const):
(JSC::B3::Air::Arg::isFP const):
(JSC::B3::Air::Arg::hasBank const):
(JSC::B3::Air::Arg::isValidForm const):
(JSC::B3::Air::Arg::forEachTmpFast):
(JSC::B3::Air::Arg::forEachTmp):
* Source/JavaScriptCore/jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::checkWasmStackOverflow):
* Source/JavaScriptCore/jit/AssemblyHelpers.h:
* Source/JavaScriptCore/runtime/Options.cpp:
(JSC::Options::notifyOptionsChanged):
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJITImpl::BBQJIT::emitEntryTierUpCheck):
* Source/JavaScriptCore/wasm/WasmCallingConvention.h:
(JSC::Wasm::ArgumentLocation::ArgumentLocation):
(JSC::Wasm::WasmCallingConvention::marshallRegs const):
(JSC::Wasm::WasmCallingConvention::marshallLocationImpl const):
(JSC::Wasm::WasmCallingConvention::marshallLocation const):
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
* Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:
* Source/JavaScriptCore/wasm/WasmOMGIRGenerator32_64.cpp: Copied from Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp.
(JSC::Wasm::OMGIRGenerator::ControlData::ControlData):
(JSC::Wasm::OMGIRGenerator::ControlData::isIf):
(JSC::Wasm::OMGIRGenerator::ControlData::isTry):
(JSC::Wasm::OMGIRGenerator::ControlData::isAnyCatch):
(JSC::Wasm::OMGIRGenerator::ControlData::isTopLevel):
(JSC::Wasm::OMGIRGenerator::ControlData::isLoop):
(JSC::Wasm::OMGIRGenerator::ControlData::isBlock):
(JSC::Wasm::OMGIRGenerator::ControlData::isCatch):
(JSC::Wasm::OMGIRGenerator::ControlData::dump const):
(JSC::Wasm::OMGIRGenerator::ControlData::blockType const):
(JSC::Wasm::OMGIRGenerator::ControlData::signature const):
(JSC::Wasm::OMGIRGenerator::ControlData::hasNonVoidresult const):
(JSC::Wasm::OMGIRGenerator::ControlData::targetBlockForBranch):
(JSC::Wasm::OMGIRGenerator::ControlData::convertIfToBlock):
(JSC::Wasm::OMGIRGenerator::ControlData::convertTryToCatch):
(JSC::Wasm::OMGIRGenerator::ControlData::convertTryToCatchAll):
(JSC::Wasm::OMGIRGenerator::ControlData::branchTargetArity const):
(JSC::Wasm::OMGIRGenerator::ControlData::branchTargetType const):
(JSC::Wasm::OMGIRGenerator::ControlData::tryStart const):
(JSC::Wasm::OMGIRGenerator::ControlData::tryEnd const):
(JSC::Wasm::OMGIRGenerator::ControlData::tryDepth const):
(JSC::Wasm::OMGIRGenerator::ControlData::catchKind const):
(JSC::Wasm::OMGIRGenerator::ControlData::exception const):
(JSC::Wasm::OMGIRGenerator::ControlData::stackSize const):
(JSC::Wasm::OMGIRGenerator::emptyExpression):
(JSC::Wasm::OMGIRGenerator::fail const):
(JSC::Wasm::OMGIRGenerator::advanceCallSiteIndex):
(JSC::Wasm::OMGIRGenerator::callSiteIndex const):
(JSC::Wasm::OMGIRGenerator::usesSIMD):
(JSC::Wasm::OMGIRGenerator::notifyFunctionUsesSIMD):
(JSC::Wasm::OMGIRGenerator::addConstant):
(JSC::Wasm::OMGIRGenerator::addExtractLane):
(JSC::Wasm::OMGIRGenerator::addReplaceLane):
(JSC::Wasm::OMGIRGenerator::addSIMDI_V):
(JSC::Wasm::OMGIRGenerator::addSIMDV_V):
(JSC::Wasm::OMGIRGenerator::addSIMDBitwiseSelect):
(JSC::Wasm::OMGIRGenerator::addSIMDRelOp):
(JSC::Wasm::OMGIRGenerator::fixupOutOfBoundsIndicesForSwizzle):
(JSC::Wasm::OMGIRGenerator::addSIMDV_VV):
(JSC::Wasm::OMGIRGenerator::addSIMDRelaxedFMA):
(JSC::Wasm::OMGIRGenerator::addEndToUnreachable):
(JSC::Wasm::OMGIRGenerator::endTopLevel):
(JSC::Wasm::OMGIRGenerator::setParser):
(JSC::Wasm::OMGIRGenerator::willParseOpcode):
(JSC::Wasm::OMGIRGenerator::didParseOpcode):
(JSC::Wasm::OMGIRGenerator::didFinishParsingLocals):
(JSC::Wasm::OMGIRGenerator::didPopValueFromStack):
(JSC::Wasm::OMGIRGenerator::getTypeDefinition):
(JSC::Wasm::OMGIRGenerator::addStackMap):
(JSC::Wasm::OMGIRGenerator::takeStackmaps):
(JSC::Wasm::OMGIRGenerator::takeExceptionHandlers):
(JSC::Wasm::OMGIRGenerator::emitPrepareWasmOperation):
(JSC::Wasm::OMGIRGenerator::callWasmOperation):
(JSC::Wasm::OMGIRGenerator::outerLoopIndex const):
(JSC::Wasm::OMGIRGenerator::getPushVariable):
(JSC::Wasm::OMGIRGenerator::push):
(JSC::Wasm::OMGIRGenerator::get):
(JSC::Wasm::OMGIRGenerator::set):
(JSC::Wasm::OMGIRGenerator::useSignalingMemory const):
(JSC::Wasm::OMGIRGenerator::instanceValue):
(JSC::Wasm::OMGIRGenerator::baseMemoryValue):
(JSC::Wasm::OMGIRGenerator::boundsCheckingSizeValue):
(JSC::Wasm::OMGIRGenerator::fixupPointerPlusOffset):
(JSC::Wasm::OMGIRGenerator::restoreWasmContextInstance):
(JSC::Wasm::OMGIRGenerator::computeStackCheckSize):
(JSC::Wasm::OMGIRGenerator::OMGIRGenerator):
(JSC::Wasm::OMGIRGenerator::restoreWebAssemblyGlobalState):
(JSC::Wasm::OMGIRGenerator::reloadMemoryRegistersFromInstance):
(JSC::Wasm::OMGIRGenerator::emitExceptionCheck):
(JSC::Wasm::OMGIRGenerator::constant):
(JSC::Wasm::OMGIRGenerator::framePointer):
(JSC::Wasm::OMGIRGenerator::insertEntrySwitch):
(JSC::Wasm::OMGIRGenerator::insertConstants):
(JSC::Wasm::OMGIRGenerator::toB3ResultType):
(JSC::Wasm::OMGIRGenerator::addLocal):
(JSC::Wasm::OMGIRGenerator::addDrop):
(JSC::Wasm::OMGIRGenerator::addInlinedArguments):
(JSC::Wasm::OMGIRGenerator::addArguments):
(JSC::Wasm::OMGIRGenerator::addRefIsNull):
(JSC::Wasm::OMGIRGenerator::addTableGet):
(JSC::Wasm::OMGIRGenerator::addTableSet):
(JSC::Wasm::OMGIRGenerator::addRefFunc):
(JSC::Wasm::OMGIRGenerator::addRefAsNonNull):
(JSC::Wasm::OMGIRGenerator::addRefEq):
(JSC::Wasm::OMGIRGenerator::addTableInit):
(JSC::Wasm::OMGIRGenerator::addElemDrop):
(JSC::Wasm::OMGIRGenerator::addTableSize):
(JSC::Wasm::OMGIRGenerator::addTableGrow):
(JSC::Wasm::OMGIRGenerator::addTableFill):
(JSC::Wasm::OMGIRGenerator::addTableCopy):
(JSC::Wasm::OMGIRGenerator::getLocal):
(JSC::Wasm::OMGIRGenerator::addUnreachable):
(JSC::Wasm::OMGIRGenerator::addCrash):
(JSC::Wasm::OMGIRGenerator::emitIndirectCall):
(JSC::Wasm::OMGIRGenerator::addGrowMemory):
(JSC::Wasm::OMGIRGenerator::addCurrentMemory):
(JSC::Wasm::OMGIRGenerator::addMemoryFill):
(JSC::Wasm::OMGIRGenerator::addMemoryInit):
(JSC::Wasm::OMGIRGenerator::addMemoryCopy):
(JSC::Wasm::OMGIRGenerator::addDataDrop):
(JSC::Wasm::OMGIRGenerator::traceValue):
(JSC::Wasm::OMGIRGenerator::traceCF):
(JSC::Wasm::OMGIRGenerator::setLocal):
(JSC::Wasm::OMGIRGenerator::getGlobal):
(JSC::Wasm::OMGIRGenerator::setGlobal):
(JSC::Wasm::OMGIRGenerator::emitWriteBarrierForJSWrapper):
(JSC::Wasm::OMGIRGenerator::emitWriteBarrier):
(JSC::Wasm::OMGIRGenerator::emitCheckAndPreparePointer):
(JSC::Wasm::sizeOfLoadOp):
(JSC::Wasm::OMGIRGenerator::memoryKind):
(JSC::Wasm::OMGIRGenerator::emitLoadOp):
(JSC::Wasm::OMGIRGenerator::load):
(JSC::Wasm::sizeOfStoreOp):
(JSC::Wasm::OMGIRGenerator::emitStoreOp):
(JSC::Wasm::OMGIRGenerator::store):
(JSC::Wasm::accessWidth):
(JSC::Wasm::sizeOfAtomicOpMemoryAccess):
(JSC::Wasm::OMGIRGenerator::sanitizeAtomicResult):
(JSC::Wasm::OMGIRGenerator::fixupPointerPlusOffsetForAtomicOps):
(JSC::Wasm::OMGIRGenerator::emitAtomicLoadOp):
(JSC::Wasm::OMGIRGenerator::atomicLoad):
(JSC::Wasm::OMGIRGenerator::emitAtomicStoreOp):
(JSC::Wasm::OMGIRGenerator::atomicStore):
(JSC::Wasm::OMGIRGenerator::emitAtomicBinaryRMWOp):
(JSC::Wasm::OMGIRGenerator::atomicBinaryRMW):
(JSC::Wasm::OMGIRGenerator::emitAtomicCompareExchange):
(JSC::Wasm::OMGIRGenerator::emitStructSet):
(JSC::Wasm::OMGIRGenerator::atomicCompareExchange):
(JSC::Wasm::OMGIRGenerator::atomicWait):
(JSC::Wasm::OMGIRGenerator::atomicNotify):
(JSC::Wasm::OMGIRGenerator::atomicFence):
(JSC::Wasm::OMGIRGenerator::truncSaturated):
(JSC::Wasm::OMGIRGenerator::addRefI31):
(JSC::Wasm::OMGIRGenerator::addI31GetS):
(JSC::Wasm::OMGIRGenerator::addI31GetU):
(JSC::Wasm::OMGIRGenerator::pushArrayNew):
(JSC::Wasm::OMGIRGenerator::getArrayTypeDefinition):
(JSC::Wasm::OMGIRGenerator::getArrayElementType):
(JSC::Wasm::OMGIRGenerator::getArrayRefType):
(JSC::Wasm::OMGIRGenerator::addArrayNew):
(JSC::Wasm::OMGIRGenerator::pushArrayNewFromSegment):
(JSC::Wasm::OMGIRGenerator::addArrayNewDefault):
(JSC::Wasm::OMGIRGenerator::addArrayNewData):
(JSC::Wasm::OMGIRGenerator::addArrayNewElem):
(JSC::Wasm::OMGIRGenerator::addArrayNewFixed):
(JSC::Wasm::OMGIRGenerator::addArrayGet):
(JSC::Wasm::OMGIRGenerator::emitArrayNullCheck):
(JSC::Wasm::OMGIRGenerator::emitArraySetUnchecked):
(JSC::Wasm::OMGIRGenerator::addArraySet):
(JSC::Wasm::OMGIRGenerator::addArrayLen):
(JSC::Wasm::OMGIRGenerator::addArrayFill):
(JSC::Wasm::OMGIRGenerator::addArrayCopy):
(JSC::Wasm::OMGIRGenerator::addArrayInitElem):
(JSC::Wasm::OMGIRGenerator::addArrayInitData):
(JSC::Wasm::OMGIRGenerator::addStructNew):
(JSC::Wasm::OMGIRGenerator::addStructNewDefault):
(JSC::Wasm::OMGIRGenerator::addStructGet):
(JSC::Wasm::OMGIRGenerator::addStructSet):
(JSC::Wasm::OMGIRGenerator::addRefTest):
(JSC::Wasm::OMGIRGenerator::addRefCast):
(JSC::Wasm::OMGIRGenerator::emitRefTestOrCast):
(JSC::Wasm::OMGIRGenerator::emitCheckOrBranchForCast):
(JSC::Wasm::OMGIRGenerator::emitLoadRTTFromFuncref):
(JSC::Wasm::OMGIRGenerator::emitLoadRTTFromObject):
(JSC::Wasm::OMGIRGenerator::emitNotRTTKind):
(JSC::Wasm::OMGIRGenerator::addAnyConvertExtern):
(JSC::Wasm::OMGIRGenerator::addExternConvertAny):
(JSC::Wasm::OMGIRGenerator::addSelect):
(JSC::Wasm::OMGIRGenerator::addSIMDSplat):
(JSC::Wasm::OMGIRGenerator::addSIMDShift):
(JSC::Wasm::OMGIRGenerator::addSIMDExtmul):
(JSC::Wasm::OMGIRGenerator::addSIMDShuffle):
(JSC::Wasm::OMGIRGenerator::addSIMDLoad):
(JSC::Wasm::OMGIRGenerator::addSIMDStore):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadSplat):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadLane):
(JSC::Wasm::OMGIRGenerator::addSIMDStoreLane):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadExtend):
(JSC::Wasm::OMGIRGenerator::addSIMDLoadPad):
(JSC::Wasm::OMGIRGenerator::emitEntryTierUpCheck):
(JSC::Wasm::OMGIRGenerator::emitLoopTierUpCheck):
(JSC::Wasm::OMGIRGenerator::loadFromScratchBuffer):
(JSC::Wasm::OMGIRGenerator::connectControlAtEntrypoint):
(JSC::Wasm::OMGIRGenerator::addLoop):
(JSC::Wasm::OMGIRGenerator::addTopLevel):
(JSC::Wasm::OMGIRGenerator::addBlock):
(JSC::Wasm::OMGIRGenerator::addIf):
(JSC::Wasm::OMGIRGenerator::addElse):
(JSC::Wasm::OMGIRGenerator::addElseToUnreachable):
(JSC::Wasm::OMGIRGenerator::addTry):
(JSC::Wasm::OMGIRGenerator::addCatch):
(JSC::Wasm::OMGIRGenerator::preparePatchpointForExceptions):
(JSC::Wasm::OMGIRGenerator::addCatchToUnreachable):
(JSC::Wasm::OMGIRGenerator::addCatchAll):
(JSC::Wasm::OMGIRGenerator::addCatchAllToUnreachable):
(JSC::Wasm::OMGIRGenerator::emitCatchImpl):
(JSC::Wasm::OMGIRGenerator::addDelegate):
(JSC::Wasm::OMGIRGenerator::addDelegateToUnreachable):
(JSC::Wasm::OMGIRGenerator::addThrow):
(JSC::Wasm::OMGIRGenerator::addRethrow):
(JSC::Wasm::OMGIRGenerator::addInlinedReturn):
(JSC::Wasm::OMGIRGenerator::addReturn):
(JSC::Wasm::OMGIRGenerator::addBranch):
(JSC::Wasm::OMGIRGenerator::addBranchNull):
(JSC::Wasm::OMGIRGenerator::addBranchCast):
(JSC::Wasm::OMGIRGenerator::addSwitch):
(JSC::Wasm::OMGIRGenerator::endBlock):
(JSC::Wasm::OMGIRGenerator::createCallPatchpoint):
(JSC::Wasm::OMGIRGenerator::createTailCallPatchpoint):
(JSC::Wasm::OMGIRGenerator::canInline const):
(JSC::Wasm::OMGIRGenerator::emitInlineDirectCall):
(JSC::Wasm::OMGIRGenerator::addCall):
(JSC::Wasm::OMGIRGenerator::addCallIndirect):
(JSC::Wasm::OMGIRGenerator::addCallRef):
(JSC::Wasm::OMGIRGenerator::unify):
(JSC::Wasm::OMGIRGenerator::unifyValuesWithBlock):
(JSC::Wasm::dumpExpressionStack):
(JSC::Wasm::OMGIRGenerator::dump):
(JSC::Wasm::OMGIRGenerator::origin):
(JSC::Wasm::shouldDumpIRFor):
(JSC::Wasm::parseAndCompileOMG):
(JSC::Wasm::OMGIRGenerator::emitChecksForModOrDiv):
(JSC::Wasm::OMGIRGenerator::addI32DivS):
(JSC::Wasm::OMGIRGenerator::addI32RemS):
(JSC::Wasm::OMGIRGenerator::addI32DivU):
(JSC::Wasm::OMGIRGenerator::addI32RemU):
(JSC::Wasm::OMGIRGenerator::addI64DivS):
(JSC::Wasm::OMGIRGenerator::addI64RemS):
(JSC::Wasm::OMGIRGenerator::addI64DivU):
(JSC::Wasm::OMGIRGenerator::addI64RemU):
(JSC::Wasm::OMGIRGenerator::addI32Ctz):
(JSC::Wasm::OMGIRGenerator::addI64Ctz):
(JSC::Wasm::OMGIRGenerator::addI32Popcnt):
(JSC::Wasm::OMGIRGenerator::addI64Popcnt):
(JSC::Wasm::OMGIRGenerator::addF64ConvertUI64):
(JSC::Wasm::OMGIRGenerator::addF32ConvertUI64):
(JSC::Wasm::OMGIRGenerator::addF64Nearest):
(JSC::Wasm::OMGIRGenerator::addF32Nearest):
(JSC::Wasm::OMGIRGenerator::addF64Trunc):
(JSC::Wasm::OMGIRGenerator::addF32Trunc):
(JSC::Wasm::OMGIRGenerator::addI32TruncSF64):
(JSC::Wasm::OMGIRGenerator::addI32TruncSF32):
(JSC::Wasm::OMGIRGenerator::addI32TruncUF64):
(JSC::Wasm::OMGIRGenerator::addI32TruncUF32):
(JSC::Wasm::OMGIRGenerator::addI64TruncSF64):
(JSC::Wasm::OMGIRGenerator::addI64TruncUF64):
(JSC::Wasm::OMGIRGenerator::addI64TruncSF32):
(JSC::Wasm::OMGIRGenerator::addI64TruncUF32):
* Source/JavaScriptCore/wasm/WasmOpcodeOrigin.h:
(JSC::Wasm::OpcodeOrigin::OpcodeOrigin):
(JSC::Wasm::OpcodeOrigin::opcode const):
(JSC::Wasm::OpcodeOrigin::location const):
* Source/WTF/wtf/PlatformEnable.h:

Canonical link: https://commits.webkit.org/279741@main
@webkit-commit-queue webkit-commit-queue changed the title Begin work on OMG support for 32-bits Enable bare minimum of OMG on 32-bits Jun 5, 2024
@webkit-commit-queue
Copy link
Copy Markdown
Collaborator

Committed 279741@main (037cafb): https://commits.webkit.org/279741@main

Reviewed commits have been landed. Closing PR #28284 and removing active labels.

@webkit-commit-queue webkit-commit-queue removed the merge-queue Applied to send a pull request to merge-queue label Jun 5, 2024
@webkit-commit-queue webkit-commit-queue merged commit 037cafb into WebKit:main Jun 5, 2024
@webkit-early-warning-system
Copy link
Copy Markdown
Collaborator

Starting EWS tests for 4acc2de. Live statuses available at the PR page, #28284

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants