diff --git a/docs/bootstrap-inventory.md b/docs/bootstrap-inventory.md index 2f5c223325..472a9a592b 100644 --- a/docs/bootstrap-inventory.md +++ b/docs/bootstrap-inventory.md @@ -8,11 +8,11 @@ Regenerate: `php script/bootstrap-inventory.php` | Metric | Count | |--------|------:| -| PHP files on vm.php path | 8589 | -| Phase A inventory files (M2 ratio SSOT) | 8589 | +| PHP files on vm.php path | 8590 | +| Phase A inventory files (M2 ratio SSOT) | 8590 | | Phase A ratio-deferred paths | 0 | | Source constructs flagged (blockers) | 0 | -| Source constructs flagged (warnings) | 26771 | +| Source constructs flagged (warnings) | 26772 | ## Compiler CFG gaps (`lib/Compiler.php`) @@ -3264,6 +3264,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag | `ext/standard/JitPopen.php` | 0 | 1 | | `ext/standard/JitPow.php` | 0 | 1 | | `ext/standard/JitPowIntegerEmit.php` | 0 | 1 | +| `ext/standard/JitPowIntegerEmitExponents50to69.php` | 0 | 1 | | `ext/standard/JitPowIntegerEmitHigh.php` | 0 | 1 | | `ext/standard/JitPowIntegerEmitLow.php` | 0 | 1 | | `ext/standard/JitPowIntegerEmitMid.php` | 0 | 1 | @@ -33757,6 +33758,11 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag **Warnings** (review for bootstrap subset): - 1 class method(s) +### `ext/standard/JitPowIntegerEmitExponents50to69.php` + +**Warnings** (review for bootstrap subset): +- 1 class method(s) + ### `ext/standard/JitPowIntegerEmitHigh.php` **Warnings** (review for bootstrap subset): diff --git a/docs/bootstrap-selfhost.md b/docs/bootstrap-selfhost.md index f980745dba..18a25e7f38 100644 --- a/docs/bootstrap-selfhost.md +++ b/docs/bootstrap-selfhost.md @@ -2,7 +2,7 @@ **Gen-0 without Zend:** `BOOTSTRAP_M5_NO_ZEND=1 make bootstrap-selfhost-link` installs `prelinked/bootstrap-gen0/bin-compile-aot` and links `compiler_minimal` without `php bin/compile.php` ([#3053](https://github.com/PurHur/php-compiler/issues/3053)). **M5 lib spine compile:** `BOOTSTRAP_NO_ZEND_FALLBACK=1 make bootstrap-selfhost-lib-spine-smoke` (default in link script) refuses host `php bin/compile.php` on the spine emit path ([#8716](https://github.com/PurHur/php-compiler/issues/8716)). **Contributor workflow:** [bootstrap-dev-workflow.md](bootstrap-dev-workflow.md) (tiered gen-1+ path, spine checklist, CI). -**Project north star:** The **compiler fully compiles itself** — native AOT from `lib/` (no `vendor/` at cold boot), then compiles PHP and rebuilds the next compiler revision without Zend. **M2 spine:** **8589** / **8589** Phase A inventory (`php script/bootstrap-spine-count.php`; `check-selfhost-spine-coverage-sync.php`). **M5 daily gate:** `make north-star5-verify-fast` (~1–2 min) ✅; **`--strict`** (~1h) pre-merge only. Committed `prelinked/bootstrap-gen0/` sidecars + vendor **7410/7412** cold boot. **Hot loop:** VM driver execute probe ~**20ms**; full spine relink only with `BOOTSTRAP_VM_DRIVER_EXECUTE_PROBE_FULL_LINK=1` ([#2201](https://github.com/PurHur/php-compiler/issues/2201)). **Living tracker:** [#1492](https://github.com/PurHur/php-compiler/issues/1492) (was [#1056](https://github.com/PurHur/php-compiler/issues/1056)) · **re-root doc:** [self-host-target.md](self-host-target.md) · **generation ladder:** [bootstrap-generations.md](bootstrap-generations.md) · **M5 fast path:** [bootstrap-m5-fast-path.md](bootstrap-m5-fast-path.md) · public status: [development-status § North star](https://purhur.github.io/php-compiler/development-status.html#north-star-self-host). Parent tracking: [#78](https://github.com/PurHur/php-compiler/issues/78) (roadmap), [#212](https://github.com/PurHur/php-compiler/issues/212) (closed umbrella). +**Project north star:** The **compiler fully compiles itself** — native AOT from `lib/` (no `vendor/` at cold boot), then compiles PHP and rebuilds the next compiler revision without Zend. **M2 spine:** **8590** / **8590** Phase A inventory (`php script/bootstrap-spine-count.php`; `check-selfhost-spine-coverage-sync.php`). **M5 daily gate:** `make north-star5-verify-fast` (~1–2 min) ✅; **`--strict`** (~1h) pre-merge only. Committed `prelinked/bootstrap-gen0/` sidecars + vendor **7410/7412** cold boot. **Hot loop:** VM driver execute probe ~**20ms**; full spine relink only with `BOOTSTRAP_VM_DRIVER_EXECUTE_PROBE_FULL_LINK=1` ([#2201](https://github.com/PurHur/php-compiler/issues/2201)). **Living tracker:** [#1492](https://github.com/PurHur/php-compiler/issues/1492) (was [#1056](https://github.com/PurHur/php-compiler/issues/1056)) · **re-root doc:** [self-host-target.md](self-host-target.md) · **generation ladder:** [bootstrap-generations.md](bootstrap-generations.md) · **M5 fast path:** [bootstrap-m5-fast-path.md](bootstrap-m5-fast-path.md) · public status: [development-status § North star](https://purhur.github.io/php-compiler/development-status.html#north-star-self-host). Parent tracking: [#78](https://github.com/PurHur/php-compiler/issues/78) (roadmap), [#212](https://github.com/PurHur/php-compiler/issues/212) (closed umbrella). ## Current gates diff --git a/docs/index.md b/docs/index.md index f6f4a524bd..dd1ebb428a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -26,7 +26,7 @@ Bench history page: [`pages/bench.html`](pages/bench.html). Do not quote a ratio ## Internals -[`architecture-review-2026-07.md`](architecture-review-2026-07.md) · [`self-host-target.md`](self-host-target.md) · [`bootstrap-m5-fast-path.md`](bootstrap-m5-fast-path.md) · ADRs under [`adr/`](adr/). Spine coverage **8589** / **8589**. +[`architecture-review-2026-07.md`](architecture-review-2026-07.md) · [`self-host-target.md`](self-host-target.md) · [`bootstrap-m5-fast-path.md`](bootstrap-m5-fast-path.md) · ADRs under [`adr/`](adr/). Spine coverage **8590** / **8590**. ## Contributing for agents diff --git a/docs/pages/development-status.md b/docs/pages/development-status.md index bfaff3ef88..112051c1fc 100644 --- a/docs/pages/development-status.md +++ b/docs/pages/development-status.md @@ -15,7 +15,7 @@ permalink: /development-status.html | **North star** | Compiler compiles itself without Zend ([#1492](https://github.com/PurHur/php-compiler/issues/1492)) | | **v1.1.0 theme** | M5 fast-path stability; enum/property hooks; `preg_match` JIT; `spl_autoload*`; php-in-PHP JIT helpers ([#78](https://github.com/PurHur/php-compiler/issues/78)) | | **Wave 3** | Language **7410/7412** · Stdlib **7410/7412** on master ([#1380](https://github.com/PurHur/php-compiler/issues/1380)) | -| **Spine SSOT** | `php script/bootstrap-spine-count.php` → **8589** / **8589** | +| **Spine SSOT** | `php script/bootstrap-spine-count.php` → **8590** / **8590** | | **Builtin matrix** | **1555** functions ([`docs/capabilities.md`](https://github.com/PurHur/php-compiler/blob/master/docs/capabilities.md)) | | **Try it** | [`docs/GETTING-STARTED.md`](https://github.com/PurHur/php-compiler/blob/master/docs/GETTING-STARTED.md) | @@ -50,7 +50,7 @@ permalink: /development-status.html ### Still open (high signal) - **MCJIT execute** — `bin/jit.php -r` SIGSEGV ([#98](https://github.com/PurHur/php-compiler/issues/98)) -- **Literal spine ratio** — **8589/8589** ✅ (Jul 2026) +- **Literal spine ratio** — **8590/8590** ✅ (Jul 2026) - **Compile-spine stub retirement** — shrink `PHP_COMPILER_SELFHOST_AOT` on M3 allowlist ([#1402](https://github.com/PurHur/php-compiler/issues/1402)) - **007-ThrowsWeb AOT execute** — invalid POST segfault at runtime (link OK; slice `EXAMPLES_AOT_SMOKE_ONLY=007`) - **LLVM 14+ upgrade** — experimental `script/install-llvm14.sh` ([#174](https://github.com/PurHur/php-compiler/issues/174)) @@ -62,7 +62,7 @@ permalink: /development-status.html - **`phpc` CLI** — `run`, `serve`, `build`, `deploy`, `lint`, `test`, `init`, `doctor` - **Examples 000–009** — VM and AOT link/execute for the curated web subset - **Self-host M0** — `compiler_minimal bundle OK` ✅ -- **Self-host M2** — spine **8589/8589** ✅; native link + lint ✅ +- **Self-host M2** — spine **8590/8590** ✅; native link + lint ✅ - **Self-host M3** — HelloWorld strict `emit_path=native` ✅ ([#1493](https://github.com/PurHur/php-compiler/issues/1493)); inventory argv `bin/compile.php` ✅ ([#3024](https://github.com/PurHur/php-compiler/issues/3024) closed); compile-smoke strict native ✅ ([#1937](https://github.com/PurHur/php-compiler/issues/1937)) - **Self-host M4** — `make bootstrap-loop-probe` full ladder ✅; gen-2→gen-3 full-spine recompile ✅ - **Self-host M3–M5** — vendor prelink **7410/7412** ✅; **`make north-star5-verify-fast`** daily ✅; VM probe ~**20ms**. **`--strict` red** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)) and **M3/M4 emit paths are prelinked blob COPIES, not native compiles** ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) — the byte-identical gen-0/gen-2/gen-3 result follows from copying and is not fixpoint evidence @@ -92,7 +92,7 @@ See [`docs/bootstrap-selfhost.md`](https://github.com/PurHur/php-compiler/blob/m |-----------|--------| | **M0** — Small `lib/` bundle runs | ✅ | | **M1** — Compiler-shaped bundle + compile-smoke | ✅ | -| **M2** — Spine toward full inventory | ✅ **8589** / **8589** | +| **M2** — Spine toward full inventory | ✅ **8590** / **8590** | | **M3** — Native compiles PHP (no Zend emit) | ✅ Smoke + inventory argv driver strict native | | **M4** — Bootstrap loop (next revision) | ✅ `bootstrap-loop-probe` full ladder | | **M5** — Full self-host, no `vendor/` cold boot | ✅ Presenter strict + compiled-only empty `build/` cold boot ([#3053](https://github.com/PurHur/php-compiler/issues/3053)) | diff --git a/docs/pages/index.html b/docs/pages/index.html index 5e655c019c..4c34be177f 100644 --- a/docs/pages/index.html +++ b/docs/pages/index.html @@ -70,7 +70,7 @@

A compiler for PHP in PHP that compiles itself

VM + JIT + AOT Closures · try/catch 321 builtins - Spine **8589** / **8589** (1 deferred) + Spine **8590** / **8590** (1 deferred) M5 strict ✅ M3 strict emit MCJIT execute @@ -391,7 +391,7 @@

Self-host progress

fix/spine-aot-jit-blockers @ a8cffaa0e (15 Jun 2026, LLVM 9). - M2 spine SSOT: php script/bootstrap-spine-count.php**8589** / **8589** Phase A inventory (literal coverage ✅). + M2 spine SSOT: php script/bootstrap-spine-count.php**8590** / **8590** Phase A inventory (literal coverage ✅). M4: make bootstrap-loop-probe full ladder ✅. M5: make north-star5-verify-fast ✅ daily; --strict pre-merge; VM driver probe ~20ms in CI loops. Remaining: MCJIT execute ([#98](https://github.com/PurHur/php-compiler/issues/98)); honest PHP main() in full spine AOT (native bundle-OK probe is bootstrap smoke). @@ -437,7 +437,7 @@

M4

M5

Vendor prelink 7410/7410 ✅; committed .o cold boot ✅; - north-star5-verify-fast ✅ daily; --strict pre-merge; spine **8589** / **8589**; prelinked gen-0 refreshed; + north-star5-verify-fast ✅ daily; --strict pre-merge; spine **8590** / **8590**; prelinked gen-0 refreshed; fast VM execute probe (~20ms); compiled-only cold boot via BOOTSTRAP_M5_NO_ZEND=1 ✅ (#3053, #8559, @@ -494,7 +494,7 @@

Get involved

PHP compare · Getting started

- + diff --git a/docs/roadmap-wave3.md b/docs/roadmap-wave3.md index a3850b9517..14c0c0dfc8 100644 --- a/docs/roadmap-wave3.md +++ b/docs/roadmap-wave3.md @@ -19,7 +19,7 @@ Regenerate capability truth: `php script/capability-matrix.php`, `php script/cap Related merges outside this wave: `goto` ([#1228](https://github.com/PurHur/php-compiler/issues/1228) / [#1333](https://github.com/PurHur/php-compiler/pull/1333)), anonymous classes ([#1233](https://github.com/PurHur/php-compiler/issues/1233) / [#1386](https://github.com/PurHur/php-compiler/pull/1386)). -**M2 spine:** **8589** / **8589** (`php script/bootstrap-spine-count.php`) — full Phase A inventory in `compiler_lib_spine_smoke`; coverage sync ✅ (`check-selfhost-spine-coverage-sync.php`). Native spine **link** + **lint** ✅ ([#2134](https://github.com/PurHur/php-compiler/issues/2134), [#8559](https://github.com/PurHur/php-compiler/issues/8559)). **M5 daily gate:** `make north-star5-verify-fast` + VM probe ~20ms ([#2201](https://github.com/PurHur/php-compiler/issues/2201)); `--strict` pre-merge only. M4 gen-2→gen-3 recompile ✅. Target doc: [self-host-target.md](self-host-target.md) +**M2 spine:** **8590** / **8590** (`php script/bootstrap-spine-count.php`) — full Phase A inventory in `compiler_lib_spine_smoke`; coverage sync ✅ (`check-selfhost-spine-coverage-sync.php`). Native spine **link** + **lint** ✅ ([#2134](https://github.com/PurHur/php-compiler/issues/2134), [#8559](https://github.com/PurHur/php-compiler/issues/8559)). **M5 daily gate:** `make north-star5-verify-fast` + VM probe ~20ms ([#2201](https://github.com/PurHur/php-compiler/issues/2201)); `--strict` pre-merge only. M4 gen-2→gen-3 recompile ✅. Target doc: [self-host-target.md](self-host-target.md) ## Language (#1354–#1366) diff --git a/docs/self-host-target.md b/docs/self-host-target.md index 8bc8b4d97b..f59a8bd4f9 100644 --- a/docs/self-host-target.md +++ b/docs/self-host-target.md @@ -45,7 +45,7 @@ Research stretch (not a release gate): that same binary can compile the next rev |-------|-------|--------| | **Bootstrap driver** | Prelinked gen-0 refreshed via honest inventory argv emit; native `build/bin-compile-aot-inventory` for M4/M5 | Compiled `bin/compile.php` only | | **Bundle size** | **7410/7412** literal Phase A inventory in spine smoke | Full vm.php closure | -| **Inventory coverage** | **8589** / **8589** ✅ | Full closure | +| **Inventory coverage** | **8590** / **8590** ✅ | Full closure | | **HelloWorld** | ✅ `emit_path=native` via gen-0 argv emit helper (`DRIVER -o OUT SOURCE`; [#22178](https://github.com/PurHur/php-compiler/issues/22178)) | Native compile for arbitrary PHP | | **Bootstrap loop (M4)** | `make bootstrap-loop-probe` full ladder ✅ — gen-1→gen-2, gen-2→gen-3 full spine, full-revision argv | Native full revision rebuild | | **Vendor** | **7410/7412** vendor `object_ok`; committed `.o` cold boot without `vendor/` ✅; `make north-star5-verify-fast` daily ✅; `--strict` ❌ **red at step 4a2** ([#21417](https://github.com/PurHur/php-compiler/issues/21417)) | No Zend `vendor/autoload.php` at bootstrap | @@ -79,7 +79,7 @@ Research stretch (not a release gate): that same binary can compile the next rev |-----------|----------------|--------|-----| | **M0** | AOT can link a **small** honest `lib/` subset | ✅ | 100% | | **M1** | Bundle is **compiler-shaped** (lint + compile-smoke) | ✅ | 100% | -| **M2** | Spine grows toward full `bin/vm.php` inventory | ✅ **8589** / **8589** | **100%** | +| **M2** | Spine grows toward full `bin/vm.php` inventory | ✅ **8590** / **8590** | **100%** | | **M3** | Self-host binary **compiles external PHP** (HelloWorld) without Zend emit | ✅ `emit_path=native` via gen-0 argv helper ([#22178](https://github.com/PurHur/php-compiler/issues/22178)) | **~90%** | | **M4** | Self-host binary **rebuilds** the next compiler tree | 🚧 ladder runs but gen-1→gen-2 is a COPY ([#21860](https://github.com/PurHur/php-compiler/issues/21860)) | **~60%** | | **M5 (release)** | Static `phpc` builds user/Composer projects | 🚧 fast gate ✅; corpus app smoke open ([#36380](https://github.com/PurHur/php-compiler/issues/36380)); see [ADR #36393](adr/36393-selfhost-user-payoff.md) | **payoff** | @@ -91,7 +91,7 @@ Research stretch (not a release gate): that same binary can compile the next rev | Indicator | Formula | Jul 2026 | |-----------|---------|----------| -| **M2 spine progress** | `require_once` units in `compiler_lib_spine_smoke` ÷ Phase A inventory file count | **8589** / **8589** (`php script/bootstrap-spine-count.php`) | +| **M2 spine progress** | `require_once` units in `compiler_lib_spine_smoke` ÷ Phase A inventory file count | **8590** / **8590** (`php script/bootstrap-spine-count.php`) | | **Public “Self-host” row** | Same M2 ratio until M3–M5 gates add weight ([`development-status.md`](pages/development-status.md)) | **~97%** | | **M5 vendor prelink** | `object_ok` packages ÷ 3 | **3 / 3** (cfg, types, llvm) | | **Composite (internal)** | Milestone weights in table above (M0–M1 = 100%, M2 = spine %, M3–M5 = gate %) | **~65%** | diff --git a/ext/standard/JitPowIntegerEmit.php b/ext/standard/JitPowIntegerEmit.php index a77201a969..81ed729398 100644 --- a/ext/standard/JitPowIntegerEmit.php +++ b/ext/standard/JitPowIntegerEmit.php @@ -28,6 +28,7 @@ require_once __DIR__.'/JitPowIntegerEmitLow.php'; require_once __DIR__.'/JitPowIntegerEmitMid.php'; require_once __DIR__.'/JitPowIntegerEmitHigh.php'; +require_once __DIR__.'/JitPowIntegerEmitExponents50to69.php'; final class JitPowIntegerEmit { @@ -65,16342 +66,10 @@ public static function emitIntegerPowViaMathFpow( return; } - if ('fiftieth' === $expFold) { - // n^50 = fortyeighth*sq = fortysixth*sq*sq: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq. - // Overflow arms finish in float (sqF^25, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF, tenthF^4*sqF*sqF*sqF*sqF*sqF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF, fortiethF*sqF*sqF*sqF*sqF*sqF, fortysecondF*sqF*sqF*sqF*sqF, - // fortyfourthF*sqF*sqF*sqF, fortysixthF*sqF*sqF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftieth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftieth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftieth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftiethFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftiethFEighth = $context->builder->fmul($fiftiethFSq, $sqF); - $fiftiethF = $context->builder->fmul($fiftiethFEighth, $sqF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftieth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftieth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftiethF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftiethF2Eighth = $context->builder->fmul($fiftiethF2Sq, $sqF2); - $fiftiethF2 = $context->builder->fmul($fiftiethF2Eighth, $sqF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftieth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftieth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftiethF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftiethF3Eighth = $context->builder->fmul($fiftiethF3Sq, $sqF3); - $fiftiethF3 = $context->builder->fmul($fiftiethF3Eighth, $sqF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftieth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftieth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftiethF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftiethF4Eighth = $context->builder->fmul($fiftiethF4Sq, $sqF4); - $fiftiethF4 = $context->builder->fmul($fiftiethF4Eighth, $sqF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftieth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftieth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftiethF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftiethF5Eighth = $context->builder->fmul($fiftiethF5Sq, $sqF5); - $fiftiethF5 = $context->builder->fmul($fiftiethF5Eighth, $sqF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftiethF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftiethF6Eighth = $context->builder->fmul($fiftiethF6Sq, $sqF6); - $fiftiethF6 = $context->builder->fmul($fiftiethF6Eighth, $sqF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftiethF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftiethF7Eighth = $context->builder->fmul($fiftiethF7Sq, $sqF7); - $fiftiethF7 = $context->builder->fmul($fiftiethF7Eighth, $sqF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftiethF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftiethF8Eighth = $context->builder->fmul($fiftiethF8Sq, $sqF8); - $fiftiethF8 = $context->builder->fmul($fiftiethF8Eighth, $sqF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftiethF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **50 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftiethF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftiethF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('fiftyfirst' === $expFold) { - // n^51 = fiftieth*n = fortyeighth*sq*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n. - // Overflow arms finish in float (sqF^25*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF, - // fortyfourthF*sqF*sqF*sqF*nF, fortysixthF*sqF*sqF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyfirst_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftyfirstFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftyfirstFEighth = $context->builder->fmul($fiftyfirstFSq, $sqF); - $fiftyfirstF = $context->builder->fmul($fiftyfirstFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftyfirstF = $context->builder->fmul($fiftyfirstF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftyfirstF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftyfirstF2Eighth = $context->builder->fmul($fiftyfirstF2Sq, $sqF2); - $fiftyfirstF2 = $context->builder->fmul($fiftyfirstF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftyfirstF2 = $context->builder->fmul($fiftyfirstF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftyfirstF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftyfirstF3Eighth = $context->builder->fmul($fiftyfirstF3Sq, $sqF3); - $fiftyfirstF3 = $context->builder->fmul($fiftyfirstF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftyfirstF3 = $context->builder->fmul($fiftyfirstF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftyfirstF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftyfirstF4Eighth = $context->builder->fmul($fiftyfirstF4Sq, $sqF4); - $fiftyfirstF4 = $context->builder->fmul($fiftyfirstF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftyfirstF4 = $context->builder->fmul($fiftyfirstF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftyfirstF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftyfirstF5Eighth = $context->builder->fmul($fiftyfirstF5Sq, $sqF5); - $fiftyfirstF5 = $context->builder->fmul($fiftyfirstF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftyfirstF5 = $context->builder->fmul($fiftyfirstF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftyfirstF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftyfirstF6Eighth = $context->builder->fmul($fiftyfirstF6Sq, $sqF6); - $fiftyfirstF6 = $context->builder->fmul($fiftyfirstF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftyfirstF6 = $context->builder->fmul($fiftyfirstF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftyfirstF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftyfirstF7Eighth = $context->builder->fmul($fiftyfirstF7Sq, $sqF7); - $fiftyfirstF7 = $context->builder->fmul($fiftyfirstF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftyfirstF7 = $context->builder->fmul($fiftyfirstF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftyfirstF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftyfirstF8Eighth = $context->builder->fmul($fiftyfirstF8Sq, $sqF8); - $fiftyfirstF8 = $context->builder->fmul($fiftyfirstF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftyfirstF8 = $context->builder->fmul($fiftyfirstF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftyfirstF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftyfirstF9 = $context->builder->fmul($fiftyfirstF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftyfirstF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftyfirstF10 = $context->builder->fmul($fiftyfirstF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **51 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftyfirstF11 = $context->builder->fmul($fiftiethF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfirstF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('fiftysecond' === $expFold) { - // n^52 = fiftyfirst*n = fortyeighth*sq*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n. - // Overflow arms finish in float (sqF^25*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF, fortysixthF*sqF*sqF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftysecond_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftysecond_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftysecond_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftysecondFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftysecondFEighth = $context->builder->fmul($fiftysecondFSq, $sqF); - $fiftysecondF = $context->builder->fmul($fiftysecondFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftysecondF = $context->builder->fmul($fiftysecondF, $nF); - $fiftysecondF = $context->builder->fmul($fiftysecondF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftysecond_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftysecond_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftysecondF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftysecondF2Eighth = $context->builder->fmul($fiftysecondF2Sq, $sqF2); - $fiftysecondF2 = $context->builder->fmul($fiftysecondF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftysecondF2 = $context->builder->fmul($fiftysecondF2, $nF2); - $fiftysecondF2 = $context->builder->fmul($fiftysecondF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftysecondF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftysecondF3Eighth = $context->builder->fmul($fiftysecondF3Sq, $sqF3); - $fiftysecondF3 = $context->builder->fmul($fiftysecondF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftysecondF3 = $context->builder->fmul($fiftysecondF3, $nF3); - $fiftysecondF3 = $context->builder->fmul($fiftysecondF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftysecond_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftysecond_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftysecondF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftysecondF4Eighth = $context->builder->fmul($fiftysecondF4Sq, $sqF4); - $fiftysecondF4 = $context->builder->fmul($fiftysecondF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftysecondF4 = $context->builder->fmul($fiftysecondF4, $nF4); - $fiftysecondF4 = $context->builder->fmul($fiftysecondF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftysecond_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftysecond_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftysecondF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftysecondF5Eighth = $context->builder->fmul($fiftysecondF5Sq, $sqF5); - $fiftysecondF5 = $context->builder->fmul($fiftysecondF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftysecondF5 = $context->builder->fmul($fiftysecondF5, $nF5); - $fiftysecondF5 = $context->builder->fmul($fiftysecondF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftysecondF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftysecondF6Eighth = $context->builder->fmul($fiftysecondF6Sq, $sqF6); - $fiftysecondF6 = $context->builder->fmul($fiftysecondF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftysecondF6 = $context->builder->fmul($fiftysecondF6, $nF6); - $fiftysecondF6 = $context->builder->fmul($fiftysecondF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftysecondF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftysecondF7Eighth = $context->builder->fmul($fiftysecondF7Sq, $sqF7); - $fiftysecondF7 = $context->builder->fmul($fiftysecondF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftysecondF7 = $context->builder->fmul($fiftysecondF7, $nF7); - $fiftysecondF7 = $context->builder->fmul($fiftysecondF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftysecondF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftysecondF8Eighth = $context->builder->fmul($fiftysecondF8Sq, $sqF8); - $fiftysecondF8 = $context->builder->fmul($fiftysecondF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftysecondF8 = $context->builder->fmul($fiftysecondF8, $nF8); - $fiftysecondF8 = $context->builder->fmul($fiftysecondF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftysecondF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftysecondF9 = $context->builder->fmul($fiftysecondF9, $nF9); - $fiftysecondF9 = $context->builder->fmul($fiftysecondF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftysecondF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftysecondF10 = $context->builder->fmul($fiftysecondF10, $nF10); - $fiftysecondF10 = $context->builder->fmul($fiftysecondF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftysecondF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftysecondF11 = $context->builder->fmul($fiftysecondF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **52 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftysecondF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysecondF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('fiftythird' === $expFold) { - // n^53 = fiftysecond*n = fortyeighth*sq*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftythird_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftythird_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftythird_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftythirdFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftythirdFEighth = $context->builder->fmul($fiftythirdFSq, $sqF); - $fiftythirdF = $context->builder->fmul($fiftythirdFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftythirdF = $context->builder->fmul($fiftythirdF, $nF); - $fiftythirdF = $context->builder->fmul($fiftythirdF, $nF); - $fiftythirdF = $context->builder->fmul($fiftythirdF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftythird_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftythird_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftythirdF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftythirdF2Eighth = $context->builder->fmul($fiftythirdF2Sq, $sqF2); - $fiftythirdF2 = $context->builder->fmul($fiftythirdF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftythirdF2 = $context->builder->fmul($fiftythirdF2, $nF2); - $fiftythirdF2 = $context->builder->fmul($fiftythirdF2, $nF2); - $fiftythirdF2 = $context->builder->fmul($fiftythirdF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftythird_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftythird_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftythirdF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftythirdF3Eighth = $context->builder->fmul($fiftythirdF3Sq, $sqF3); - $fiftythirdF3 = $context->builder->fmul($fiftythirdF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftythirdF3 = $context->builder->fmul($fiftythirdF3, $nF3); - $fiftythirdF3 = $context->builder->fmul($fiftythirdF3, $nF3); - $fiftythirdF3 = $context->builder->fmul($fiftythirdF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftythird_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftythird_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftythirdF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftythirdF4Eighth = $context->builder->fmul($fiftythirdF4Sq, $sqF4); - $fiftythirdF4 = $context->builder->fmul($fiftythirdF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftythirdF4 = $context->builder->fmul($fiftythirdF4, $nF4); - $fiftythirdF4 = $context->builder->fmul($fiftythirdF4, $nF4); - $fiftythirdF4 = $context->builder->fmul($fiftythirdF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftythird_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftythird_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftythirdF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftythirdF5Eighth = $context->builder->fmul($fiftythirdF5Sq, $sqF5); - $fiftythirdF5 = $context->builder->fmul($fiftythirdF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftythirdF5 = $context->builder->fmul($fiftythirdF5, $nF5); - $fiftythirdF5 = $context->builder->fmul($fiftythirdF5, $nF5); - $fiftythirdF5 = $context->builder->fmul($fiftythirdF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftythirdF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftythirdF6Eighth = $context->builder->fmul($fiftythirdF6Sq, $sqF6); - $fiftythirdF6 = $context->builder->fmul($fiftythirdF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftythirdF6 = $context->builder->fmul($fiftythirdF6, $nF6); - $fiftythirdF6 = $context->builder->fmul($fiftythirdF6, $nF6); - $fiftythirdF6 = $context->builder->fmul($fiftythirdF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftythirdF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftythirdF7Eighth = $context->builder->fmul($fiftythirdF7Sq, $sqF7); - $fiftythirdF7 = $context->builder->fmul($fiftythirdF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftythirdF7 = $context->builder->fmul($fiftythirdF7, $nF7); - $fiftythirdF7 = $context->builder->fmul($fiftythirdF7, $nF7); - $fiftythirdF7 = $context->builder->fmul($fiftythirdF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftythirdF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftythirdF8Eighth = $context->builder->fmul($fiftythirdF8Sq, $sqF8); - $fiftythirdF8 = $context->builder->fmul($fiftythirdF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftythirdF8 = $context->builder->fmul($fiftythirdF8, $nF8); - $fiftythirdF8 = $context->builder->fmul($fiftythirdF8, $nF8); - $fiftythirdF8 = $context->builder->fmul($fiftythirdF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftythirdF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftythirdF9 = $context->builder->fmul($fiftythirdF9, $nF9); - $fiftythirdF9 = $context->builder->fmul($fiftythirdF9, $nF9); - $fiftythirdF9 = $context->builder->fmul($fiftythirdF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftythirdF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftythirdF10 = $context->builder->fmul($fiftythirdF10, $nF10); - $fiftythirdF10 = $context->builder->fmul($fiftythirdF10, $nF10); - $fiftythirdF10 = $context->builder->fmul($fiftythirdF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftythirdF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftythirdF11 = $context->builder->fmul($fiftythirdF11, $nF11); - $fiftythirdF11 = $context->builder->fmul($fiftythirdF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftythirdF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $fiftythirdF12 = $context->builder->fmul($fiftythirdF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **53 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $fiftythirdF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftythirdF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('fiftyfourth' === $expFold) { - // n^54 = fiftythird*n = fortyeighth*sq*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyfourth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftyfourthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftyfourthFEighth = $context->builder->fmul($fiftyfourthFSq, $sqF); - $fiftyfourthF = $context->builder->fmul($fiftyfourthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); - $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); - $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); - $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftyfourthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftyfourthF2Eighth = $context->builder->fmul($fiftyfourthF2Sq, $sqF2); - $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); - $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); - $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); - $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftyfourthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftyfourthF3Eighth = $context->builder->fmul($fiftyfourthF3Sq, $sqF3); - $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); - $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); - $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); - $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftyfourthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftyfourthF4Eighth = $context->builder->fmul($fiftyfourthF4Sq, $sqF4); - $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); - $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); - $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); - $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftyfourthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftyfourthF5Eighth = $context->builder->fmul($fiftyfourthF5Sq, $sqF5); - $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); - $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); - $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); - $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftyfourthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftyfourthF6Eighth = $context->builder->fmul($fiftyfourthF6Sq, $sqF6); - $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); - $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); - $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); - $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftyfourthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftyfourthF7Eighth = $context->builder->fmul($fiftyfourthF7Sq, $sqF7); - $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); - $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); - $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); - $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftyfourthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftyfourthF8Eighth = $context->builder->fmul($fiftyfourthF8Sq, $sqF8); - $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); - $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); - $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); - $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftyfourthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); - $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); - $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); - $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftyfourthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); - $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); - $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); - $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftyfourthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftyfourthF11 = $context->builder->fmul($fiftyfourthF11, $nF11); - $fiftyfourthF11 = $context->builder->fmul($fiftyfourthF11, $nF11); - $fiftyfourthF11 = $context->builder->fmul($fiftyfourthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftyfourthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $fiftyfourthF12 = $context->builder->fmul($fiftyfourthF12, $nF12); - $fiftyfourthF12 = $context->builder->fmul($fiftyfourthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $fiftyfourthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $fiftyfourthF13 = $context->builder->fmul($fiftyfourthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **54 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $fiftyfourthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfourthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - - if ('fiftyfifth' === $expFold) { - // n^55 = fiftyfourth*n = fortyeighth*sq*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyfifth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftyfifthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftyfifthFEighth = $context->builder->fmul($fiftyfifthFSq, $sqF); - $fiftyfifthF = $context->builder->fmul($fiftyfifthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); - $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); - $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); - $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); - $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftyfifthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftyfifthF2Eighth = $context->builder->fmul($fiftyfifthF2Sq, $sqF2); - $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); - $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); - $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); - $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); - $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftyfifthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftyfifthF3Eighth = $context->builder->fmul($fiftyfifthF3Sq, $sqF3); - $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); - $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); - $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); - $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); - $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftyfifthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftyfifthF4Eighth = $context->builder->fmul($fiftyfifthF4Sq, $sqF4); - $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); - $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); - $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); - $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); - $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftyfifthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftyfifthF5Eighth = $context->builder->fmul($fiftyfifthF5Sq, $sqF5); - $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); - $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); - $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); - $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); - $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftyfifthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftyfifthF6Eighth = $context->builder->fmul($fiftyfifthF6Sq, $sqF6); - $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); - $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); - $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); - $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); - $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftyfifthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftyfifthF7Eighth = $context->builder->fmul($fiftyfifthF7Sq, $sqF7); - $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); - $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); - $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); - $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); - $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftyfifthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftyfifthF8Eighth = $context->builder->fmul($fiftyfifthF8Sq, $sqF8); - $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); - $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); - $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); - $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); - $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftyfifthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); - $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); - $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); - $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); - $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftyfifthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); - $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); - $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); - $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); - $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftyfifthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); - $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); - $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); - $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftyfifthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $fiftyfifthF12 = $context->builder->fmul($fiftyfifthF12, $nF12); - $fiftyfifthF12 = $context->builder->fmul($fiftyfifthF12, $nF12); - $fiftyfifthF12 = $context->builder->fmul($fiftyfifthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $fiftyfifthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $fiftyfifthF13 = $context->builder->fmul($fiftyfifthF13, $nF13); - $fiftyfifthF13 = $context->builder->fmul($fiftyfifthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $fiftyfifthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $fiftyfifthF14 = $context->builder->fmul($fiftyfifthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **55 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $fiftyfifthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyfifthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('fiftysixth' === $expFold) { - // n^56 = fiftyfifth*n = fortyeighth*sq*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftysixth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftysixth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftysixth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftysixthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftysixthFEighth = $context->builder->fmul($fiftysixthFSq, $sqF); - $fiftysixthF = $context->builder->fmul($fiftysixthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); - $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); - $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); - $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); - $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); - $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftysixth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftysixth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftysixthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftysixthF2Eighth = $context->builder->fmul($fiftysixthF2Sq, $sqF2); - $fiftysixthF2 = $context->builder->fmul($fiftysixthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); - $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); - $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); - $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); - $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); - $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftysixthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftysixthF3Eighth = $context->builder->fmul($fiftysixthF3Sq, $sqF3); - $fiftysixthF3 = $context->builder->fmul($fiftysixthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); - $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); - $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); - $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); - $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); - $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftysixth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftysixth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftysixthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftysixthF4Eighth = $context->builder->fmul($fiftysixthF4Sq, $sqF4); - $fiftysixthF4 = $context->builder->fmul($fiftysixthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); - $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); - $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); - $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); - $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); - $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftysixth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftysixth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftysixthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftysixthF5Eighth = $context->builder->fmul($fiftysixthF5Sq, $sqF5); - $fiftysixthF5 = $context->builder->fmul($fiftysixthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); - $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); - $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); - $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); - $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); - $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftysixthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftysixthF6Eighth = $context->builder->fmul($fiftysixthF6Sq, $sqF6); - $fiftysixthF6 = $context->builder->fmul($fiftysixthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); - $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); - $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); - $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); - $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); - $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftysixthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftysixthF7Eighth = $context->builder->fmul($fiftysixthF7Sq, $sqF7); - $fiftysixthF7 = $context->builder->fmul($fiftysixthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); - $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); - $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); - $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); - $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); - $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftysixthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftysixthF8Eighth = $context->builder->fmul($fiftysixthF8Sq, $sqF8); - $fiftysixthF8 = $context->builder->fmul($fiftysixthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); - $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); - $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); - $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); - $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); - $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftysixthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); - $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); - $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); - $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); - $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); - $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftysixthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); - $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); - $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); - $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); - $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); - $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftysixthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); - $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); - $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); - $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); - $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftysixthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); - $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); - $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); - $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $fiftysixthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $fiftysixthF13 = $context->builder->fmul($fiftysixthF13, $nF13); - $fiftysixthF13 = $context->builder->fmul($fiftysixthF13, $nF13); - $fiftysixthF13 = $context->builder->fmul($fiftysixthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $fiftysixthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $fiftysixthF14 = $context->builder->fmul($fiftysixthF14, $nF14); - $fiftysixthF14 = $context->builder->fmul($fiftysixthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $fiftysixthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $fiftysixthF15 = $context->builder->fmul($fiftysixthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **56 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $fiftysixthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftysixthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - if ('fiftyseventh' === $expFold) { - // n^57 = fiftysixth*n = fortyeighth*sq*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyseventh_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftyseventhFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftyseventhFEighth = $context->builder->fmul($fiftyseventhFSq, $sqF); - $fiftyseventhF = $context->builder->fmul($fiftyseventhFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); - $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); - $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); - $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); - $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); - $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); - $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftyseventhF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftyseventhF2Eighth = $context->builder->fmul($fiftyseventhF2Sq, $sqF2); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); - $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftyseventhF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftyseventhF3Eighth = $context->builder->fmul($fiftyseventhF3Sq, $sqF3); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); - $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftyseventhF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftyseventhF4Eighth = $context->builder->fmul($fiftyseventhF4Sq, $sqF4); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); - $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftyseventhF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftyseventhF5Eighth = $context->builder->fmul($fiftyseventhF5Sq, $sqF5); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); - $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftyseventhF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftyseventhF6Eighth = $context->builder->fmul($fiftyseventhF6Sq, $sqF6); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); - $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftyseventhF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftyseventhF7Eighth = $context->builder->fmul($fiftyseventhF7Sq, $sqF7); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); - $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftyseventhF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftyseventhF8Eighth = $context->builder->fmul($fiftyseventhF8Sq, $sqF8); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); - $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftyseventhF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); - $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); - $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); - $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); - $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); - $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); - $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftyseventhF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); - $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); - $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); - $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); - $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); - $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); - $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftyseventhF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); - $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); - $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); - $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); - $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); - $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftyseventhF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); - $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); - $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); - $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); - $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $fiftyseventhF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); - $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); - $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); - $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $fiftyseventhF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $fiftyseventhF14 = $context->builder->fmul($fiftyseventhF14, $nF14); - $fiftyseventhF14 = $context->builder->fmul($fiftyseventhF14, $nF14); - $fiftyseventhF14 = $context->builder->fmul($fiftyseventhF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $fiftyseventhF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $fiftyseventhF15 = $context->builder->fmul($fiftyseventhF15, $nF15); - $fiftyseventhF15 = $context->builder->fmul($fiftyseventhF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $fiftyseventhF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $fiftyseventhF16 = $context->builder->fmul($fiftyseventhF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **57 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $fiftyseventhF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyseventhF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - if ('fiftyeighth' === $expFold) { - // n^58 = fiftyseventh*n = fortyeighth*sq*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyeighth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftyeighthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftyeighthFEighth = $context->builder->fmul($fiftyeighthFSq, $sqF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftyeighthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftyeighthF2Eighth = $context->builder->fmul($fiftyeighthF2Sq, $sqF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftyeighthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftyeighthF3Eighth = $context->builder->fmul($fiftyeighthF3Sq, $sqF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftyeighthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftyeighthF4Eighth = $context->builder->fmul($fiftyeighthF4Sq, $sqF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftyeighthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftyeighthF5Eighth = $context->builder->fmul($fiftyeighthF5Sq, $sqF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftyeighthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftyeighthF6Eighth = $context->builder->fmul($fiftyeighthF6Sq, $sqF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftyeighthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftyeighthF7Eighth = $context->builder->fmul($fiftyeighthF7Sq, $sqF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftyeighthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftyeighthF8Eighth = $context->builder->fmul($fiftyeighthF8Sq, $sqF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftyeighthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftyeighthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftyeighthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); - $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); - $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); - $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); - $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); - $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); - $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftyeighthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); - $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); - $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); - $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); - $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); - $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $fiftyeighthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); - $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); - $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); - $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); - $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $fiftyeighthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); - $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); - $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); - $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $fiftyeighthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $fiftyeighthF15 = $context->builder->fmul($fiftyeighthF15, $nF15); - $fiftyeighthF15 = $context->builder->fmul($fiftyeighthF15, $nF15); - $fiftyeighthF15 = $context->builder->fmul($fiftyeighthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $fiftyeighthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $fiftyeighthF16 = $context->builder->fmul($fiftyeighthF16, $nF16); - $fiftyeighthF16 = $context->builder->fmul($fiftyeighthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $fiftyeighthF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $fiftyeighthF17 = $context->builder->fmul($fiftyeighthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $fiftyeighthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyeighthF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - if ('fiftyninth' === $expFold) { - // n^59 = fiftyeighth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyninth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyninth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyninth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $fiftyninthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $fiftyninthFEighth = $context->builder->fmul($fiftyninthFSq, $sqF); - $fiftyninthF = $context->builder->fmul($fiftyninthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyninth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyninth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $fiftyninthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $fiftyninthF2Eighth = $context->builder->fmul($fiftyninthF2Sq, $sqF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $fiftyninthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $fiftyninthF3Eighth = $context->builder->fmul($fiftyninthF3Sq, $sqF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyninth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyninth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $fiftyninthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $fiftyninthF4Eighth = $context->builder->fmul($fiftyninthF4Sq, $sqF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyninth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyninth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $fiftyninthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $fiftyninthF5Eighth = $context->builder->fmul($fiftyninthF5Sq, $sqF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $fiftyninthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $fiftyninthF6Eighth = $context->builder->fmul($fiftyninthF6Sq, $sqF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $fiftyninthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $fiftyninthF7Eighth = $context->builder->fmul($fiftyninthF7Sq, $sqF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $fiftyninthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $fiftyninthF8Eighth = $context->builder->fmul($fiftyninthF8Sq, $sqF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $fiftyninthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $fiftyninthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $fiftyninthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $fiftyninthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); - $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); - $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); - $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); - $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); - $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); - $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $fiftyninthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); - $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); - $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); - $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); - $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); - $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $fiftyninthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); - $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); - $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); - $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); - $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $fiftyninthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); - $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); - $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); - $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $fiftyninthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $fiftyninthF16 = $context->builder->fmul($fiftyninthF16, $nF16); - $fiftyninthF16 = $context->builder->fmul($fiftyninthF16, $nF16); - $fiftyninthF16 = $context->builder->fmul($fiftyninthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $fiftyninthF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $fiftyninthF17 = $context->builder->fmul($fiftyninthF17, $nF17); - $fiftyninthF17 = $context->builder->fmul($fiftyninthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $fiftyninthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $fiftyninthF18 = $context->builder->fmul($fiftyninthF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $fiftyninthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $fiftyninthF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - if ('sixtieth' === $expFold) { - // n^60 = fiftyninth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtieth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtieth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtieth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtiethFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtiethFEighth = $context->builder->fmul($sixtiethFSq, $sqF); - $sixtiethF = $context->builder->fmul($sixtiethFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $sixtiethF = $context->builder->fmul($sixtiethF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtieth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtieth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtiethF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtiethF2Eighth = $context->builder->fmul($sixtiethF2Sq, $sqF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtieth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtieth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtiethF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtiethF3Eighth = $context->builder->fmul($sixtiethF3Sq, $sqF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtieth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtieth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtiethF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtiethF4Eighth = $context->builder->fmul($sixtiethF4Sq, $sqF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtieth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtieth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtiethF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtiethF5Eighth = $context->builder->fmul($sixtiethF5Sq, $sqF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtiethF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtiethF6Eighth = $context->builder->fmul($sixtiethF6Sq, $sqF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtiethF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtiethF7Eighth = $context->builder->fmul($sixtiethF7Sq, $sqF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtiethF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtiethF8Eighth = $context->builder->fmul($sixtiethF8Sq, $sqF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtiethF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtiethF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtiethF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtiethF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtiethF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); - $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); - $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); - $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); - $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); - $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); - $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtiethF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); - $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); - $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); - $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); - $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); - $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtiethF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); - $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); - $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); - $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); - $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtiethF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); - $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); - $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); - $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtiethF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtiethF17 = $context->builder->fmul($sixtiethF17, $nF17); - $sixtiethF17 = $context->builder->fmul($sixtiethF17, $nF17); - $sixtiethF17 = $context->builder->fmul($sixtiethF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtiethF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtiethF18 = $context->builder->fmul($sixtiethF18, $nF18); - $sixtiethF18 = $context->builder->fmul($sixtiethF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtiethF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtiethF19 = $context->builder->fmul($sixtiethF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtiethF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtiethF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('sixtyfirst' === $expFold) { - // n^61 = sixtieth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyfirst_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtyfirstFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtyfirstFEighth = $context->builder->fmul($sixtyfirstFSq, $sqF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtyfirstF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtyfirstF2Eighth = $context->builder->fmul($sixtyfirstF2Sq, $sqF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtyfirstF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtyfirstF3Eighth = $context->builder->fmul($sixtyfirstF3Sq, $sqF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtyfirstF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtyfirstF4Eighth = $context->builder->fmul($sixtyfirstF4Sq, $sqF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtyfirstF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtyfirstF5Eighth = $context->builder->fmul($sixtyfirstF5Sq, $sqF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtyfirstF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtyfirstF6Eighth = $context->builder->fmul($sixtyfirstF6Sq, $sqF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtyfirstF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtyfirstF7Eighth = $context->builder->fmul($sixtyfirstF7Sq, $sqF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtyfirstF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtyfirstF8Eighth = $context->builder->fmul($sixtyfirstF8Sq, $sqF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtyfirstF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtyfirstF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtyfirstF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtyfirstF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtyfirstF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtyfirstF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); - $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); - $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); - $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); - $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); - $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); - $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtyfirstF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); - $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); - $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); - $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); - $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); - $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtyfirstF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); - $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); - $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); - $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); - $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtyfirstF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); - $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); - $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); - $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtyfirstF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtyfirstF18 = $context->builder->fmul($sixtyfirstF18, $nF18); - $sixtyfirstF18 = $context->builder->fmul($sixtyfirstF18, $nF18); - $sixtyfirstF18 = $context->builder->fmul($sixtyfirstF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtyfirstF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtyfirstF19 = $context->builder->fmul($sixtyfirstF19, $nF19); - $sixtyfirstF19 = $context->builder->fmul($sixtyfirstF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtyfirstF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtyfirstF20 = $context->builder->fmul($sixtyfirstF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **61 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtyfirstF21 = $context->builder->fmul($sixtiethF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfirstF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('sixtysecond' === $expFold) { - // n^62 = sixtyfirst*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtysecond_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtysecondFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtysecondFEighth = $context->builder->fmul($sixtysecondFSq, $sqF); - $sixtysecondF = $context->builder->fmul($sixtysecondFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtysecond_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtysecond_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtysecondF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtysecondF2Eighth = $context->builder->fmul($sixtysecondF2Sq, $sqF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtysecondF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtysecondF3Eighth = $context->builder->fmul($sixtysecondF3Sq, $sqF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtysecond_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtysecond_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtysecondF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtysecondF4Eighth = $context->builder->fmul($sixtysecondF4Sq, $sqF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtysecond_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtysecond_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtysecondF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtysecondF5Eighth = $context->builder->fmul($sixtysecondF5Sq, $sqF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtysecondF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtysecondF6Eighth = $context->builder->fmul($sixtysecondF6Sq, $sqF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtysecondF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtysecondF7Eighth = $context->builder->fmul($sixtysecondF7Sq, $sqF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtysecondF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtysecondF8Eighth = $context->builder->fmul($sixtysecondF8Sq, $sqF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtysecondF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtysecondF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtysecondF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtysecondF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtysecondF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtysecondF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtysecondF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); - $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); - $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); - $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); - $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); - $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); - $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtysecondF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); - $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); - $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); - $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); - $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); - $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtysecondF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); - $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); - $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); - $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); - $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtysecondF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); - $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); - $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); - $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtysecondF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtysecondF19 = $context->builder->fmul($sixtysecondF19, $nF19); - $sixtysecondF19 = $context->builder->fmul($sixtysecondF19, $nF19); - $sixtysecondF19 = $context->builder->fmul($sixtysecondF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtysecondF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtysecondF20 = $context->builder->fmul($sixtysecondF20, $nF20); - $sixtysecondF20 = $context->builder->fmul($sixtysecondF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtysecondF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtysecondF21 = $context->builder->fmul($sixtysecondF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **62 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtysecondF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysecondF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - - return; - } - if ('sixtythird' === $expFold) { - // n^63 = sixtysecond*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtythird_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtythird_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtythird_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtythirdFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtythirdFEighth = $context->builder->fmul($sixtythirdFSq, $sqF); - $sixtythirdF = $context->builder->fmul($sixtythirdFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtythird_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtythird_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtythirdF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtythirdF2Eighth = $context->builder->fmul($sixtythirdF2Sq, $sqF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtythird_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtythird_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtythirdF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtythirdF3Eighth = $context->builder->fmul($sixtythirdF3Sq, $sqF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtythird_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtythird_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtythirdF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtythirdF4Eighth = $context->builder->fmul($sixtythirdF4Sq, $sqF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtythird_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtythird_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtythirdF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtythirdF5Eighth = $context->builder->fmul($sixtythirdF5Sq, $sqF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtythirdF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtythirdF6Eighth = $context->builder->fmul($sixtythirdF6Sq, $sqF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtythirdF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtythirdF7Eighth = $context->builder->fmul($sixtythirdF7Sq, $sqF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtythirdF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtythirdF8Eighth = $context->builder->fmul($sixtythirdF8Sq, $sqF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtythirdF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtythirdF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtythirdF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtythirdF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtythirdF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtythirdF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtythirdF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtythirdF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); - $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); - $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); - $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); - $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); - $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); - $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtythirdF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); - $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); - $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); - $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); - $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); - $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtythirdF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); - $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); - $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); - $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); - $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtythirdF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); - $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); - $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); - $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtythirdF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtythirdF20 = $context->builder->fmul($sixtythirdF20, $nF20); - $sixtythirdF20 = $context->builder->fmul($sixtythirdF20, $nF20); - $sixtythirdF20 = $context->builder->fmul($sixtythirdF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtythirdF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtythirdF21 = $context->builder->fmul($sixtythirdF21, $nF21); - $sixtythirdF21 = $context->builder->fmul($sixtythirdF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtythirdF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $sixtythirdF22 = $context->builder->fmul($sixtythirdF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n - ); - $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); - if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **63 expected smul overflow metadata (sixtysecond)'); - } - $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind - ? $context->builder->load($sixtysecondVar->value) - : $sixtysecondVar->value; - $ov23Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtysecond_ov'); - $ok23Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtysecond_ok'); - $context->builder->branchIf($ov23, $ov23Block, $ok23Block); - - $context->builder->positionAtEnd($ov23Block); - $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); - $nF23 = $context->builder->siToFp($n, $f64); - $sixtythirdF23 = $context->builder->fmul($sixtysecondF23, $nF23); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtythirdF23 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok23Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtysecondLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - - return; - } - if ('sixtyfourth' === $expFold) { - // n^64 = sixtythird*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyfourth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtyfourthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtyfourthFEighth = $context->builder->fmul($sixtyfourthFSq, $sqF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtyfourthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtyfourthF2Eighth = $context->builder->fmul($sixtyfourthF2Sq, $sqF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtyfourthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtyfourthF3Eighth = $context->builder->fmul($sixtyfourthF3Sq, $sqF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtyfourthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtyfourthF4Eighth = $context->builder->fmul($sixtyfourthF4Sq, $sqF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtyfourthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtyfourthF5Eighth = $context->builder->fmul($sixtyfourthF5Sq, $sqF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtyfourthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtyfourthF6Eighth = $context->builder->fmul($sixtyfourthF6Sq, $sqF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtyfourthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtyfourthF7Eighth = $context->builder->fmul($sixtyfourthF7Sq, $sqF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtyfourthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtyfourthF8Eighth = $context->builder->fmul($sixtyfourthF8Sq, $sqF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtyfourthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtyfourthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtyfourthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtyfourthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtyfourthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtyfourthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtyfourthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtyfourthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtyfourthF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); - $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); - $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); - $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); - $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); - $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); - $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtyfourthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); - $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); - $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); - $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); - $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); - $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtyfourthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); - $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); - $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); - $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); - $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtyfourthF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); - $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); - $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); - $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtyfourthF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtyfourthF21 = $context->builder->fmul($sixtyfourthF21, $nF21); - $sixtyfourthF21 = $context->builder->fmul($sixtyfourthF21, $nF21); - $sixtyfourthF21 = $context->builder->fmul($sixtyfourthF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtyfourthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $sixtyfourthF22 = $context->builder->fmul($sixtyfourthF22, $nF22); - $sixtyfourthF22 = $context->builder->fmul($sixtyfourthF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n - ); - $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); - if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (sixtysecond)'); - } - $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind - ? $context->builder->load($sixtysecondVar->value) - : $sixtysecondVar->value; - $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtysecond_ov'); - $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtysecond_ok'); - $context->builder->branchIf($ov23, $ov23Block, $ok23Block); - - $context->builder->positionAtEnd($ov23Block); - $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); - $nF23 = $context->builder->siToFp($n, $f64); - $sixtyfourthF23 = $context->builder->fmul($sixtysecondF23, $nF23); - $sixtyfourthF23 = $context->builder->fmul($sixtyfourthF23, $nF23); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF23 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok23Block); - $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysecondLong, - $n - ); - $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); - if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **64 expected smul overflow metadata (sixtythird)'); - } - $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind - ? $context->builder->load($sixtythirdVar->value) - : $sixtythirdVar->value; - $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtythird_ov'); - $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtythird_ok'); - $context->builder->branchIf($ov24, $ov24Block, $ok24Block); - - $context->builder->positionAtEnd($ov24Block); - $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); - $nF24 = $context->builder->siToFp($n, $f64); - $sixtyfourthF24 = $context->builder->fmul($sixtythirdF24, $nF24); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfourthF24 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok24Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtythirdLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('sixtyfifth' === $expFold) { - // n^65 = sixtyfourth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyfifth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtyfifthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtyfifthFEighth = $context->builder->fmul($sixtyfifthFSq, $sqF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtyfifthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtyfifthF2Eighth = $context->builder->fmul($sixtyfifthF2Sq, $sqF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtyfifthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtyfifthF3Eighth = $context->builder->fmul($sixtyfifthF3Sq, $sqF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtyfifthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtyfifthF4Eighth = $context->builder->fmul($sixtyfifthF4Sq, $sqF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtyfifthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtyfifthF5Eighth = $context->builder->fmul($sixtyfifthF5Sq, $sqF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtyfifthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtyfifthF6Eighth = $context->builder->fmul($sixtyfifthF6Sq, $sqF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtyfifthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtyfifthF7Eighth = $context->builder->fmul($sixtyfifthF7Sq, $sqF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtyfifthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtyfifthF8Eighth = $context->builder->fmul($sixtyfifthF8Sq, $sqF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtyfifthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtyfifthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtyfifthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtyfifthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtyfifthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtyfifthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtyfifthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtyfifthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtyfifthF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtyfifthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); - $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); - $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); - $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); - $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); - $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); - $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtyfifthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); - $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); - $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); - $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); - $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); - $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtyfifthF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); - $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); - $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); - $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); - $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtyfifthF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); - $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); - $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); - $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtyfifthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $sixtyfifthF22 = $context->builder->fmul($sixtyfifthF22, $nF22); - $sixtyfifthF22 = $context->builder->fmul($sixtyfifthF22, $nF22); - $sixtyfifthF22 = $context->builder->fmul($sixtyfifthF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n - ); - $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); - if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (sixtysecond)'); - } - $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind - ? $context->builder->load($sixtysecondVar->value) - : $sixtysecondVar->value; - $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtysecond_ov'); - $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtysecond_ok'); - $context->builder->branchIf($ov23, $ov23Block, $ok23Block); - - $context->builder->positionAtEnd($ov23Block); - $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); - $nF23 = $context->builder->siToFp($n, $f64); - $sixtyfifthF23 = $context->builder->fmul($sixtysecondF23, $nF23); - $sixtyfifthF23 = $context->builder->fmul($sixtyfifthF23, $nF23); - $sixtyfifthF23 = $context->builder->fmul($sixtyfifthF23, $nF23); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF23 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok23Block); - $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysecondLong, - $n - ); - $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); - if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (sixtythird)'); - } - $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind - ? $context->builder->load($sixtythirdVar->value) - : $sixtythirdVar->value; - $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtythird_ov'); - $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtythird_ok'); - $context->builder->branchIf($ov24, $ov24Block, $ok24Block); - - $context->builder->positionAtEnd($ov24Block); - $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); - $nF24 = $context->builder->siToFp($n, $f64); - $sixtyfifthF24 = $context->builder->fmul($sixtythirdF24, $nF24); - $sixtyfifthF24 = $context->builder->fmul($sixtyfifthF24, $nF24); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF24 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok24Block); - $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtythirdLong, - $n - ); - $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); - if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **65 expected smul overflow metadata (sixtyfourth)'); - } - $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind - ? $context->builder->load($sixtyfourthVar->value) - : $sixtyfourthVar->value; - $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfourth_ov'); - $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfourth_ok'); - $context->builder->branchIf($ov25, $ov25Block, $ok25Block); - - $context->builder->positionAtEnd($ov25Block); - $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); - $nF25 = $context->builder->siToFp($n, $f64); - $sixtyfifthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyfifthF25 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok25Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtyfourthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - - return; - } - - if ('sixtysixth' === $expFold) { - // n^66 = sixtyfifth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtysixth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtysixthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtysixthFEighth = $context->builder->fmul($sixtysixthFSq, $sqF); - $sixtysixthF = $context->builder->fmul($sixtysixthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtysixth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtysixth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtysixthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtysixthF2Eighth = $context->builder->fmul($sixtysixthF2Sq, $sqF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtysixthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtysixthF3Eighth = $context->builder->fmul($sixtysixthF3Sq, $sqF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtysixth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtysixth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtysixthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtysixthF4Eighth = $context->builder->fmul($sixtysixthF4Sq, $sqF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtysixth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtysixth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtysixthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtysixthF5Eighth = $context->builder->fmul($sixtysixthF5Sq, $sqF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtysixthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtysixthF6Eighth = $context->builder->fmul($sixtysixthF6Sq, $sqF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtysixthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtysixthF7Eighth = $context->builder->fmul($sixtysixthF7Sq, $sqF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtysixthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtysixthF8Eighth = $context->builder->fmul($sixtysixthF8Sq, $sqF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtysixthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtysixthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtysixthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtysixthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtysixthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtysixthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtysixthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtysixthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtysixthF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtysixthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtysixthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); - $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); - $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); - $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); - $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); - $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); - $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtysixthF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); - $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); - $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); - $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); - $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); - $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtysixthF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); - $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); - $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); - $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); - $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtysixthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); - $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); - $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); - $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n - ); - $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); - if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (sixtysecond)'); - } - $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind - ? $context->builder->load($sixtysecondVar->value) - : $sixtysecondVar->value; - $ov23Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtysecond_ov'); - $ok23Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtysecond_ok'); - $context->builder->branchIf($ov23, $ov23Block, $ok23Block); - - $context->builder->positionAtEnd($ov23Block); - $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); - $nF23 = $context->builder->siToFp($n, $f64); - $sixtysixthF23 = $context->builder->fmul($sixtysecondF23, $nF23); - $sixtysixthF23 = $context->builder->fmul($sixtysixthF23, $nF23); - $sixtysixthF23 = $context->builder->fmul($sixtysixthF23, $nF23); - $sixtysixthF23 = $context->builder->fmul($sixtysixthF23, $nF23); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF23 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok23Block); - $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysecondLong, - $n - ); - $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); - if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (sixtythird)'); - } - $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind - ? $context->builder->load($sixtythirdVar->value) - : $sixtythirdVar->value; - $ov24Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtythird_ov'); - $ok24Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtythird_ok'); - $context->builder->branchIf($ov24, $ov24Block, $ok24Block); - - $context->builder->positionAtEnd($ov24Block); - $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); - $nF24 = $context->builder->siToFp($n, $f64); - $sixtysixthF24 = $context->builder->fmul($sixtythirdF24, $nF24); - $sixtysixthF24 = $context->builder->fmul($sixtysixthF24, $nF24); - $sixtysixthF24 = $context->builder->fmul($sixtysixthF24, $nF24); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF24 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok24Block); - $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtythirdLong, - $n - ); - $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); - if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (sixtyfourth)'); - } - $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind - ? $context->builder->load($sixtyfourthVar->value) - : $sixtyfourthVar->value; - $ov25Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfourth_ov'); - $ok25Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfourth_ok'); - $context->builder->branchIf($ov25, $ov25Block, $ok25Block); - - $context->builder->positionAtEnd($ov25Block); - $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); - $nF25 = $context->builder->siToFp($n, $f64); - $sixtysixthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); - $sixtysixthF25 = $context->builder->fmul($sixtysixthF25, $nF25); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF25 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok25Block); - $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfourthLong, - $n - ); - $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); - if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **66 expected smul overflow metadata (sixtyfifth)'); - } - $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind - ? $context->builder->load($sixtyfifthVar->value) - : $sixtyfifthVar->value; - $ov26Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfifth_ov'); - $ok26Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfifth_ok'); - $context->builder->branchIf($ov26, $ov26Block, $ok26Block); - - $context->builder->positionAtEnd($ov26Block); - $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); - $nF26 = $context->builder->siToFp($n, $f64); - $sixtysixthF26 = $context->builder->fmul($sixtyfifthF26, $nF26); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtysixthF26 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok26Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtyfifthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - - return; - } - if ('sixtyseventh' === $expFold) { - // n^67 = sixtysixth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n. - // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, - // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF). - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyseventh_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtyseventhFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtyseventhFEighth = $context->builder->fmul($sixtyseventhFSq, $sqF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtyseventhF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtyseventhF2Eighth = $context->builder->fmul($sixtyseventhF2Sq, $sqF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtyseventhF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtyseventhF3Eighth = $context->builder->fmul($sixtyseventhF3Sq, $sqF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtyseventhF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtyseventhF4Eighth = $context->builder->fmul($sixtyseventhF4Sq, $sqF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtyseventhF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtyseventhF5Eighth = $context->builder->fmul($sixtyseventhF5Sq, $sqF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtyseventhF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtyseventhF6Eighth = $context->builder->fmul($sixtyseventhF6Sq, $sqF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtyseventhF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtyseventhF7Eighth = $context->builder->fmul($sixtyseventhF7Sq, $sqF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtyseventhF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtyseventhF8Eighth = $context->builder->fmul($sixtyseventhF8Sq, $sqF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtyseventhF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtyseventhF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtyseventhF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtyseventhF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtyseventhF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtyseventhF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtyseventhF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtyseventhF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtyseventhF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtyseventhF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtyseventhF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtyseventhF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); - $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); - $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); - $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); - $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); - $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); - $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtyseventhF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); - $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); - $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); - $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); - $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); - $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtyseventhF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); - $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); - $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); - $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); - $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n - ); - $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); - if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sixtysecond)'); - } - $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind - ? $context->builder->load($sixtysecondVar->value) - : $sixtysecondVar->value; - $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysecond_ov'); - $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysecond_ok'); - $context->builder->branchIf($ov23, $ov23Block, $ok23Block); - - $context->builder->positionAtEnd($ov23Block); - $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); - $nF23 = $context->builder->siToFp($n, $f64); - $sixtyseventhF23 = $context->builder->fmul($sixtysecondF23, $nF23); - $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); - $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); - $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); - $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF23 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok23Block); - $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysecondLong, - $n - ); - $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); - if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sixtythird)'); - } - $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind - ? $context->builder->load($sixtythirdVar->value) - : $sixtythirdVar->value; - $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtythird_ov'); - $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtythird_ok'); - $context->builder->branchIf($ov24, $ov24Block, $ok24Block); - - $context->builder->positionAtEnd($ov24Block); - $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); - $nF24 = $context->builder->siToFp($n, $f64); - $sixtyseventhF24 = $context->builder->fmul($sixtythirdF24, $nF24); - $sixtyseventhF24 = $context->builder->fmul($sixtyseventhF24, $nF24); - $sixtyseventhF24 = $context->builder->fmul($sixtyseventhF24, $nF24); - $sixtyseventhF24 = $context->builder->fmul($sixtyseventhF24, $nF24); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF24 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok24Block); - $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtythirdLong, - $n - ); - $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); - if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sixtyfourth)'); - } - $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind - ? $context->builder->load($sixtyfourthVar->value) - : $sixtyfourthVar->value; - $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfourth_ov'); - $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfourth_ok'); - $context->builder->branchIf($ov25, $ov25Block, $ok25Block); - - $context->builder->positionAtEnd($ov25Block); - $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); - $nF25 = $context->builder->siToFp($n, $f64); - $sixtyseventhF25 = $context->builder->fmul($sixtyfourthF25, $nF25); - $sixtyseventhF25 = $context->builder->fmul($sixtyseventhF25, $nF25); - $sixtyseventhF25 = $context->builder->fmul($sixtyseventhF25, $nF25); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF25 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok25Block); - $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfourthLong, - $n - ); - $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); - if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sixtyfifth)'); - } - $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind - ? $context->builder->load($sixtyfifthVar->value) - : $sixtyfifthVar->value; - $ov26Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfifth_ov'); - $ok26Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfifth_ok'); - $context->builder->branchIf($ov26, $ov26Block, $ok26Block); - - $context->builder->positionAtEnd($ov26Block); - $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); - $nF26 = $context->builder->siToFp($n, $f64); - $sixtyseventhF26 = $context->builder->fmul($sixtyfifthF26, $nF26); - $sixtyseventhF26 = $context->builder->fmul($sixtyseventhF26, $nF26); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF26 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok26Block); - $sixtysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfifthLong, - $n - ); - $ov27 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysixthVar->longArithOverflowFlag); - if (null === $ov27 || null === $sixtysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **67 expected smul overflow metadata (sixtysixth)'); - } - $sixtysixthLong = JITVariable::KIND_VARIABLE === $sixtysixthVar->kind - ? $context->builder->load($sixtysixthVar->value) - : $sixtysixthVar->value; - $ov27Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysixth_ov'); - $ok27Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysixth_ok'); - $context->builder->branchIf($ov27, $ov27Block, $ok27Block); - - $context->builder->positionAtEnd($ov27Block); - $sixtysixthF27 = $context->builder->load($sixtysixthVar->longArithOverflowDoubleSlot); - $nF27 = $context->builder->siToFp($n, $f64); - $sixtyseventhF27 = $context->builder->fmul($sixtysixthF27, $nF27); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyseventhF27 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok27Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtysixthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - - return; - } -if ('sixtyeighth' === $expFold) { - // n^68 = sixtyseventh*n = fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n… (sixtyseventh×n). - // Overflow arms finish in float with one extra ×nF vs **67. - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyeighth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtyeighthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtyeighthFEighth = $context->builder->fmul($sixtyeighthFSq, $sqF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtyeighthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtyeighthF2Eighth = $context->builder->fmul($sixtyeighthF2Sq, $sqF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtyeighthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtyeighthF3Eighth = $context->builder->fmul($sixtyeighthF3Sq, $sqF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtyeighthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtyeighthF4Eighth = $context->builder->fmul($sixtyeighthF4Sq, $sqF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtyeighthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtyeighthF5Eighth = $context->builder->fmul($sixtyeighthF5Sq, $sqF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtyeighthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtyeighthF6Eighth = $context->builder->fmul($sixtyeighthF6Sq, $sqF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtyeighthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtyeighthF7Eighth = $context->builder->fmul($sixtyeighthF7Sq, $sqF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtyeighthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtyeighthF8Eighth = $context->builder->fmul($sixtyeighthF8Sq, $sqF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtyeighthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtyeighthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtyeighthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtyeighthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtyeighthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtyeighthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtyeighthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtyeighthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtyeighthF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtyeighthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtyeighthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtyeighthF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtyeighthF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); - $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); - $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); - $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); - $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); - $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); - $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtyeighthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); - $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); - $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); - $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); - $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); - $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n - ); - $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); - if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtysecond)'); - } - $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind - ? $context->builder->load($sixtysecondVar->value) - : $sixtysecondVar->value; - $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysecond_ov'); - $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysecond_ok'); - $context->builder->branchIf($ov23, $ov23Block, $ok23Block); - - $context->builder->positionAtEnd($ov23Block); - $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); - $nF23 = $context->builder->siToFp($n, $f64); - $sixtyeighthF23 = $context->builder->fmul($sixtysecondF23, $nF23); - $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); - $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); - $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); - $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); - $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF23 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok23Block); - $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysecondLong, - $n - ); - $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); - if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtythird)'); - } - $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind - ? $context->builder->load($sixtythirdVar->value) - : $sixtythirdVar->value; - $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtythird_ov'); - $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtythird_ok'); - $context->builder->branchIf($ov24, $ov24Block, $ok24Block); - - $context->builder->positionAtEnd($ov24Block); - $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); - $nF24 = $context->builder->siToFp($n, $f64); - $sixtyeighthF24 = $context->builder->fmul($sixtythirdF24, $nF24); - $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); - $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); - $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); - $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF24 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok24Block); - $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtythirdLong, - $n - ); - $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); - if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyfourth)'); - } - $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind - ? $context->builder->load($sixtyfourthVar->value) - : $sixtyfourthVar->value; - $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfourth_ov'); - $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfourth_ok'); - $context->builder->branchIf($ov25, $ov25Block, $ok25Block); - - $context->builder->positionAtEnd($ov25Block); - $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); - $nF25 = $context->builder->siToFp($n, $f64); - $sixtyeighthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); - $sixtyeighthF25 = $context->builder->fmul($sixtyeighthF25, $nF25); - $sixtyeighthF25 = $context->builder->fmul($sixtyeighthF25, $nF25); - $sixtyeighthF25 = $context->builder->fmul($sixtyeighthF25, $nF25); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF25 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok25Block); - $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfourthLong, - $n - ); - $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); - if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyfifth)'); - } - $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind - ? $context->builder->load($sixtyfifthVar->value) - : $sixtyfifthVar->value; - $ov26Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfifth_ov'); - $ok26Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfifth_ok'); - $context->builder->branchIf($ov26, $ov26Block, $ok26Block); - - $context->builder->positionAtEnd($ov26Block); - $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); - $nF26 = $context->builder->siToFp($n, $f64); - $sixtyeighthF26 = $context->builder->fmul($sixtyfifthF26, $nF26); - $sixtyeighthF26 = $context->builder->fmul($sixtyeighthF26, $nF26); - $sixtyeighthF26 = $context->builder->fmul($sixtyeighthF26, $nF26); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF26 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok26Block); - $sixtysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfifthLong, - $n - ); - $ov27 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysixthVar->longArithOverflowFlag); - if (null === $ov27 || null === $sixtysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtysixth)'); - } - $sixtysixthLong = JITVariable::KIND_VARIABLE === $sixtysixthVar->kind - ? $context->builder->load($sixtysixthVar->value) - : $sixtysixthVar->value; - $ov27Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysixth_ov'); - $ok27Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysixth_ok'); - $context->builder->branchIf($ov27, $ov27Block, $ok27Block); - - $context->builder->positionAtEnd($ov27Block); - $sixtysixthF27 = $context->builder->load($sixtysixthVar->longArithOverflowDoubleSlot); - $nF27 = $context->builder->siToFp($n, $f64); - $sixtyeighthF27 = $context->builder->fmul($sixtysixthF27, $nF27); - $sixtyeighthF27 = $context->builder->fmul($sixtyeighthF27, $nF27); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF27 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok27Block); - $sixtyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysixthLong, - $n - ); - $ov28 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyseventhVar->longArithOverflowFlag); - if (null === $ov28 || null === $sixtyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyseventh)'); - } - $sixtyseventhLong = JITVariable::KIND_VARIABLE === $sixtyseventhVar->kind - ? $context->builder->load($sixtyseventhVar->value) - : $sixtyseventhVar->value; - $ov28Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyseventh_ov'); - $ok28Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyseventh_ok'); - $context->builder->branchIf($ov28, $ov28Block, $ok28Block); - - $context->builder->positionAtEnd($ov28Block); - $sixtyseventhF28 = $context->builder->load($sixtyseventhVar->longArithOverflowDoubleSlot); - $nF28 = $context->builder->siToFp($n, $f64); - $sixtyeighthF28 = $context->builder->fmul($sixtyseventhF28, $nF28); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyeighthF28 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok28Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtyseventhLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - + if (JitPowIntegerEmitExponents50to69::tryEmit($context, $slotPtr, $base, $exp, $expFold)) { return; } - if ('sixtyninth' === $expFold) { - // n^69 = sixtyeighth*n; overflow arms +1 ×nF vs **68. - // tenth=fifth*fifth, twentieth=tenth*tenth, - // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, - // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n… (sixtyseventh×n). - // Overflow arms finish in float with one extra ×nF vs **68. - $baseL = JitLongArg::lower($context, $base, 'pow() base'); - $i64 = $context->getTypeFromString('int64'); - $f64 = $context->getTypeFromString('double'); - $n = $context->builder->intCast($baseL, $i64); - $sqVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $n, - $n - ); - $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); - if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sq)'); - } - $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind - ? $context->builder->load($sqVar->value) - : $sqVar->value; - $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sq_ov'); - $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sq_ok'); - $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyninth_done'); - $context->builder->branchIf($ov1, $ov1Block, $ok1Block); - - $context->builder->positionAtEnd($ov1Block); - $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); - $sq2F = $context->builder->fmul($sqF, $sqF); - $sq4F = $context->builder->fmul($sq2F, $sq2F); - $sq8F = $context->builder->fmul($sq4F, $sq4F); - $twentiethF = $context->builder->fmul($sq8F, $sq2F); - $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); - $fortysecondF = $context->builder->fmul($fortiethF, $sqF); - $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); - $sixtyninthFSq = $context->builder->fmul($fortyfourthF, $sqF); - $sixtyninthFEighth = $context->builder->fmul($sixtyninthFSq, $sqF); - $sixtyninthF = $context->builder->fmul($sixtyninthFEighth, $sqF); - $nF = $context->builder->siToFp($n, $f64); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok1Block); - $cuVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sqLong, - $n - ); - $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); - if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (cu)'); - } - $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind - ? $context->builder->load($cuVar->value) - : $cuVar->value; - $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyninth_cu_ov'); - $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyninth_cu_ok'); - $context->builder->branchIf($ov2, $ov2Block, $ok2Block); - - $context->builder->positionAtEnd($ov2Block); - $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); - $sqF2 = $context->builder->siToFp($sqLong, $f64); - $fifthF = $context->builder->fmul($cuF, $sqF2); - $tenthF2 = $context->builder->fmul($fifthF, $fifthF); - $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); - $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); - $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); - $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); - $sixtyninthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); - $sixtyninthF2Eighth = $context->builder->fmul($sixtyninthF2Sq, $sqF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2Eighth, $sqF2); - $nF2 = $context->builder->siToFp($n, $f64); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF2 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok2Block); - $fifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $cuLong, - $sqLong - ); - $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); - if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fifth)'); - } - $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind - ? $context->builder->load($fifthVar->value) - : $fifthVar->value; - $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fifth_ov'); - $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fifth_ok'); - $context->builder->branchIf($ov3, $ov3Block, $ok3Block); - - $context->builder->positionAtEnd($ov3Block); - $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); - $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); - $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); - $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); - $sqF3 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); - $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); - $sixtyninthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); - $sixtyninthF3Eighth = $context->builder->fmul($sixtyninthF3Sq, $sqF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3Eighth, $sqF3); - $nF3 = $context->builder->siToFp($n, $f64); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF3 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok3Block); - $tenthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fifthLong, - $fifthLong - ); - $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); - if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (tenth)'); - } - $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind - ? $context->builder->load($tenthVar->value) - : $tenthVar->value; - $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyninth_tenth_ov'); - $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyninth_tenth_ok'); - $context->builder->branchIf($ov4, $ov4Block, $ok4Block); - - $context->builder->positionAtEnd($ov4Block); - $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); - $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); - $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); - $sqF4 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); - $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); - $sixtyninthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); - $sixtyninthF4Eighth = $context->builder->fmul($sixtyninthF4Sq, $sqF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4Eighth, $sqF4); - $nF4 = $context->builder->siToFp($n, $f64); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF4 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok4Block); - $twentiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $tenthLong, - $tenthLong - ); - $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); - if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (twentieth)'); - } - $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind - ? $context->builder->load($twentiethVar->value) - : $twentiethVar->value; - $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyninth_twentieth_ov'); - $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyninth_twentieth_ok'); - $context->builder->branchIf($ov5, $ov5Block, $ok5Block); - - $context->builder->positionAtEnd($ov5Block); - $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); - $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); - $sqF5 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); - $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); - $sixtyninthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); - $sixtyninthF5Eighth = $context->builder->fmul($sixtyninthF5Sq, $sqF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5Eighth, $sqF5); - $nF5 = $context->builder->siToFp($n, $f64); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF5 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok5Block); - $fortiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $twentiethLong, - $twentiethLong - ); - $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); - if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fortieth)'); - } - $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind - ? $context->builder->load($fortiethVar->value) - : $fortiethVar->value; - $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortieth_ov'); - $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortieth_ok'); - $context->builder->branchIf($ov6, $ov6Block, $ok6Block); - - $context->builder->positionAtEnd($ov6Block); - $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); - $sqF6 = $context->builder->siToFp($sqLong, $f64); - $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); - $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); - $sixtyninthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); - $sixtyninthF6Eighth = $context->builder->fmul($sixtyninthF6Sq, $sqF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6Eighth, $sqF6); - $nF6 = $context->builder->siToFp($n, $f64); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF6 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok6Block); - $fortysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortiethLong, - $sqLong - ); - $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); - if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fortysecond)'); - } - $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind - ? $context->builder->load($fortysecondVar->value) - : $fortysecondVar->value; - $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysecond_ov'); - $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysecond_ok'); - $context->builder->branchIf($ov7, $ov7Block, $ok7Block); - - $context->builder->positionAtEnd($ov7Block); - $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); - $sqF7 = $context->builder->siToFp($sqLong, $f64); - $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); - $sixtyninthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); - $sixtyninthF7Eighth = $context->builder->fmul($sixtyninthF7Sq, $sqF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7Eighth, $sqF7); - $nF7 = $context->builder->siToFp($n, $f64); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF7 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok7Block); - $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysecondLong, - $sqLong - ); - $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); - if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fortyfourth)'); - } - $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind - ? $context->builder->load($fortyfourthVar->value) - : $fortyfourthVar->value; - $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyfourth_ov'); - $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyfourth_ok'); - $context->builder->branchIf($ov8, $ov8Block, $ok8Block); - - $context->builder->positionAtEnd($ov8Block); - $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); - $sqF8 = $context->builder->siToFp($sqLong, $f64); - $sixtyninthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); - $sixtyninthF8Eighth = $context->builder->fmul($sixtyninthF8Sq, $sqF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8Eighth, $sqF8); - $nF8 = $context->builder->siToFp($n, $f64); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF8 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok8Block); - $fortysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyfourthLong, - $sqLong - ); - $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); - if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fortysixth)'); - } - $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind - ? $context->builder->load($fortysixthVar->value) - : $fortysixthVar->value; - $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysixth_ov'); - $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysixth_ok'); - $context->builder->branchIf($ov9, $ov9Block, $ok9Block); - - $context->builder->positionAtEnd($ov9Block); - $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); - $sqF9 = $context->builder->siToFp($sqLong, $f64); - $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); - $sixtyninthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); - $nF9 = $context->builder->siToFp($n, $f64); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF9 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok9Block); - $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortysixthLong, - $sqLong - ); - $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); - if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fortyeighth)'); - } - $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind - ? $context->builder->load($fortyeighthVar->value) - : $fortyeighthVar->value; - $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyeighth_ov'); - $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyeighth_ok'); - $context->builder->branchIf($ov10, $ov10Block, $ok10Block); - - $context->builder->positionAtEnd($ov10Block); - $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); - $sqF10 = $context->builder->siToFp($sqLong, $f64); - $sixtyninthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); - $nF10 = $context->builder->siToFp($n, $f64); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF10 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok10Block); - $fiftiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fortyeighthLong, - $sqLong - ); - $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); - if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftieth)'); - } - $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind - ? $context->builder->load($fiftiethVar->value) - : $fiftiethVar->value; - $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftieth_ov'); - $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftieth_ok'); - $context->builder->branchIf($ov11, $ov11Block, $ok11Block); - - $context->builder->positionAtEnd($ov11Block); - $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); - $nF11 = $context->builder->siToFp($n, $f64); - $sixtyninthF11 = $context->builder->fmul($fiftiethF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF11 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok11Block); - $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftiethLong, - $n - ); - $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); - if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyfirst)'); - } - $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind - ? $context->builder->load($fiftyfirstVar->value) - : $fiftyfirstVar->value; - $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfirst_ov'); - $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfirst_ok'); - $context->builder->branchIf($ov12, $ov12Block, $ok12Block); - - $context->builder->positionAtEnd($ov12Block); - $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); - $nF12 = $context->builder->siToFp($n, $f64); - $sixtyninthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF12 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok12Block); - $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfirstLong, - $n - ); - $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); - if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftysecond)'); - } - $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind - ? $context->builder->load($fiftysecondVar->value) - : $fiftysecondVar->value; - $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysecond_ov'); - $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysecond_ok'); - $context->builder->branchIf($ov13, $ov13Block, $ok13Block); - - $context->builder->positionAtEnd($ov13Block); - $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); - $nF13 = $context->builder->siToFp($n, $f64); - $sixtyninthF13 = $context->builder->fmul($fiftysecondF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF13 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok13Block); - $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysecondLong, - $n - ); - $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); - if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftythird)'); - } - $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind - ? $context->builder->load($fiftythirdVar->value) - : $fiftythirdVar->value; - $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftythird_ov'); - $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftythird_ok'); - $context->builder->branchIf($ov14, $ov14Block, $ok14Block); - - $context->builder->positionAtEnd($ov14Block); - $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); - $nF14 = $context->builder->siToFp($n, $f64); - $sixtyninthF14 = $context->builder->fmul($fiftythirdF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF14 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok14Block); - $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftythirdLong, - $n - ); - $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); - if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyfourth)'); - } - $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind - ? $context->builder->load($fiftyfourthVar->value) - : $fiftyfourthVar->value; - $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfourth_ov'); - $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfourth_ok'); - $context->builder->branchIf($ov15, $ov15Block, $ok15Block); - - $context->builder->positionAtEnd($ov15Block); - $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); - $nF15 = $context->builder->siToFp($n, $f64); - $sixtyninthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF15 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok15Block); - $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfourthLong, - $n - ); - $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); - if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyfifth)'); - } - $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind - ? $context->builder->load($fiftyfifthVar->value) - : $fiftyfifthVar->value; - $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfifth_ov'); - $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfifth_ok'); - $context->builder->branchIf($ov16, $ov16Block, $ok16Block); - $context->builder->positionAtEnd($ov16Block); - $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); - $nF16 = $context->builder->siToFp($n, $f64); - $sixtyninthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF16 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok16Block); - $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyfifthLong, - $n - ); - $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); - if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftysixth)'); - } - $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind - ? $context->builder->load($fiftysixthVar->value) - : $fiftysixthVar->value; - $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysixth_ov'); - $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysixth_ok'); - $context->builder->branchIf($ov17, $ov17Block, $ok17Block); - - $context->builder->positionAtEnd($ov17Block); - $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); - $nF17 = $context->builder->siToFp($n, $f64); - $sixtyninthF17 = $context->builder->fmul($fiftysixthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF17 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok17Block); - $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftysixthLong, - $n - ); - $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); - if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyseventh)'); - } - $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind - ? $context->builder->load($fiftyseventhVar->value) - : $fiftyseventhVar->value; - $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyseventh_ov'); - $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyseventh_ok'); - $context->builder->branchIf($ov18, $ov18Block, $ok18Block); - - $context->builder->positionAtEnd($ov18Block); - $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); - $nF18 = $context->builder->siToFp($n, $f64); - $sixtyninthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF18 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok18Block); - $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyseventhLong, - $n - ); - $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); - if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyeighth)'); - } - $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind - ? $context->builder->load($fiftyeighthVar->value) - : $fiftyeighthVar->value; - $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyeighth_ov'); - $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyeighth_ok'); - $context->builder->branchIf($ov19, $ov19Block, $ok19Block); - - $context->builder->positionAtEnd($ov19Block); - $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); - $nF19 = $context->builder->siToFp($n, $f64); - $sixtyninthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF19 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok19Block); - $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyeighthLong, - $n - ); - $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); - if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyninth)'); - } - $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind - ? $context->builder->load($fiftyninthVar->value) - : $fiftyninthVar->value; - $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyninth_ov'); - $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyninth_ok'); - $context->builder->branchIf($ov20, $ov20Block, $ok20Block); - - $context->builder->positionAtEnd($ov20Block); - $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); - $nF20 = $context->builder->siToFp($n, $f64); - $sixtyninthF20 = $context->builder->fmul($fiftyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF20 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok20Block); - $sixtiethVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $fiftyninthLong, - $n - ); - $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); - if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtieth)'); - } - $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind - ? $context->builder->load($sixtiethVar->value) - : $sixtiethVar->value; - $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtieth_ov'); - $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtieth_ok'); - $context->builder->branchIf($ov21, $ov21Block, $ok21Block); - - $context->builder->positionAtEnd($ov21Block); - $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); - $nF21 = $context->builder->siToFp($n, $f64); - $sixtyninthF21 = $context->builder->fmul($sixtiethF21, $nF21); - $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); - $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); - $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); - $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); - $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); - $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); - $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF21 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok21Block); - $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtiethLong, - $n - ); - $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); - if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyfirst)'); - } - $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind - ? $context->builder->load($sixtyfirstVar->value) - : $sixtyfirstVar->value; - $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfirst_ov'); - $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfirst_ok'); - $context->builder->branchIf($ov22, $ov22Block, $ok22Block); - - $context->builder->positionAtEnd($ov22Block); - $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); - $nF22 = $context->builder->siToFp($n, $f64); - $sixtyninthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); - $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); - $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); - $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); - $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); - $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); - $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF22 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok22Block); - $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfirstLong, - $n - ); - $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); - if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtysecond)'); - } - $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind - ? $context->builder->load($sixtysecondVar->value) - : $sixtysecondVar->value; - $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysecond_ov'); - $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysecond_ok'); - $context->builder->branchIf($ov23, $ov23Block, $ok23Block); - - $context->builder->positionAtEnd($ov23Block); - $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); - $nF23 = $context->builder->siToFp($n, $f64); - $sixtyninthF23 = $context->builder->fmul($sixtysecondF23, $nF23); - $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); - $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); - $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); - $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); - $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF23 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok23Block); - $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysecondLong, - $n - ); - $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); - if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtythird)'); - } - $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind - ? $context->builder->load($sixtythirdVar->value) - : $sixtythirdVar->value; - $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtythird_ov'); - $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtythird_ok'); - $context->builder->branchIf($ov24, $ov24Block, $ok24Block); - - $context->builder->positionAtEnd($ov24Block); - $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); - $nF24 = $context->builder->siToFp($n, $f64); - $sixtyninthF24 = $context->builder->fmul($sixtythirdF24, $nF24); - $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); - $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); - $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); - $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF24 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok24Block); - $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtythirdLong, - $n - ); - $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); - if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyfourth)'); - } - $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind - ? $context->builder->load($sixtyfourthVar->value) - : $sixtyfourthVar->value; - $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfourth_ov'); - $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfourth_ok'); - $context->builder->branchIf($ov25, $ov25Block, $ok25Block); - - $context->builder->positionAtEnd($ov25Block); - $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); - $nF25 = $context->builder->siToFp($n, $f64); - $sixtyninthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); - $sixtyninthF25 = $context->builder->fmul($sixtyninthF25, $nF25); - $sixtyninthF25 = $context->builder->fmul($sixtyninthF25, $nF25); - $sixtyninthF25 = $context->builder->fmul($sixtyninthF25, $nF25); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF25 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok25Block); - $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfourthLong, - $n - ); - $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); - if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyfifth)'); - } - $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind - ? $context->builder->load($sixtyfifthVar->value) - : $sixtyfifthVar->value; - $ov26Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfifth_ov'); - $ok26Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfifth_ok'); - $context->builder->branchIf($ov26, $ov26Block, $ok26Block); - - $context->builder->positionAtEnd($ov26Block); - $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); - $nF26 = $context->builder->siToFp($n, $f64); - $sixtyninthF26 = $context->builder->fmul($sixtyfifthF26, $nF26); - $sixtyninthF26 = $context->builder->fmul($sixtyninthF26, $nF26); - $sixtyninthF26 = $context->builder->fmul($sixtyninthF26, $nF26); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF26 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok26Block); - $sixtysixthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyfifthLong, - $n - ); - $ov27 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysixthVar->longArithOverflowFlag); - if (null === $ov27 || null === $sixtysixthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtysixth)'); - } - $sixtysixthLong = JITVariable::KIND_VARIABLE === $sixtysixthVar->kind - ? $context->builder->load($sixtysixthVar->value) - : $sixtysixthVar->value; - $ov27Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysixth_ov'); - $ok27Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysixth_ok'); - $context->builder->branchIf($ov27, $ov27Block, $ok27Block); - - $context->builder->positionAtEnd($ov27Block); - $sixtysixthF27 = $context->builder->load($sixtysixthVar->longArithOverflowDoubleSlot); - $nF27 = $context->builder->siToFp($n, $f64); - $sixtyninthF27 = $context->builder->fmul($sixtysixthF27, $nF27); - $sixtyninthF27 = $context->builder->fmul($sixtyninthF27, $nF27); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF27 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok27Block); - $sixtyseventhVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtysixthLong, - $n - ); - $ov28 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyseventhVar->longArithOverflowFlag); - if (null === $ov28 || null === $sixtyseventhVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyseventh)'); - } - $sixtyseventhLong = JITVariable::KIND_VARIABLE === $sixtyseventhVar->kind - ? $context->builder->load($sixtyseventhVar->value) - : $sixtyseventhVar->value; - $ov28Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyseventh_ov'); - $ok28Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyseventh_ok'); - $context->builder->branchIf($ov28, $ov28Block, $ok28Block); - - $context->builder->positionAtEnd($ov28Block); - $sixtyseventhF28 = $context->builder->load($sixtyseventhVar->longArithOverflowDoubleSlot); - $nF28 = $context->builder->siToFp($n, $f64); - $sixtyninthF28 = $context->builder->fmul($sixtyseventhF28, $nF28); - $sixtyninthF28 = $context->builder->fmul($sixtyninthF28, $nF28); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF28 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok28Block); - $sixtyeighthVar = JitLongArithOverflow::binaryNativeLong( - $context, - OpCode::TYPE_MUL, - $sixtyseventhLong, - $n - ); - $ov29 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyeighthVar->longArithOverflowFlag); - if (null === $ov29 || null === $sixtyeighthVar->longArithOverflowDoubleSlot) { - throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyeighth)'); - } - $sixtyeighthLong = JITVariable::KIND_VARIABLE === $sixtyeighthVar->kind - ? $context->builder->load($sixtyeighthVar->value) - : $sixtyeighthVar->value; - $ov29Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyeighth_ov'); - $ok29Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyeighth_ok'); - $context->builder->branchIf($ov29, $ov29Block, $ok29Block); - - $context->builder->positionAtEnd($ov29Block); - $sixtyeighthF29 = $context->builder->load($sixtyeighthVar->longArithOverflowDoubleSlot); - $nF29 = $context->builder->siToFp($n, $f64); - $sixtyninthF29 = $context->builder->fmul($sixtyeighthF29, $nF29); - $context->builder->call( - $context->lookupFunction('__value__writeDouble'), - $slotPtr, - $sixtyninthF29 - ); - JitValueBox::publishAfterWrite($context, $slotPtr); - $context->builder->branch($doneBlock); - - $context->builder->positionAtEnd($ok29Block); - JitLongArithOverflow::writeBoxedBinary( - $context, - OpCode::TYPE_MUL, - $sixtyeighthLong, - $n, - $slotPtr - ); - $context->builder->branch($doneBlock); - - - $context->builder->positionAtEnd($doneBlock); - - return; - } if (JitPowIntegerEmitMid::tryEmitIntegerPowViaMathFpow( $context, $slotPtr, diff --git a/ext/standard/JitPowIntegerEmitExponents50to69.php b/ext/standard/JitPowIntegerEmitExponents50to69.php new file mode 100644 index 0000000000..5377233eef --- /dev/null +++ b/ext/standard/JitPowIntegerEmitExponents50to69.php @@ -0,0 +1,16374 @@ +getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftieth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftieth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftieth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftiethFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftiethFEighth = $context->builder->fmul($fiftiethFSq, $sqF); + $fiftiethF = $context->builder->fmul($fiftiethFEighth, $sqF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftieth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftieth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftiethF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftiethF2Eighth = $context->builder->fmul($fiftiethF2Sq, $sqF2); + $fiftiethF2 = $context->builder->fmul($fiftiethF2Eighth, $sqF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftieth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftieth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftiethF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftiethF3Eighth = $context->builder->fmul($fiftiethF3Sq, $sqF3); + $fiftiethF3 = $context->builder->fmul($fiftiethF3Eighth, $sqF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftieth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftieth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftiethF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftiethF4Eighth = $context->builder->fmul($fiftiethF4Sq, $sqF4); + $fiftiethF4 = $context->builder->fmul($fiftiethF4Eighth, $sqF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftieth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftieth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftiethF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftiethF5Eighth = $context->builder->fmul($fiftiethF5Sq, $sqF5); + $fiftiethF5 = $context->builder->fmul($fiftiethF5Eighth, $sqF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftiethF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftiethF6Eighth = $context->builder->fmul($fiftiethF6Sq, $sqF6); + $fiftiethF6 = $context->builder->fmul($fiftiethF6Eighth, $sqF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftiethF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftiethF7Eighth = $context->builder->fmul($fiftiethF7Sq, $sqF7); + $fiftiethF7 = $context->builder->fmul($fiftiethF7Eighth, $sqF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftiethF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftiethF8Eighth = $context->builder->fmul($fiftiethF8Sq, $sqF8); + $fiftiethF8 = $context->builder->fmul($fiftiethF8Eighth, $sqF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftiethF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **50 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftieth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftiethF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftiethF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('fiftyfirst' === $expFold) { + // n^51 = fiftieth*n = fortyeighth*sq*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n. + // Overflow arms finish in float (sqF^25*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF, + // fortyfourthF*sqF*sqF*sqF*nF, fortysixthF*sqF*sqF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyfirst_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftyfirstFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftyfirstFEighth = $context->builder->fmul($fiftyfirstFSq, $sqF); + $fiftyfirstF = $context->builder->fmul($fiftyfirstFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftyfirstF = $context->builder->fmul($fiftyfirstF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftyfirstF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftyfirstF2Eighth = $context->builder->fmul($fiftyfirstF2Sq, $sqF2); + $fiftyfirstF2 = $context->builder->fmul($fiftyfirstF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftyfirstF2 = $context->builder->fmul($fiftyfirstF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftyfirstF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftyfirstF3Eighth = $context->builder->fmul($fiftyfirstF3Sq, $sqF3); + $fiftyfirstF3 = $context->builder->fmul($fiftyfirstF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftyfirstF3 = $context->builder->fmul($fiftyfirstF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftyfirstF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftyfirstF4Eighth = $context->builder->fmul($fiftyfirstF4Sq, $sqF4); + $fiftyfirstF4 = $context->builder->fmul($fiftyfirstF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftyfirstF4 = $context->builder->fmul($fiftyfirstF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftyfirstF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftyfirstF5Eighth = $context->builder->fmul($fiftyfirstF5Sq, $sqF5); + $fiftyfirstF5 = $context->builder->fmul($fiftyfirstF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftyfirstF5 = $context->builder->fmul($fiftyfirstF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftyfirstF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftyfirstF6Eighth = $context->builder->fmul($fiftyfirstF6Sq, $sqF6); + $fiftyfirstF6 = $context->builder->fmul($fiftyfirstF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftyfirstF6 = $context->builder->fmul($fiftyfirstF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftyfirstF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftyfirstF7Eighth = $context->builder->fmul($fiftyfirstF7Sq, $sqF7); + $fiftyfirstF7 = $context->builder->fmul($fiftyfirstF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftyfirstF7 = $context->builder->fmul($fiftyfirstF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftyfirstF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftyfirstF8Eighth = $context->builder->fmul($fiftyfirstF8Sq, $sqF8); + $fiftyfirstF8 = $context->builder->fmul($fiftyfirstF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftyfirstF8 = $context->builder->fmul($fiftyfirstF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftyfirstF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftyfirstF9 = $context->builder->fmul($fiftyfirstF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftyfirstF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftyfirstF10 = $context->builder->fmul($fiftyfirstF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **51 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyfirst_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftyfirstF11 = $context->builder->fmul($fiftiethF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfirstF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('fiftysecond' === $expFold) { + // n^52 = fiftyfirst*n = fortyeighth*sq*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n. + // Overflow arms finish in float (sqF^25*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF, fortysixthF*sqF*sqF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftysecond_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftysecond_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftysecond_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftysecondFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftysecondFEighth = $context->builder->fmul($fiftysecondFSq, $sqF); + $fiftysecondF = $context->builder->fmul($fiftysecondFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftysecondF = $context->builder->fmul($fiftysecondF, $nF); + $fiftysecondF = $context->builder->fmul($fiftysecondF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftysecond_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftysecond_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftysecondF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftysecondF2Eighth = $context->builder->fmul($fiftysecondF2Sq, $sqF2); + $fiftysecondF2 = $context->builder->fmul($fiftysecondF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftysecondF2 = $context->builder->fmul($fiftysecondF2, $nF2); + $fiftysecondF2 = $context->builder->fmul($fiftysecondF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftysecondF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftysecondF3Eighth = $context->builder->fmul($fiftysecondF3Sq, $sqF3); + $fiftysecondF3 = $context->builder->fmul($fiftysecondF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftysecondF3 = $context->builder->fmul($fiftysecondF3, $nF3); + $fiftysecondF3 = $context->builder->fmul($fiftysecondF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftysecond_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftysecond_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftysecondF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftysecondF4Eighth = $context->builder->fmul($fiftysecondF4Sq, $sqF4); + $fiftysecondF4 = $context->builder->fmul($fiftysecondF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftysecondF4 = $context->builder->fmul($fiftysecondF4, $nF4); + $fiftysecondF4 = $context->builder->fmul($fiftysecondF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftysecond_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftysecond_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftysecondF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftysecondF5Eighth = $context->builder->fmul($fiftysecondF5Sq, $sqF5); + $fiftysecondF5 = $context->builder->fmul($fiftysecondF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftysecondF5 = $context->builder->fmul($fiftysecondF5, $nF5); + $fiftysecondF5 = $context->builder->fmul($fiftysecondF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftysecondF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftysecondF6Eighth = $context->builder->fmul($fiftysecondF6Sq, $sqF6); + $fiftysecondF6 = $context->builder->fmul($fiftysecondF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftysecondF6 = $context->builder->fmul($fiftysecondF6, $nF6); + $fiftysecondF6 = $context->builder->fmul($fiftysecondF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftysecondF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftysecondF7Eighth = $context->builder->fmul($fiftysecondF7Sq, $sqF7); + $fiftysecondF7 = $context->builder->fmul($fiftysecondF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftysecondF7 = $context->builder->fmul($fiftysecondF7, $nF7); + $fiftysecondF7 = $context->builder->fmul($fiftysecondF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftysecondF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftysecondF8Eighth = $context->builder->fmul($fiftysecondF8Sq, $sqF8); + $fiftysecondF8 = $context->builder->fmul($fiftysecondF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftysecondF8 = $context->builder->fmul($fiftysecondF8, $nF8); + $fiftysecondF8 = $context->builder->fmul($fiftysecondF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftysecondF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftysecondF9 = $context->builder->fmul($fiftysecondF9, $nF9); + $fiftysecondF9 = $context->builder->fmul($fiftysecondF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftysecondF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftysecondF10 = $context->builder->fmul($fiftysecondF10, $nF10); + $fiftysecondF10 = $context->builder->fmul($fiftysecondF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftysecondF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftysecondF11 = $context->builder->fmul($fiftysecondF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **52 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftysecond_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftysecondF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysecondF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('fiftythird' === $expFold) { + // n^53 = fiftysecond*n = fortyeighth*sq*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftythird_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftythird_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftythird_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftythirdFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftythirdFEighth = $context->builder->fmul($fiftythirdFSq, $sqF); + $fiftythirdF = $context->builder->fmul($fiftythirdFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftythirdF = $context->builder->fmul($fiftythirdF, $nF); + $fiftythirdF = $context->builder->fmul($fiftythirdF, $nF); + $fiftythirdF = $context->builder->fmul($fiftythirdF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftythird_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftythird_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftythirdF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftythirdF2Eighth = $context->builder->fmul($fiftythirdF2Sq, $sqF2); + $fiftythirdF2 = $context->builder->fmul($fiftythirdF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftythirdF2 = $context->builder->fmul($fiftythirdF2, $nF2); + $fiftythirdF2 = $context->builder->fmul($fiftythirdF2, $nF2); + $fiftythirdF2 = $context->builder->fmul($fiftythirdF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftythird_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftythird_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftythirdF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftythirdF3Eighth = $context->builder->fmul($fiftythirdF3Sq, $sqF3); + $fiftythirdF3 = $context->builder->fmul($fiftythirdF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftythirdF3 = $context->builder->fmul($fiftythirdF3, $nF3); + $fiftythirdF3 = $context->builder->fmul($fiftythirdF3, $nF3); + $fiftythirdF3 = $context->builder->fmul($fiftythirdF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftythird_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftythird_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftythirdF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftythirdF4Eighth = $context->builder->fmul($fiftythirdF4Sq, $sqF4); + $fiftythirdF4 = $context->builder->fmul($fiftythirdF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftythirdF4 = $context->builder->fmul($fiftythirdF4, $nF4); + $fiftythirdF4 = $context->builder->fmul($fiftythirdF4, $nF4); + $fiftythirdF4 = $context->builder->fmul($fiftythirdF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftythird_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftythird_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftythirdF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftythirdF5Eighth = $context->builder->fmul($fiftythirdF5Sq, $sqF5); + $fiftythirdF5 = $context->builder->fmul($fiftythirdF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftythirdF5 = $context->builder->fmul($fiftythirdF5, $nF5); + $fiftythirdF5 = $context->builder->fmul($fiftythirdF5, $nF5); + $fiftythirdF5 = $context->builder->fmul($fiftythirdF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftythirdF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftythirdF6Eighth = $context->builder->fmul($fiftythirdF6Sq, $sqF6); + $fiftythirdF6 = $context->builder->fmul($fiftythirdF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftythirdF6 = $context->builder->fmul($fiftythirdF6, $nF6); + $fiftythirdF6 = $context->builder->fmul($fiftythirdF6, $nF6); + $fiftythirdF6 = $context->builder->fmul($fiftythirdF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftythirdF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftythirdF7Eighth = $context->builder->fmul($fiftythirdF7Sq, $sqF7); + $fiftythirdF7 = $context->builder->fmul($fiftythirdF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftythirdF7 = $context->builder->fmul($fiftythirdF7, $nF7); + $fiftythirdF7 = $context->builder->fmul($fiftythirdF7, $nF7); + $fiftythirdF7 = $context->builder->fmul($fiftythirdF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftythirdF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftythirdF8Eighth = $context->builder->fmul($fiftythirdF8Sq, $sqF8); + $fiftythirdF8 = $context->builder->fmul($fiftythirdF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftythirdF8 = $context->builder->fmul($fiftythirdF8, $nF8); + $fiftythirdF8 = $context->builder->fmul($fiftythirdF8, $nF8); + $fiftythirdF8 = $context->builder->fmul($fiftythirdF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftythirdF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftythirdF9 = $context->builder->fmul($fiftythirdF9, $nF9); + $fiftythirdF9 = $context->builder->fmul($fiftythirdF9, $nF9); + $fiftythirdF9 = $context->builder->fmul($fiftythirdF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftythird_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftythirdF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftythirdF10 = $context->builder->fmul($fiftythirdF10, $nF10); + $fiftythirdF10 = $context->builder->fmul($fiftythirdF10, $nF10); + $fiftythirdF10 = $context->builder->fmul($fiftythirdF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftythirdF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftythirdF11 = $context->builder->fmul($fiftythirdF11, $nF11); + $fiftythirdF11 = $context->builder->fmul($fiftythirdF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftythirdF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $fiftythirdF12 = $context->builder->fmul($fiftythirdF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **53 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_fiftythird_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $fiftythirdF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftythirdF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('fiftyfourth' === $expFold) { + // n^54 = fiftythird*n = fortyeighth*sq*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyfourth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftyfourthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftyfourthFEighth = $context->builder->fmul($fiftyfourthFSq, $sqF); + $fiftyfourthF = $context->builder->fmul($fiftyfourthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); + $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); + $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); + $fiftyfourthF = $context->builder->fmul($fiftyfourthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftyfourthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftyfourthF2Eighth = $context->builder->fmul($fiftyfourthF2Sq, $sqF2); + $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); + $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); + $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); + $fiftyfourthF2 = $context->builder->fmul($fiftyfourthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftyfourthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftyfourthF3Eighth = $context->builder->fmul($fiftyfourthF3Sq, $sqF3); + $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); + $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); + $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); + $fiftyfourthF3 = $context->builder->fmul($fiftyfourthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftyfourthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftyfourthF4Eighth = $context->builder->fmul($fiftyfourthF4Sq, $sqF4); + $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); + $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); + $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); + $fiftyfourthF4 = $context->builder->fmul($fiftyfourthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftyfourthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftyfourthF5Eighth = $context->builder->fmul($fiftyfourthF5Sq, $sqF5); + $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); + $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); + $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); + $fiftyfourthF5 = $context->builder->fmul($fiftyfourthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftyfourthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftyfourthF6Eighth = $context->builder->fmul($fiftyfourthF6Sq, $sqF6); + $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); + $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); + $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); + $fiftyfourthF6 = $context->builder->fmul($fiftyfourthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftyfourthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftyfourthF7Eighth = $context->builder->fmul($fiftyfourthF7Sq, $sqF7); + $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); + $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); + $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); + $fiftyfourthF7 = $context->builder->fmul($fiftyfourthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftyfourthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftyfourthF8Eighth = $context->builder->fmul($fiftyfourthF8Sq, $sqF8); + $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); + $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); + $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); + $fiftyfourthF8 = $context->builder->fmul($fiftyfourthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftyfourthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); + $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); + $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); + $fiftyfourthF9 = $context->builder->fmul($fiftyfourthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftyfourthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); + $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); + $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); + $fiftyfourthF10 = $context->builder->fmul($fiftyfourthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftyfourthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftyfourthF11 = $context->builder->fmul($fiftyfourthF11, $nF11); + $fiftyfourthF11 = $context->builder->fmul($fiftyfourthF11, $nF11); + $fiftyfourthF11 = $context->builder->fmul($fiftyfourthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftyfourthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $fiftyfourthF12 = $context->builder->fmul($fiftyfourthF12, $nF12); + $fiftyfourthF12 = $context->builder->fmul($fiftyfourthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $fiftyfourthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $fiftyfourthF13 = $context->builder->fmul($fiftyfourthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **54 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyfourth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $fiftyfourthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfourthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + + if ('fiftyfifth' === $expFold) { + // n^55 = fiftyfourth*n = fortyeighth*sq*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyfifth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftyfifthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftyfifthFEighth = $context->builder->fmul($fiftyfifthFSq, $sqF); + $fiftyfifthF = $context->builder->fmul($fiftyfifthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); + $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); + $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); + $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); + $fiftyfifthF = $context->builder->fmul($fiftyfifthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftyfifthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftyfifthF2Eighth = $context->builder->fmul($fiftyfifthF2Sq, $sqF2); + $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); + $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); + $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); + $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); + $fiftyfifthF2 = $context->builder->fmul($fiftyfifthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftyfifthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftyfifthF3Eighth = $context->builder->fmul($fiftyfifthF3Sq, $sqF3); + $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); + $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); + $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); + $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); + $fiftyfifthF3 = $context->builder->fmul($fiftyfifthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftyfifthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftyfifthF4Eighth = $context->builder->fmul($fiftyfifthF4Sq, $sqF4); + $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); + $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); + $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); + $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); + $fiftyfifthF4 = $context->builder->fmul($fiftyfifthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftyfifthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftyfifthF5Eighth = $context->builder->fmul($fiftyfifthF5Sq, $sqF5); + $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); + $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); + $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); + $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); + $fiftyfifthF5 = $context->builder->fmul($fiftyfifthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftyfifthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftyfifthF6Eighth = $context->builder->fmul($fiftyfifthF6Sq, $sqF6); + $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); + $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); + $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); + $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); + $fiftyfifthF6 = $context->builder->fmul($fiftyfifthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftyfifthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftyfifthF7Eighth = $context->builder->fmul($fiftyfifthF7Sq, $sqF7); + $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); + $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); + $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); + $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); + $fiftyfifthF7 = $context->builder->fmul($fiftyfifthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftyfifthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftyfifthF8Eighth = $context->builder->fmul($fiftyfifthF8Sq, $sqF8); + $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); + $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); + $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); + $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); + $fiftyfifthF8 = $context->builder->fmul($fiftyfifthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftyfifthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); + $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); + $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); + $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); + $fiftyfifthF9 = $context->builder->fmul($fiftyfifthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftyfifthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); + $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); + $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); + $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); + $fiftyfifthF10 = $context->builder->fmul($fiftyfifthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftyfifthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); + $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); + $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); + $fiftyfifthF11 = $context->builder->fmul($fiftyfifthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftyfifthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $fiftyfifthF12 = $context->builder->fmul($fiftyfifthF12, $nF12); + $fiftyfifthF12 = $context->builder->fmul($fiftyfifthF12, $nF12); + $fiftyfifthF12 = $context->builder->fmul($fiftyfifthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $fiftyfifthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $fiftyfifthF13 = $context->builder->fmul($fiftyfifthF13, $nF13); + $fiftyfifthF13 = $context->builder->fmul($fiftyfifthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $fiftyfifthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $fiftyfifthF14 = $context->builder->fmul($fiftyfifthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **55 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyfifth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $fiftyfifthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyfifthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('fiftysixth' === $expFold) { + // n^56 = fiftyfifth*n = fortyeighth*sq*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftysixth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftysixth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftysixth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftysixthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftysixthFEighth = $context->builder->fmul($fiftysixthFSq, $sqF); + $fiftysixthF = $context->builder->fmul($fiftysixthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); + $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); + $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); + $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); + $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); + $fiftysixthF = $context->builder->fmul($fiftysixthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftysixth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftysixth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftysixthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftysixthF2Eighth = $context->builder->fmul($fiftysixthF2Sq, $sqF2); + $fiftysixthF2 = $context->builder->fmul($fiftysixthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); + $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); + $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); + $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); + $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); + $fiftysixthF2 = $context->builder->fmul($fiftysixthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftysixthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftysixthF3Eighth = $context->builder->fmul($fiftysixthF3Sq, $sqF3); + $fiftysixthF3 = $context->builder->fmul($fiftysixthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); + $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); + $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); + $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); + $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); + $fiftysixthF3 = $context->builder->fmul($fiftysixthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftysixth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftysixth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftysixthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftysixthF4Eighth = $context->builder->fmul($fiftysixthF4Sq, $sqF4); + $fiftysixthF4 = $context->builder->fmul($fiftysixthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); + $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); + $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); + $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); + $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); + $fiftysixthF4 = $context->builder->fmul($fiftysixthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftysixth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftysixth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftysixthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftysixthF5Eighth = $context->builder->fmul($fiftysixthF5Sq, $sqF5); + $fiftysixthF5 = $context->builder->fmul($fiftysixthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); + $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); + $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); + $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); + $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); + $fiftysixthF5 = $context->builder->fmul($fiftysixthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftysixthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftysixthF6Eighth = $context->builder->fmul($fiftysixthF6Sq, $sqF6); + $fiftysixthF6 = $context->builder->fmul($fiftysixthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); + $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); + $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); + $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); + $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); + $fiftysixthF6 = $context->builder->fmul($fiftysixthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftysixthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftysixthF7Eighth = $context->builder->fmul($fiftysixthF7Sq, $sqF7); + $fiftysixthF7 = $context->builder->fmul($fiftysixthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); + $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); + $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); + $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); + $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); + $fiftysixthF7 = $context->builder->fmul($fiftysixthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftysixthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftysixthF8Eighth = $context->builder->fmul($fiftysixthF8Sq, $sqF8); + $fiftysixthF8 = $context->builder->fmul($fiftysixthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); + $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); + $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); + $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); + $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); + $fiftysixthF8 = $context->builder->fmul($fiftysixthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftysixthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); + $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); + $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); + $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); + $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); + $fiftysixthF9 = $context->builder->fmul($fiftysixthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftysixthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); + $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); + $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); + $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); + $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); + $fiftysixthF10 = $context->builder->fmul($fiftysixthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftysixthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); + $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); + $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); + $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); + $fiftysixthF11 = $context->builder->fmul($fiftysixthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftysixthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); + $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); + $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); + $fiftysixthF12 = $context->builder->fmul($fiftysixthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $fiftysixthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $fiftysixthF13 = $context->builder->fmul($fiftysixthF13, $nF13); + $fiftysixthF13 = $context->builder->fmul($fiftysixthF13, $nF13); + $fiftysixthF13 = $context->builder->fmul($fiftysixthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $fiftysixthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $fiftysixthF14 = $context->builder->fmul($fiftysixthF14, $nF14); + $fiftysixthF14 = $context->builder->fmul($fiftysixthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $fiftysixthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $fiftysixthF15 = $context->builder->fmul($fiftysixthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **56 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_fiftysixth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $fiftysixthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftysixthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('fiftyseventh' === $expFold) { + // n^57 = fiftysixth*n = fortyeighth*sq*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyseventh_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftyseventhFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftyseventhFEighth = $context->builder->fmul($fiftyseventhFSq, $sqF); + $fiftyseventhF = $context->builder->fmul($fiftyseventhFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); + $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); + $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); + $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); + $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); + $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); + $fiftyseventhF = $context->builder->fmul($fiftyseventhF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftyseventhF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftyseventhF2Eighth = $context->builder->fmul($fiftyseventhF2Sq, $sqF2); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); + $fiftyseventhF2 = $context->builder->fmul($fiftyseventhF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftyseventhF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftyseventhF3Eighth = $context->builder->fmul($fiftyseventhF3Sq, $sqF3); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); + $fiftyseventhF3 = $context->builder->fmul($fiftyseventhF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftyseventhF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftyseventhF4Eighth = $context->builder->fmul($fiftyseventhF4Sq, $sqF4); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); + $fiftyseventhF4 = $context->builder->fmul($fiftyseventhF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftyseventhF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftyseventhF5Eighth = $context->builder->fmul($fiftyseventhF5Sq, $sqF5); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); + $fiftyseventhF5 = $context->builder->fmul($fiftyseventhF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftyseventhF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftyseventhF6Eighth = $context->builder->fmul($fiftyseventhF6Sq, $sqF6); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); + $fiftyseventhF6 = $context->builder->fmul($fiftyseventhF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftyseventhF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftyseventhF7Eighth = $context->builder->fmul($fiftyseventhF7Sq, $sqF7); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); + $fiftyseventhF7 = $context->builder->fmul($fiftyseventhF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftyseventhF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftyseventhF8Eighth = $context->builder->fmul($fiftyseventhF8Sq, $sqF8); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); + $fiftyseventhF8 = $context->builder->fmul($fiftyseventhF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftyseventhF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); + $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); + $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); + $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); + $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); + $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); + $fiftyseventhF9 = $context->builder->fmul($fiftyseventhF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftyseventhF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); + $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); + $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); + $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); + $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); + $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); + $fiftyseventhF10 = $context->builder->fmul($fiftyseventhF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftyseventhF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); + $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); + $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); + $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); + $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); + $fiftyseventhF11 = $context->builder->fmul($fiftyseventhF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftyseventhF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); + $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); + $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); + $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); + $fiftyseventhF12 = $context->builder->fmul($fiftyseventhF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $fiftyseventhF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); + $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); + $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); + $fiftyseventhF13 = $context->builder->fmul($fiftyseventhF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $fiftyseventhF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $fiftyseventhF14 = $context->builder->fmul($fiftyseventhF14, $nF14); + $fiftyseventhF14 = $context->builder->fmul($fiftyseventhF14, $nF14); + $fiftyseventhF14 = $context->builder->fmul($fiftyseventhF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $fiftyseventhF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $fiftyseventhF15 = $context->builder->fmul($fiftyseventhF15, $nF15); + $fiftyseventhF15 = $context->builder->fmul($fiftyseventhF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $fiftyseventhF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $fiftyseventhF16 = $context->builder->fmul($fiftyseventhF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **57 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_fiftyseventh_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $fiftyseventhF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyseventhF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('fiftyeighth' === $expFold) { + // n^58 = fiftyseventh*n = fortyeighth*sq*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyeighth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftyeighthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftyeighthFEighth = $context->builder->fmul($fiftyeighthFSq, $sqF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $fiftyeighthF = $context->builder->fmul($fiftyeighthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftyeighthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftyeighthF2Eighth = $context->builder->fmul($fiftyeighthF2Sq, $sqF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $fiftyeighthF2 = $context->builder->fmul($fiftyeighthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftyeighthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftyeighthF3Eighth = $context->builder->fmul($fiftyeighthF3Sq, $sqF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $fiftyeighthF3 = $context->builder->fmul($fiftyeighthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftyeighthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftyeighthF4Eighth = $context->builder->fmul($fiftyeighthF4Sq, $sqF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $fiftyeighthF4 = $context->builder->fmul($fiftyeighthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftyeighthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftyeighthF5Eighth = $context->builder->fmul($fiftyeighthF5Sq, $sqF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $fiftyeighthF5 = $context->builder->fmul($fiftyeighthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftyeighthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftyeighthF6Eighth = $context->builder->fmul($fiftyeighthF6Sq, $sqF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $fiftyeighthF6 = $context->builder->fmul($fiftyeighthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftyeighthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftyeighthF7Eighth = $context->builder->fmul($fiftyeighthF7Sq, $sqF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $fiftyeighthF7 = $context->builder->fmul($fiftyeighthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftyeighthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftyeighthF8Eighth = $context->builder->fmul($fiftyeighthF8Sq, $sqF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $fiftyeighthF8 = $context->builder->fmul($fiftyeighthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftyeighthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $fiftyeighthF9 = $context->builder->fmul($fiftyeighthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftyeighthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $fiftyeighthF10 = $context->builder->fmul($fiftyeighthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftyeighthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); + $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); + $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); + $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); + $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); + $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); + $fiftyeighthF11 = $context->builder->fmul($fiftyeighthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftyeighthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); + $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); + $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); + $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); + $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); + $fiftyeighthF12 = $context->builder->fmul($fiftyeighthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $fiftyeighthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); + $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); + $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); + $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); + $fiftyeighthF13 = $context->builder->fmul($fiftyeighthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $fiftyeighthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); + $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); + $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); + $fiftyeighthF14 = $context->builder->fmul($fiftyeighthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $fiftyeighthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $fiftyeighthF15 = $context->builder->fmul($fiftyeighthF15, $nF15); + $fiftyeighthF15 = $context->builder->fmul($fiftyeighthF15, $nF15); + $fiftyeighthF15 = $context->builder->fmul($fiftyeighthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $fiftyeighthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $fiftyeighthF16 = $context->builder->fmul($fiftyeighthF16, $nF16); + $fiftyeighthF16 = $context->builder->fmul($fiftyeighthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $fiftyeighthF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $fiftyeighthF17 = $context->builder->fmul($fiftyeighthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **58 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_fiftyeighth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $fiftyeighthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyeighthF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('fiftyninth' === $expFold) { + // n^59 = fiftyeighth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_fiftyninth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_fiftyninth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_fiftyninth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $fiftyninthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $fiftyninthFEighth = $context->builder->fmul($fiftyninthFSq, $sqF); + $fiftyninthF = $context->builder->fmul($fiftyninthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $fiftyninthF = $context->builder->fmul($fiftyninthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_fiftyninth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_fiftyninth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $fiftyninthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $fiftyninthF2Eighth = $context->builder->fmul($fiftyninthF2Sq, $sqF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $fiftyninthF2 = $context->builder->fmul($fiftyninthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $fiftyninthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $fiftyninthF3Eighth = $context->builder->fmul($fiftyninthF3Sq, $sqF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $fiftyninthF3 = $context->builder->fmul($fiftyninthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_fiftyninth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_fiftyninth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $fiftyninthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $fiftyninthF4Eighth = $context->builder->fmul($fiftyninthF4Sq, $sqF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $fiftyninthF4 = $context->builder->fmul($fiftyninthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_fiftyninth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_fiftyninth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $fiftyninthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $fiftyninthF5Eighth = $context->builder->fmul($fiftyninthF5Sq, $sqF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $fiftyninthF5 = $context->builder->fmul($fiftyninthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $fiftyninthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $fiftyninthF6Eighth = $context->builder->fmul($fiftyninthF6Sq, $sqF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $fiftyninthF6 = $context->builder->fmul($fiftyninthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $fiftyninthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $fiftyninthF7Eighth = $context->builder->fmul($fiftyninthF7Sq, $sqF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $fiftyninthF7 = $context->builder->fmul($fiftyninthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $fiftyninthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $fiftyninthF8Eighth = $context->builder->fmul($fiftyninthF8Sq, $sqF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $fiftyninthF8 = $context->builder->fmul($fiftyninthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $fiftyninthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $fiftyninthF9 = $context->builder->fmul($fiftyninthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $fiftyninthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $fiftyninthF10 = $context->builder->fmul($fiftyninthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $fiftyninthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $fiftyninthF11 = $context->builder->fmul($fiftyninthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $fiftyninthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); + $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); + $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); + $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); + $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); + $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); + $fiftyninthF12 = $context->builder->fmul($fiftyninthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $fiftyninthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); + $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); + $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); + $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); + $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); + $fiftyninthF13 = $context->builder->fmul($fiftyninthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $fiftyninthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); + $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); + $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); + $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); + $fiftyninthF14 = $context->builder->fmul($fiftyninthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $fiftyninthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); + $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); + $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); + $fiftyninthF15 = $context->builder->fmul($fiftyninthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $fiftyninthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $fiftyninthF16 = $context->builder->fmul($fiftyninthF16, $nF16); + $fiftyninthF16 = $context->builder->fmul($fiftyninthF16, $nF16); + $fiftyninthF16 = $context->builder->fmul($fiftyninthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $fiftyninthF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $fiftyninthF17 = $context->builder->fmul($fiftyninthF17, $nF17); + $fiftyninthF17 = $context->builder->fmul($fiftyninthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $fiftyninthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $fiftyninthF18 = $context->builder->fmul($fiftyninthF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **59 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_fiftyninth_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $fiftyninthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $fiftyninthF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('sixtieth' === $expFold) { + // n^60 = fiftyninth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtieth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtieth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtieth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtiethFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtiethFEighth = $context->builder->fmul($sixtiethFSq, $sqF); + $sixtiethF = $context->builder->fmul($sixtiethFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $sixtiethF = $context->builder->fmul($sixtiethF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtieth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtieth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtiethF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtiethF2Eighth = $context->builder->fmul($sixtiethF2Sq, $sqF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $sixtiethF2 = $context->builder->fmul($sixtiethF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtieth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtieth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtiethF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtiethF3Eighth = $context->builder->fmul($sixtiethF3Sq, $sqF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $sixtiethF3 = $context->builder->fmul($sixtiethF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtieth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtieth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtiethF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtiethF4Eighth = $context->builder->fmul($sixtiethF4Sq, $sqF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $sixtiethF4 = $context->builder->fmul($sixtiethF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtieth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtieth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtiethF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtiethF5Eighth = $context->builder->fmul($sixtiethF5Sq, $sqF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $sixtiethF5 = $context->builder->fmul($sixtiethF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtiethF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtiethF6Eighth = $context->builder->fmul($sixtiethF6Sq, $sqF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $sixtiethF6 = $context->builder->fmul($sixtiethF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtiethF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtiethF7Eighth = $context->builder->fmul($sixtiethF7Sq, $sqF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $sixtiethF7 = $context->builder->fmul($sixtiethF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtiethF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtiethF8Eighth = $context->builder->fmul($sixtiethF8Sq, $sqF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $sixtiethF8 = $context->builder->fmul($sixtiethF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtiethF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $sixtiethF9 = $context->builder->fmul($sixtiethF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtieth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtiethF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $sixtiethF10 = $context->builder->fmul($sixtiethF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtiethF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $sixtiethF11 = $context->builder->fmul($sixtiethF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtiethF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $sixtiethF12 = $context->builder->fmul($sixtiethF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtiethF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); + $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); + $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); + $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); + $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); + $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); + $sixtiethF13 = $context->builder->fmul($sixtiethF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtiethF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); + $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); + $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); + $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); + $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); + $sixtiethF14 = $context->builder->fmul($sixtiethF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtiethF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); + $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); + $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); + $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); + $sixtiethF15 = $context->builder->fmul($sixtiethF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtiethF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); + $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); + $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); + $sixtiethF16 = $context->builder->fmul($sixtiethF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtiethF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtiethF17 = $context->builder->fmul($sixtiethF17, $nF17); + $sixtiethF17 = $context->builder->fmul($sixtiethF17, $nF17); + $sixtiethF17 = $context->builder->fmul($sixtiethF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtiethF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtiethF18 = $context->builder->fmul($sixtiethF18, $nF18); + $sixtiethF18 = $context->builder->fmul($sixtiethF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtiethF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtiethF19 = $context->builder->fmul($sixtiethF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **60 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtieth_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtiethF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtiethF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('sixtyfirst' === $expFold) { + // n^61 = sixtieth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyfirst_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtyfirstFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtyfirstFEighth = $context->builder->fmul($sixtyfirstFSq, $sqF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $sixtyfirstF = $context->builder->fmul($sixtyfirstF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtyfirstF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtyfirstF2Eighth = $context->builder->fmul($sixtyfirstF2Sq, $sqF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $sixtyfirstF2 = $context->builder->fmul($sixtyfirstF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtyfirstF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtyfirstF3Eighth = $context->builder->fmul($sixtyfirstF3Sq, $sqF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $sixtyfirstF3 = $context->builder->fmul($sixtyfirstF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtyfirstF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtyfirstF4Eighth = $context->builder->fmul($sixtyfirstF4Sq, $sqF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $sixtyfirstF4 = $context->builder->fmul($sixtyfirstF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtyfirstF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtyfirstF5Eighth = $context->builder->fmul($sixtyfirstF5Sq, $sqF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $sixtyfirstF5 = $context->builder->fmul($sixtyfirstF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtyfirstF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtyfirstF6Eighth = $context->builder->fmul($sixtyfirstF6Sq, $sqF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $sixtyfirstF6 = $context->builder->fmul($sixtyfirstF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtyfirstF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtyfirstF7Eighth = $context->builder->fmul($sixtyfirstF7Sq, $sqF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $sixtyfirstF7 = $context->builder->fmul($sixtyfirstF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtyfirstF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtyfirstF8Eighth = $context->builder->fmul($sixtyfirstF8Sq, $sqF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $sixtyfirstF8 = $context->builder->fmul($sixtyfirstF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtyfirstF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $sixtyfirstF9 = $context->builder->fmul($sixtyfirstF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtyfirstF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $sixtyfirstF10 = $context->builder->fmul($sixtyfirstF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtyfirstF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $sixtyfirstF11 = $context->builder->fmul($sixtyfirstF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtyfirstF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $sixtyfirstF12 = $context->builder->fmul($sixtyfirstF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtyfirstF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $sixtyfirstF13 = $context->builder->fmul($sixtyfirstF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtyfirstF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); + $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); + $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); + $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); + $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); + $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); + $sixtyfirstF14 = $context->builder->fmul($sixtyfirstF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtyfirstF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); + $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); + $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); + $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); + $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); + $sixtyfirstF15 = $context->builder->fmul($sixtyfirstF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtyfirstF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); + $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); + $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); + $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); + $sixtyfirstF16 = $context->builder->fmul($sixtyfirstF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtyfirstF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); + $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); + $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); + $sixtyfirstF17 = $context->builder->fmul($sixtyfirstF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtyfirstF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtyfirstF18 = $context->builder->fmul($sixtyfirstF18, $nF18); + $sixtyfirstF18 = $context->builder->fmul($sixtyfirstF18, $nF18); + $sixtyfirstF18 = $context->builder->fmul($sixtyfirstF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtyfirstF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtyfirstF19 = $context->builder->fmul($sixtyfirstF19, $nF19); + $sixtyfirstF19 = $context->builder->fmul($sixtyfirstF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtyfirstF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtyfirstF20 = $context->builder->fmul($sixtyfirstF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **61 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyfirst_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtyfirstF21 = $context->builder->fmul($sixtiethF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfirstF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('sixtysecond' === $expFold) { + // n^62 = sixtyfirst*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtysecond_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtysecondFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtysecondFEighth = $context->builder->fmul($sixtysecondFSq, $sqF); + $sixtysecondF = $context->builder->fmul($sixtysecondFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $sixtysecondF = $context->builder->fmul($sixtysecondF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtysecond_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtysecond_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtysecondF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtysecondF2Eighth = $context->builder->fmul($sixtysecondF2Sq, $sqF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $sixtysecondF2 = $context->builder->fmul($sixtysecondF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtysecondF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtysecondF3Eighth = $context->builder->fmul($sixtysecondF3Sq, $sqF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $sixtysecondF3 = $context->builder->fmul($sixtysecondF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtysecond_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtysecond_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtysecondF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtysecondF4Eighth = $context->builder->fmul($sixtysecondF4Sq, $sqF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $sixtysecondF4 = $context->builder->fmul($sixtysecondF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtysecond_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtysecond_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtysecondF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtysecondF5Eighth = $context->builder->fmul($sixtysecondF5Sq, $sqF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $sixtysecondF5 = $context->builder->fmul($sixtysecondF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtysecondF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtysecondF6Eighth = $context->builder->fmul($sixtysecondF6Sq, $sqF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $sixtysecondF6 = $context->builder->fmul($sixtysecondF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtysecondF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtysecondF7Eighth = $context->builder->fmul($sixtysecondF7Sq, $sqF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $sixtysecondF7 = $context->builder->fmul($sixtysecondF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtysecondF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtysecondF8Eighth = $context->builder->fmul($sixtysecondF8Sq, $sqF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $sixtysecondF8 = $context->builder->fmul($sixtysecondF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtysecondF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $sixtysecondF9 = $context->builder->fmul($sixtysecondF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtysecondF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $sixtysecondF10 = $context->builder->fmul($sixtysecondF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtysecondF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $sixtysecondF11 = $context->builder->fmul($sixtysecondF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtysecondF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $sixtysecondF12 = $context->builder->fmul($sixtysecondF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtysecondF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $sixtysecondF13 = $context->builder->fmul($sixtysecondF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtysecondF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $sixtysecondF14 = $context->builder->fmul($sixtysecondF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtysecondF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); + $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); + $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); + $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); + $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); + $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); + $sixtysecondF15 = $context->builder->fmul($sixtysecondF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtysecondF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); + $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); + $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); + $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); + $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); + $sixtysecondF16 = $context->builder->fmul($sixtysecondF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtysecondF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); + $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); + $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); + $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); + $sixtysecondF17 = $context->builder->fmul($sixtysecondF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtysecondF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); + $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); + $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); + $sixtysecondF18 = $context->builder->fmul($sixtysecondF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtysecondF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtysecondF19 = $context->builder->fmul($sixtysecondF19, $nF19); + $sixtysecondF19 = $context->builder->fmul($sixtysecondF19, $nF19); + $sixtysecondF19 = $context->builder->fmul($sixtysecondF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtysecond_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtysecondF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtysecondF20 = $context->builder->fmul($sixtysecondF20, $nF20); + $sixtysecondF20 = $context->builder->fmul($sixtysecondF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtysecondF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtysecondF21 = $context->builder->fmul($sixtysecondF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **62 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtysecond_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtysecondF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysecondF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('sixtythird' === $expFold) { + // n^63 = sixtysecond*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtythird_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtythird_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtythird_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtythirdFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtythirdFEighth = $context->builder->fmul($sixtythirdFSq, $sqF); + $sixtythirdF = $context->builder->fmul($sixtythirdFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $sixtythirdF = $context->builder->fmul($sixtythirdF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtythird_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtythird_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtythirdF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtythirdF2Eighth = $context->builder->fmul($sixtythirdF2Sq, $sqF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $sixtythirdF2 = $context->builder->fmul($sixtythirdF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtythird_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtythird_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtythirdF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtythirdF3Eighth = $context->builder->fmul($sixtythirdF3Sq, $sqF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $sixtythirdF3 = $context->builder->fmul($sixtythirdF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtythird_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtythird_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtythirdF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtythirdF4Eighth = $context->builder->fmul($sixtythirdF4Sq, $sqF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $sixtythirdF4 = $context->builder->fmul($sixtythirdF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtythird_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtythird_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtythirdF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtythirdF5Eighth = $context->builder->fmul($sixtythirdF5Sq, $sqF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $sixtythirdF5 = $context->builder->fmul($sixtythirdF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtythirdF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtythirdF6Eighth = $context->builder->fmul($sixtythirdF6Sq, $sqF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $sixtythirdF6 = $context->builder->fmul($sixtythirdF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtythirdF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtythirdF7Eighth = $context->builder->fmul($sixtythirdF7Sq, $sqF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $sixtythirdF7 = $context->builder->fmul($sixtythirdF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtythirdF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtythirdF8Eighth = $context->builder->fmul($sixtythirdF8Sq, $sqF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $sixtythirdF8 = $context->builder->fmul($sixtythirdF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtythirdF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $sixtythirdF9 = $context->builder->fmul($sixtythirdF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtythird_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtythirdF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $sixtythirdF10 = $context->builder->fmul($sixtythirdF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtythirdF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $sixtythirdF11 = $context->builder->fmul($sixtythirdF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtythirdF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $sixtythirdF12 = $context->builder->fmul($sixtythirdF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtythirdF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $sixtythirdF13 = $context->builder->fmul($sixtythirdF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtythirdF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $sixtythirdF14 = $context->builder->fmul($sixtythirdF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtythirdF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $sixtythirdF15 = $context->builder->fmul($sixtythirdF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtythirdF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); + $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); + $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); + $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); + $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); + $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); + $sixtythirdF16 = $context->builder->fmul($sixtythirdF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtythirdF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); + $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); + $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); + $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); + $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); + $sixtythirdF17 = $context->builder->fmul($sixtythirdF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtythirdF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); + $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); + $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); + $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); + $sixtythirdF18 = $context->builder->fmul($sixtythirdF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtythirdF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); + $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); + $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); + $sixtythirdF19 = $context->builder->fmul($sixtythirdF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtythird_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtythirdF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtythirdF20 = $context->builder->fmul($sixtythirdF20, $nF20); + $sixtythirdF20 = $context->builder->fmul($sixtythirdF20, $nF20); + $sixtythirdF20 = $context->builder->fmul($sixtythirdF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtythirdF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtythirdF21 = $context->builder->fmul($sixtythirdF21, $nF21); + $sixtythirdF21 = $context->builder->fmul($sixtythirdF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtythirdF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $sixtythirdF22 = $context->builder->fmul($sixtythirdF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n + ); + $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); + if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **63 expected smul overflow metadata (sixtysecond)'); + } + $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind + ? $context->builder->load($sixtysecondVar->value) + : $sixtysecondVar->value; + $ov23Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtysecond_ov'); + $ok23Block = BasicBlockHelper::append($context, 'pow_sixtythird_sixtysecond_ok'); + $context->builder->branchIf($ov23, $ov23Block, $ok23Block); + + $context->builder->positionAtEnd($ov23Block); + $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); + $nF23 = $context->builder->siToFp($n, $f64); + $sixtythirdF23 = $context->builder->fmul($sixtysecondF23, $nF23); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtythirdF23 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok23Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtysecondLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('sixtyfourth' === $expFold) { + // n^64 = sixtythird*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyfourth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtyfourthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtyfourthFEighth = $context->builder->fmul($sixtyfourthFSq, $sqF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $sixtyfourthF = $context->builder->fmul($sixtyfourthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtyfourthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtyfourthF2Eighth = $context->builder->fmul($sixtyfourthF2Sq, $sqF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $sixtyfourthF2 = $context->builder->fmul($sixtyfourthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtyfourthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtyfourthF3Eighth = $context->builder->fmul($sixtyfourthF3Sq, $sqF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $sixtyfourthF3 = $context->builder->fmul($sixtyfourthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtyfourthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtyfourthF4Eighth = $context->builder->fmul($sixtyfourthF4Sq, $sqF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $sixtyfourthF4 = $context->builder->fmul($sixtyfourthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtyfourthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtyfourthF5Eighth = $context->builder->fmul($sixtyfourthF5Sq, $sqF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $sixtyfourthF5 = $context->builder->fmul($sixtyfourthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtyfourthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtyfourthF6Eighth = $context->builder->fmul($sixtyfourthF6Sq, $sqF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $sixtyfourthF6 = $context->builder->fmul($sixtyfourthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtyfourthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtyfourthF7Eighth = $context->builder->fmul($sixtyfourthF7Sq, $sqF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $sixtyfourthF7 = $context->builder->fmul($sixtyfourthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtyfourthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtyfourthF8Eighth = $context->builder->fmul($sixtyfourthF8Sq, $sqF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $sixtyfourthF8 = $context->builder->fmul($sixtyfourthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtyfourthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $sixtyfourthF9 = $context->builder->fmul($sixtyfourthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtyfourthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $sixtyfourthF10 = $context->builder->fmul($sixtyfourthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtyfourthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $sixtyfourthF11 = $context->builder->fmul($sixtyfourthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtyfourthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $sixtyfourthF12 = $context->builder->fmul($sixtyfourthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtyfourthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $sixtyfourthF13 = $context->builder->fmul($sixtyfourthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtyfourthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $sixtyfourthF14 = $context->builder->fmul($sixtyfourthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtyfourthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $sixtyfourthF15 = $context->builder->fmul($sixtyfourthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtyfourthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $sixtyfourthF16 = $context->builder->fmul($sixtyfourthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtyfourthF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); + $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); + $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); + $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); + $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); + $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); + $sixtyfourthF17 = $context->builder->fmul($sixtyfourthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtyfourthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); + $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); + $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); + $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); + $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); + $sixtyfourthF18 = $context->builder->fmul($sixtyfourthF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtyfourthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); + $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); + $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); + $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); + $sixtyfourthF19 = $context->builder->fmul($sixtyfourthF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtyfourthF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); + $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); + $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); + $sixtyfourthF20 = $context->builder->fmul($sixtyfourthF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtyfourthF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtyfourthF21 = $context->builder->fmul($sixtyfourthF21, $nF21); + $sixtyfourthF21 = $context->builder->fmul($sixtyfourthF21, $nF21); + $sixtyfourthF21 = $context->builder->fmul($sixtyfourthF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtyfourthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $sixtyfourthF22 = $context->builder->fmul($sixtyfourthF22, $nF22); + $sixtyfourthF22 = $context->builder->fmul($sixtyfourthF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n + ); + $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); + if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (sixtysecond)'); + } + $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind + ? $context->builder->load($sixtysecondVar->value) + : $sixtysecondVar->value; + $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtysecond_ov'); + $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtysecond_ok'); + $context->builder->branchIf($ov23, $ov23Block, $ok23Block); + + $context->builder->positionAtEnd($ov23Block); + $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); + $nF23 = $context->builder->siToFp($n, $f64); + $sixtyfourthF23 = $context->builder->fmul($sixtysecondF23, $nF23); + $sixtyfourthF23 = $context->builder->fmul($sixtyfourthF23, $nF23); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF23 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok23Block); + $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysecondLong, + $n + ); + $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); + if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **64 expected smul overflow metadata (sixtythird)'); + } + $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind + ? $context->builder->load($sixtythirdVar->value) + : $sixtythirdVar->value; + $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtythird_ov'); + $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyfourth_sixtythird_ok'); + $context->builder->branchIf($ov24, $ov24Block, $ok24Block); + + $context->builder->positionAtEnd($ov24Block); + $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); + $nF24 = $context->builder->siToFp($n, $f64); + $sixtyfourthF24 = $context->builder->fmul($sixtythirdF24, $nF24); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfourthF24 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok24Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtythirdLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('sixtyfifth' === $expFold) { + // n^65 = sixtyfourth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyfifth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtyfifthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtyfifthFEighth = $context->builder->fmul($sixtyfifthFSq, $sqF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $sixtyfifthF = $context->builder->fmul($sixtyfifthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtyfifthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtyfifthF2Eighth = $context->builder->fmul($sixtyfifthF2Sq, $sqF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $sixtyfifthF2 = $context->builder->fmul($sixtyfifthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtyfifthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtyfifthF3Eighth = $context->builder->fmul($sixtyfifthF3Sq, $sqF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $sixtyfifthF3 = $context->builder->fmul($sixtyfifthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtyfifthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtyfifthF4Eighth = $context->builder->fmul($sixtyfifthF4Sq, $sqF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $sixtyfifthF4 = $context->builder->fmul($sixtyfifthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtyfifthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtyfifthF5Eighth = $context->builder->fmul($sixtyfifthF5Sq, $sqF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $sixtyfifthF5 = $context->builder->fmul($sixtyfifthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtyfifthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtyfifthF6Eighth = $context->builder->fmul($sixtyfifthF6Sq, $sqF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $sixtyfifthF6 = $context->builder->fmul($sixtyfifthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtyfifthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtyfifthF7Eighth = $context->builder->fmul($sixtyfifthF7Sq, $sqF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $sixtyfifthF7 = $context->builder->fmul($sixtyfifthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtyfifthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtyfifthF8Eighth = $context->builder->fmul($sixtyfifthF8Sq, $sqF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $sixtyfifthF8 = $context->builder->fmul($sixtyfifthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtyfifthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $sixtyfifthF9 = $context->builder->fmul($sixtyfifthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtyfifthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $sixtyfifthF10 = $context->builder->fmul($sixtyfifthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtyfifthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $sixtyfifthF11 = $context->builder->fmul($sixtyfifthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtyfifthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $sixtyfifthF12 = $context->builder->fmul($sixtyfifthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtyfifthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $sixtyfifthF13 = $context->builder->fmul($sixtyfifthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtyfifthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $sixtyfifthF14 = $context->builder->fmul($sixtyfifthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtyfifthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $sixtyfifthF15 = $context->builder->fmul($sixtyfifthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtyfifthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $sixtyfifthF16 = $context->builder->fmul($sixtyfifthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtyfifthF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $sixtyfifthF17 = $context->builder->fmul($sixtyfifthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtyfifthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); + $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); + $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); + $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); + $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); + $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); + $sixtyfifthF18 = $context->builder->fmul($sixtyfifthF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtyfifthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); + $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); + $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); + $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); + $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); + $sixtyfifthF19 = $context->builder->fmul($sixtyfifthF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtyfifthF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); + $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); + $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); + $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); + $sixtyfifthF20 = $context->builder->fmul($sixtyfifthF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtyfifthF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); + $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); + $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); + $sixtyfifthF21 = $context->builder->fmul($sixtyfifthF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtyfifthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $sixtyfifthF22 = $context->builder->fmul($sixtyfifthF22, $nF22); + $sixtyfifthF22 = $context->builder->fmul($sixtyfifthF22, $nF22); + $sixtyfifthF22 = $context->builder->fmul($sixtyfifthF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n + ); + $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); + if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (sixtysecond)'); + } + $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind + ? $context->builder->load($sixtysecondVar->value) + : $sixtysecondVar->value; + $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtysecond_ov'); + $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtysecond_ok'); + $context->builder->branchIf($ov23, $ov23Block, $ok23Block); + + $context->builder->positionAtEnd($ov23Block); + $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); + $nF23 = $context->builder->siToFp($n, $f64); + $sixtyfifthF23 = $context->builder->fmul($sixtysecondF23, $nF23); + $sixtyfifthF23 = $context->builder->fmul($sixtyfifthF23, $nF23); + $sixtyfifthF23 = $context->builder->fmul($sixtyfifthF23, $nF23); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF23 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok23Block); + $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysecondLong, + $n + ); + $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); + if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (sixtythird)'); + } + $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind + ? $context->builder->load($sixtythirdVar->value) + : $sixtythirdVar->value; + $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtythird_ov'); + $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtythird_ok'); + $context->builder->branchIf($ov24, $ov24Block, $ok24Block); + + $context->builder->positionAtEnd($ov24Block); + $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); + $nF24 = $context->builder->siToFp($n, $f64); + $sixtyfifthF24 = $context->builder->fmul($sixtythirdF24, $nF24); + $sixtyfifthF24 = $context->builder->fmul($sixtyfifthF24, $nF24); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF24 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok24Block); + $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtythirdLong, + $n + ); + $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); + if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **65 expected smul overflow metadata (sixtyfourth)'); + } + $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind + ? $context->builder->load($sixtyfourthVar->value) + : $sixtyfourthVar->value; + $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfourth_ov'); + $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyfifth_sixtyfourth_ok'); + $context->builder->branchIf($ov25, $ov25Block, $ok25Block); + + $context->builder->positionAtEnd($ov25Block); + $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); + $nF25 = $context->builder->siToFp($n, $f64); + $sixtyfifthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyfifthF25 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok25Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtyfourthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + if ('sixtysixth' === $expFold) { + // n^66 = sixtyfifth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtysixth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtysixthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtysixthFEighth = $context->builder->fmul($sixtysixthFSq, $sqF); + $sixtysixthF = $context->builder->fmul($sixtysixthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $sixtysixthF = $context->builder->fmul($sixtysixthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtysixth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtysixth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtysixthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtysixthF2Eighth = $context->builder->fmul($sixtysixthF2Sq, $sqF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $sixtysixthF2 = $context->builder->fmul($sixtysixthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtysixthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtysixthF3Eighth = $context->builder->fmul($sixtysixthF3Sq, $sqF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $sixtysixthF3 = $context->builder->fmul($sixtysixthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtysixth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtysixth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtysixthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtysixthF4Eighth = $context->builder->fmul($sixtysixthF4Sq, $sqF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $sixtysixthF4 = $context->builder->fmul($sixtysixthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtysixth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtysixth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtysixthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtysixthF5Eighth = $context->builder->fmul($sixtysixthF5Sq, $sqF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $sixtysixthF5 = $context->builder->fmul($sixtysixthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtysixthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtysixthF6Eighth = $context->builder->fmul($sixtysixthF6Sq, $sqF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $sixtysixthF6 = $context->builder->fmul($sixtysixthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtysixthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtysixthF7Eighth = $context->builder->fmul($sixtysixthF7Sq, $sqF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $sixtysixthF7 = $context->builder->fmul($sixtysixthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtysixthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtysixthF8Eighth = $context->builder->fmul($sixtysixthF8Sq, $sqF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $sixtysixthF8 = $context->builder->fmul($sixtysixthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtysixthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $sixtysixthF9 = $context->builder->fmul($sixtysixthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtysixthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $sixtysixthF10 = $context->builder->fmul($sixtysixthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtysixthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $sixtysixthF11 = $context->builder->fmul($sixtysixthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtysixthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $sixtysixthF12 = $context->builder->fmul($sixtysixthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtysixthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $sixtysixthF13 = $context->builder->fmul($sixtysixthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtysixthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $sixtysixthF14 = $context->builder->fmul($sixtysixthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtysixthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $sixtysixthF15 = $context->builder->fmul($sixtysixthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtysixthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $sixtysixthF16 = $context->builder->fmul($sixtysixthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtysixthF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $sixtysixthF17 = $context->builder->fmul($sixtysixthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtysixthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $sixtysixthF18 = $context->builder->fmul($sixtysixthF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtysixthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); + $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); + $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); + $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); + $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); + $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); + $sixtysixthF19 = $context->builder->fmul($sixtysixthF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtysixth_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtysixthF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); + $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); + $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); + $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); + $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); + $sixtysixthF20 = $context->builder->fmul($sixtysixthF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtysixthF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); + $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); + $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); + $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); + $sixtysixthF21 = $context->builder->fmul($sixtysixthF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtysixthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); + $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); + $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); + $sixtysixthF22 = $context->builder->fmul($sixtysixthF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n + ); + $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); + if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (sixtysecond)'); + } + $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind + ? $context->builder->load($sixtysecondVar->value) + : $sixtysecondVar->value; + $ov23Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtysecond_ov'); + $ok23Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtysecond_ok'); + $context->builder->branchIf($ov23, $ov23Block, $ok23Block); + + $context->builder->positionAtEnd($ov23Block); + $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); + $nF23 = $context->builder->siToFp($n, $f64); + $sixtysixthF23 = $context->builder->fmul($sixtysecondF23, $nF23); + $sixtysixthF23 = $context->builder->fmul($sixtysixthF23, $nF23); + $sixtysixthF23 = $context->builder->fmul($sixtysixthF23, $nF23); + $sixtysixthF23 = $context->builder->fmul($sixtysixthF23, $nF23); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF23 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok23Block); + $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysecondLong, + $n + ); + $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); + if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (sixtythird)'); + } + $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind + ? $context->builder->load($sixtythirdVar->value) + : $sixtythirdVar->value; + $ov24Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtythird_ov'); + $ok24Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtythird_ok'); + $context->builder->branchIf($ov24, $ov24Block, $ok24Block); + + $context->builder->positionAtEnd($ov24Block); + $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); + $nF24 = $context->builder->siToFp($n, $f64); + $sixtysixthF24 = $context->builder->fmul($sixtythirdF24, $nF24); + $sixtysixthF24 = $context->builder->fmul($sixtysixthF24, $nF24); + $sixtysixthF24 = $context->builder->fmul($sixtysixthF24, $nF24); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF24 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok24Block); + $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtythirdLong, + $n + ); + $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); + if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (sixtyfourth)'); + } + $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind + ? $context->builder->load($sixtyfourthVar->value) + : $sixtyfourthVar->value; + $ov25Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfourth_ov'); + $ok25Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfourth_ok'); + $context->builder->branchIf($ov25, $ov25Block, $ok25Block); + + $context->builder->positionAtEnd($ov25Block); + $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); + $nF25 = $context->builder->siToFp($n, $f64); + $sixtysixthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); + $sixtysixthF25 = $context->builder->fmul($sixtysixthF25, $nF25); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF25 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok25Block); + $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfourthLong, + $n + ); + $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); + if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **66 expected smul overflow metadata (sixtyfifth)'); + } + $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind + ? $context->builder->load($sixtyfifthVar->value) + : $sixtyfifthVar->value; + $ov26Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfifth_ov'); + $ok26Block = BasicBlockHelper::append($context, 'pow_sixtysixth_sixtyfifth_ok'); + $context->builder->branchIf($ov26, $ov26Block, $ok26Block); + + $context->builder->positionAtEnd($ov26Block); + $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); + $nF26 = $context->builder->siToFp($n, $f64); + $sixtysixthF26 = $context->builder->fmul($sixtyfifthF26, $nF26); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtysixthF26 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok26Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtyfifthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('sixtyseventh' === $expFold) { + // n^67 = sixtysixth*n = fortyeighth*sq*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n. + // Overflow arms finish in float (sqF^25*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // ((cuF*sqF)^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, (fifthF^2)^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, tenthF^4*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // twentiethF^2*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortiethF*sqF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysecondF*sqF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF, + // fortyfourthF*sqF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF, fortysixthF*sqF*sqF*nF*nF*nF*nF*nF*nF*nF*nF*nF*nF). + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyseventh_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtyseventhFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtyseventhFEighth = $context->builder->fmul($sixtyseventhFSq, $sqF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $sixtyseventhF = $context->builder->fmul($sixtyseventhF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtyseventhF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtyseventhF2Eighth = $context->builder->fmul($sixtyseventhF2Sq, $sqF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $sixtyseventhF2 = $context->builder->fmul($sixtyseventhF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtyseventhF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtyseventhF3Eighth = $context->builder->fmul($sixtyseventhF3Sq, $sqF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $sixtyseventhF3 = $context->builder->fmul($sixtyseventhF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtyseventhF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtyseventhF4Eighth = $context->builder->fmul($sixtyseventhF4Sq, $sqF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $sixtyseventhF4 = $context->builder->fmul($sixtyseventhF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtyseventhF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtyseventhF5Eighth = $context->builder->fmul($sixtyseventhF5Sq, $sqF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $sixtyseventhF5 = $context->builder->fmul($sixtyseventhF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtyseventhF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtyseventhF6Eighth = $context->builder->fmul($sixtyseventhF6Sq, $sqF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $sixtyseventhF6 = $context->builder->fmul($sixtyseventhF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtyseventhF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtyseventhF7Eighth = $context->builder->fmul($sixtyseventhF7Sq, $sqF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $sixtyseventhF7 = $context->builder->fmul($sixtyseventhF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtyseventhF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtyseventhF8Eighth = $context->builder->fmul($sixtyseventhF8Sq, $sqF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $sixtyseventhF8 = $context->builder->fmul($sixtyseventhF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtyseventhF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $sixtyseventhF9 = $context->builder->fmul($sixtyseventhF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtyseventhF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $sixtyseventhF10 = $context->builder->fmul($sixtyseventhF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtyseventhF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $sixtyseventhF11 = $context->builder->fmul($sixtyseventhF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtyseventhF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $sixtyseventhF12 = $context->builder->fmul($sixtyseventhF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtyseventhF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $sixtyseventhF13 = $context->builder->fmul($sixtyseventhF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtyseventhF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $sixtyseventhF14 = $context->builder->fmul($sixtyseventhF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtyseventhF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $sixtyseventhF15 = $context->builder->fmul($sixtyseventhF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtyseventhF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $sixtyseventhF16 = $context->builder->fmul($sixtyseventhF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtyseventhF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $sixtyseventhF17 = $context->builder->fmul($sixtyseventhF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtyseventhF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $sixtyseventhF18 = $context->builder->fmul($sixtyseventhF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtyseventhF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $sixtyseventhF19 = $context->builder->fmul($sixtyseventhF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtyseventhF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); + $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); + $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); + $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); + $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); + $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); + $sixtyseventhF20 = $context->builder->fmul($sixtyseventhF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtyseventhF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); + $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); + $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); + $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); + $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); + $sixtyseventhF21 = $context->builder->fmul($sixtyseventhF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtyseventhF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); + $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); + $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); + $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); + $sixtyseventhF22 = $context->builder->fmul($sixtyseventhF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n + ); + $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); + if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sixtysecond)'); + } + $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind + ? $context->builder->load($sixtysecondVar->value) + : $sixtysecondVar->value; + $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysecond_ov'); + $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysecond_ok'); + $context->builder->branchIf($ov23, $ov23Block, $ok23Block); + + $context->builder->positionAtEnd($ov23Block); + $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); + $nF23 = $context->builder->siToFp($n, $f64); + $sixtyseventhF23 = $context->builder->fmul($sixtysecondF23, $nF23); + $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); + $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); + $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); + $sixtyseventhF23 = $context->builder->fmul($sixtyseventhF23, $nF23); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF23 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok23Block); + $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysecondLong, + $n + ); + $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); + if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sixtythird)'); + } + $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind + ? $context->builder->load($sixtythirdVar->value) + : $sixtythirdVar->value; + $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtythird_ov'); + $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtythird_ok'); + $context->builder->branchIf($ov24, $ov24Block, $ok24Block); + + $context->builder->positionAtEnd($ov24Block); + $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); + $nF24 = $context->builder->siToFp($n, $f64); + $sixtyseventhF24 = $context->builder->fmul($sixtythirdF24, $nF24); + $sixtyseventhF24 = $context->builder->fmul($sixtyseventhF24, $nF24); + $sixtyseventhF24 = $context->builder->fmul($sixtyseventhF24, $nF24); + $sixtyseventhF24 = $context->builder->fmul($sixtyseventhF24, $nF24); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF24 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok24Block); + $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtythirdLong, + $n + ); + $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); + if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sixtyfourth)'); + } + $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind + ? $context->builder->load($sixtyfourthVar->value) + : $sixtyfourthVar->value; + $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfourth_ov'); + $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfourth_ok'); + $context->builder->branchIf($ov25, $ov25Block, $ok25Block); + + $context->builder->positionAtEnd($ov25Block); + $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); + $nF25 = $context->builder->siToFp($n, $f64); + $sixtyseventhF25 = $context->builder->fmul($sixtyfourthF25, $nF25); + $sixtyseventhF25 = $context->builder->fmul($sixtyseventhF25, $nF25); + $sixtyseventhF25 = $context->builder->fmul($sixtyseventhF25, $nF25); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF25 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok25Block); + $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfourthLong, + $n + ); + $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); + if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sixtyfifth)'); + } + $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind + ? $context->builder->load($sixtyfifthVar->value) + : $sixtyfifthVar->value; + $ov26Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfifth_ov'); + $ok26Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtyfifth_ok'); + $context->builder->branchIf($ov26, $ov26Block, $ok26Block); + + $context->builder->positionAtEnd($ov26Block); + $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); + $nF26 = $context->builder->siToFp($n, $f64); + $sixtyseventhF26 = $context->builder->fmul($sixtyfifthF26, $nF26); + $sixtyseventhF26 = $context->builder->fmul($sixtyseventhF26, $nF26); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF26 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok26Block); + $sixtysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfifthLong, + $n + ); + $ov27 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysixthVar->longArithOverflowFlag); + if (null === $ov27 || null === $sixtysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **67 expected smul overflow metadata (sixtysixth)'); + } + $sixtysixthLong = JITVariable::KIND_VARIABLE === $sixtysixthVar->kind + ? $context->builder->load($sixtysixthVar->value) + : $sixtysixthVar->value; + $ov27Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysixth_ov'); + $ok27Block = BasicBlockHelper::append($context, 'pow_sixtyseventh_sixtysixth_ok'); + $context->builder->branchIf($ov27, $ov27Block, $ok27Block); + + $context->builder->positionAtEnd($ov27Block); + $sixtysixthF27 = $context->builder->load($sixtysixthVar->longArithOverflowDoubleSlot); + $nF27 = $context->builder->siToFp($n, $f64); + $sixtyseventhF27 = $context->builder->fmul($sixtysixthF27, $nF27); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyseventhF27 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok27Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtysixthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } +if ('sixtyeighth' === $expFold) { + // n^68 = sixtyseventh*n = fortysixth*sq*sq*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n*n: sq=n*n, cu=sq*n, fifth=cu*sq, + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n… (sixtyseventh×n). + // Overflow arms finish in float with one extra ×nF vs **67. + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyeighth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtyeighthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtyeighthFEighth = $context->builder->fmul($sixtyeighthFSq, $sqF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $sixtyeighthF = $context->builder->fmul($sixtyeighthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtyeighthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtyeighthF2Eighth = $context->builder->fmul($sixtyeighthF2Sq, $sqF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $sixtyeighthF2 = $context->builder->fmul($sixtyeighthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtyeighthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtyeighthF3Eighth = $context->builder->fmul($sixtyeighthF3Sq, $sqF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $sixtyeighthF3 = $context->builder->fmul($sixtyeighthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtyeighthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtyeighthF4Eighth = $context->builder->fmul($sixtyeighthF4Sq, $sqF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $sixtyeighthF4 = $context->builder->fmul($sixtyeighthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtyeighthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtyeighthF5Eighth = $context->builder->fmul($sixtyeighthF5Sq, $sqF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $sixtyeighthF5 = $context->builder->fmul($sixtyeighthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtyeighthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtyeighthF6Eighth = $context->builder->fmul($sixtyeighthF6Sq, $sqF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $sixtyeighthF6 = $context->builder->fmul($sixtyeighthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtyeighthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtyeighthF7Eighth = $context->builder->fmul($sixtyeighthF7Sq, $sqF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $sixtyeighthF7 = $context->builder->fmul($sixtyeighthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtyeighthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtyeighthF8Eighth = $context->builder->fmul($sixtyeighthF8Sq, $sqF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $sixtyeighthF8 = $context->builder->fmul($sixtyeighthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtyeighthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $sixtyeighthF9 = $context->builder->fmul($sixtyeighthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtyeighthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $sixtyeighthF10 = $context->builder->fmul($sixtyeighthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtyeighthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $sixtyeighthF11 = $context->builder->fmul($sixtyeighthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtyeighthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $sixtyeighthF12 = $context->builder->fmul($sixtyeighthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtyeighthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $sixtyeighthF13 = $context->builder->fmul($sixtyeighthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtyeighthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $sixtyeighthF14 = $context->builder->fmul($sixtyeighthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtyeighthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $sixtyeighthF15 = $context->builder->fmul($sixtyeighthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtyeighthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $sixtyeighthF16 = $context->builder->fmul($sixtyeighthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtyeighthF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $sixtyeighthF17 = $context->builder->fmul($sixtyeighthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtyeighthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $sixtyeighthF18 = $context->builder->fmul($sixtyeighthF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtyeighthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $sixtyeighthF19 = $context->builder->fmul($sixtyeighthF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtyeighthF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $sixtyeighthF20 = $context->builder->fmul($sixtyeighthF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtyeighthF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); + $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); + $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); + $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); + $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); + $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); + $sixtyeighthF21 = $context->builder->fmul($sixtyeighthF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtyeighthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); + $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); + $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); + $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); + $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); + $sixtyeighthF22 = $context->builder->fmul($sixtyeighthF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n + ); + $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); + if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtysecond)'); + } + $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind + ? $context->builder->load($sixtysecondVar->value) + : $sixtysecondVar->value; + $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysecond_ov'); + $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysecond_ok'); + $context->builder->branchIf($ov23, $ov23Block, $ok23Block); + + $context->builder->positionAtEnd($ov23Block); + $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); + $nF23 = $context->builder->siToFp($n, $f64); + $sixtyeighthF23 = $context->builder->fmul($sixtysecondF23, $nF23); + $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); + $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); + $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); + $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); + $sixtyeighthF23 = $context->builder->fmul($sixtyeighthF23, $nF23); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF23 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok23Block); + $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysecondLong, + $n + ); + $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); + if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtythird)'); + } + $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind + ? $context->builder->load($sixtythirdVar->value) + : $sixtythirdVar->value; + $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtythird_ov'); + $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtythird_ok'); + $context->builder->branchIf($ov24, $ov24Block, $ok24Block); + + $context->builder->positionAtEnd($ov24Block); + $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); + $nF24 = $context->builder->siToFp($n, $f64); + $sixtyeighthF24 = $context->builder->fmul($sixtythirdF24, $nF24); + $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); + $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); + $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); + $sixtyeighthF24 = $context->builder->fmul($sixtyeighthF24, $nF24); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF24 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok24Block); + $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtythirdLong, + $n + ); + $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); + if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyfourth)'); + } + $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind + ? $context->builder->load($sixtyfourthVar->value) + : $sixtyfourthVar->value; + $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfourth_ov'); + $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfourth_ok'); + $context->builder->branchIf($ov25, $ov25Block, $ok25Block); + + $context->builder->positionAtEnd($ov25Block); + $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); + $nF25 = $context->builder->siToFp($n, $f64); + $sixtyeighthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); + $sixtyeighthF25 = $context->builder->fmul($sixtyeighthF25, $nF25); + $sixtyeighthF25 = $context->builder->fmul($sixtyeighthF25, $nF25); + $sixtyeighthF25 = $context->builder->fmul($sixtyeighthF25, $nF25); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF25 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok25Block); + $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfourthLong, + $n + ); + $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); + if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyfifth)'); + } + $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind + ? $context->builder->load($sixtyfifthVar->value) + : $sixtyfifthVar->value; + $ov26Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfifth_ov'); + $ok26Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyfifth_ok'); + $context->builder->branchIf($ov26, $ov26Block, $ok26Block); + + $context->builder->positionAtEnd($ov26Block); + $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); + $nF26 = $context->builder->siToFp($n, $f64); + $sixtyeighthF26 = $context->builder->fmul($sixtyfifthF26, $nF26); + $sixtyeighthF26 = $context->builder->fmul($sixtyeighthF26, $nF26); + $sixtyeighthF26 = $context->builder->fmul($sixtyeighthF26, $nF26); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF26 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok26Block); + $sixtysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfifthLong, + $n + ); + $ov27 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysixthVar->longArithOverflowFlag); + if (null === $ov27 || null === $sixtysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtysixth)'); + } + $sixtysixthLong = JITVariable::KIND_VARIABLE === $sixtysixthVar->kind + ? $context->builder->load($sixtysixthVar->value) + : $sixtysixthVar->value; + $ov27Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysixth_ov'); + $ok27Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtysixth_ok'); + $context->builder->branchIf($ov27, $ov27Block, $ok27Block); + + $context->builder->positionAtEnd($ov27Block); + $sixtysixthF27 = $context->builder->load($sixtysixthVar->longArithOverflowDoubleSlot); + $nF27 = $context->builder->siToFp($n, $f64); + $sixtyeighthF27 = $context->builder->fmul($sixtysixthF27, $nF27); + $sixtyeighthF27 = $context->builder->fmul($sixtyeighthF27, $nF27); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF27 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok27Block); + $sixtyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysixthLong, + $n + ); + $ov28 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyseventhVar->longArithOverflowFlag); + if (null === $ov28 || null === $sixtyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **68 expected smul overflow metadata (sixtyseventh)'); + } + $sixtyseventhLong = JITVariable::KIND_VARIABLE === $sixtyseventhVar->kind + ? $context->builder->load($sixtyseventhVar->value) + : $sixtyseventhVar->value; + $ov28Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyseventh_ov'); + $ok28Block = BasicBlockHelper::append($context, 'pow_sixtyeighth_sixtyseventh_ok'); + $context->builder->branchIf($ov28, $ov28Block, $ok28Block); + + $context->builder->positionAtEnd($ov28Block); + $sixtyseventhF28 = $context->builder->load($sixtyseventhVar->longArithOverflowDoubleSlot); + $nF28 = $context->builder->siToFp($n, $f64); + $sixtyeighthF28 = $context->builder->fmul($sixtyseventhF28, $nF28); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyeighthF28 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok28Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtyseventhLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + if ('sixtyninth' === $expFold) { + // n^69 = sixtyeighth*n; overflow arms +1 ×nF vs **68. + // tenth=fifth*fifth, twentieth=tenth*tenth, + // fortieth=twentieth*twentieth, fortysecond=fortieth*sq, fortyfourth=fortysecond*sq, + // fortysixth=fortyfourth*sq, then fortysixth*sq*sq*n… (sixtyseventh×n). + // Overflow arms finish in float with one extra ×nF vs **68. + $baseL = JitLongArg::lower($context, $base, 'pow() base'); + $i64 = $context->getTypeFromString('int64'); + $f64 = $context->getTypeFromString('double'); + $n = $context->builder->intCast($baseL, $i64); + $sqVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $n, + $n + ); + $ov1 = JitLongArithOverflow::loadOverflowFlagI1($context, $sqVar->longArithOverflowFlag); + if (null === $ov1 || null === $sqVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sq)'); + } + $sqLong = JITVariable::KIND_VARIABLE === $sqVar->kind + ? $context->builder->load($sqVar->value) + : $sqVar->value; + $ov1Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sq_ov'); + $ok1Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sq_ok'); + $doneBlock = BasicBlockHelper::append($context, 'pow_sixtyninth_done'); + $context->builder->branchIf($ov1, $ov1Block, $ok1Block); + + $context->builder->positionAtEnd($ov1Block); + $sqF = $context->builder->load($sqVar->longArithOverflowDoubleSlot); + $sq2F = $context->builder->fmul($sqF, $sqF); + $sq4F = $context->builder->fmul($sq2F, $sq2F); + $sq8F = $context->builder->fmul($sq4F, $sq4F); + $twentiethF = $context->builder->fmul($sq8F, $sq2F); + $fortiethF = $context->builder->fmul($twentiethF, $twentiethF); + $fortysecondF = $context->builder->fmul($fortiethF, $sqF); + $fortyfourthF = $context->builder->fmul($fortysecondF, $sqF); + $sixtyninthFSq = $context->builder->fmul($fortyfourthF, $sqF); + $sixtyninthFEighth = $context->builder->fmul($sixtyninthFSq, $sqF); + $sixtyninthF = $context->builder->fmul($sixtyninthFEighth, $sqF); + $nF = $context->builder->siToFp($n, $f64); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $sixtyninthF = $context->builder->fmul($sixtyninthF, $nF); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok1Block); + $cuVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sqLong, + $n + ); + $ov2 = JitLongArithOverflow::loadOverflowFlagI1($context, $cuVar->longArithOverflowFlag); + if (null === $ov2 || null === $cuVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (cu)'); + } + $cuLong = JITVariable::KIND_VARIABLE === $cuVar->kind + ? $context->builder->load($cuVar->value) + : $cuVar->value; + $ov2Block = BasicBlockHelper::append($context, 'pow_sixtyninth_cu_ov'); + $ok2Block = BasicBlockHelper::append($context, 'pow_sixtyninth_cu_ok'); + $context->builder->branchIf($ov2, $ov2Block, $ok2Block); + + $context->builder->positionAtEnd($ov2Block); + $cuF = $context->builder->load($cuVar->longArithOverflowDoubleSlot); + $sqF2 = $context->builder->siToFp($sqLong, $f64); + $fifthF = $context->builder->fmul($cuF, $sqF2); + $tenthF2 = $context->builder->fmul($fifthF, $fifthF); + $twentiethF2 = $context->builder->fmul($tenthF2, $tenthF2); + $fortiethF2 = $context->builder->fmul($twentiethF2, $twentiethF2); + $fortysecondF2 = $context->builder->fmul($fortiethF2, $sqF2); + $fortyfourthF2 = $context->builder->fmul($fortysecondF2, $sqF2); + $sixtyninthF2Sq = $context->builder->fmul($fortyfourthF2, $sqF2); + $sixtyninthF2Eighth = $context->builder->fmul($sixtyninthF2Sq, $sqF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2Eighth, $sqF2); + $nF2 = $context->builder->siToFp($n, $f64); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $sixtyninthF2 = $context->builder->fmul($sixtyninthF2, $nF2); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF2 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok2Block); + $fifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $cuLong, + $sqLong + ); + $ov3 = JitLongArithOverflow::loadOverflowFlagI1($context, $fifthVar->longArithOverflowFlag); + if (null === $ov3 || null === $fifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fifth)'); + } + $fifthLong = JITVariable::KIND_VARIABLE === $fifthVar->kind + ? $context->builder->load($fifthVar->value) + : $fifthVar->value; + $ov3Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fifth_ov'); + $ok3Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fifth_ok'); + $context->builder->branchIf($ov3, $ov3Block, $ok3Block); + + $context->builder->positionAtEnd($ov3Block); + $fifthF2 = $context->builder->load($fifthVar->longArithOverflowDoubleSlot); + $tenthF3 = $context->builder->fmul($fifthF2, $fifthF2); + $twentiethF3 = $context->builder->fmul($tenthF3, $tenthF3); + $fortiethF3 = $context->builder->fmul($twentiethF3, $twentiethF3); + $sqF3 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF3 = $context->builder->fmul($fortiethF3, $sqF3); + $fortyfourthF3 = $context->builder->fmul($fortysecondF3, $sqF3); + $sixtyninthF3Sq = $context->builder->fmul($fortyfourthF3, $sqF3); + $sixtyninthF3Eighth = $context->builder->fmul($sixtyninthF3Sq, $sqF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3Eighth, $sqF3); + $nF3 = $context->builder->siToFp($n, $f64); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $sixtyninthF3 = $context->builder->fmul($sixtyninthF3, $nF3); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF3 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok3Block); + $tenthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fifthLong, + $fifthLong + ); + $ov4 = JitLongArithOverflow::loadOverflowFlagI1($context, $tenthVar->longArithOverflowFlag); + if (null === $ov4 || null === $tenthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (tenth)'); + } + $tenthLong = JITVariable::KIND_VARIABLE === $tenthVar->kind + ? $context->builder->load($tenthVar->value) + : $tenthVar->value; + $ov4Block = BasicBlockHelper::append($context, 'pow_sixtyninth_tenth_ov'); + $ok4Block = BasicBlockHelper::append($context, 'pow_sixtyninth_tenth_ok'); + $context->builder->branchIf($ov4, $ov4Block, $ok4Block); + + $context->builder->positionAtEnd($ov4Block); + $tenthF4 = $context->builder->load($tenthVar->longArithOverflowDoubleSlot); + $twentiethF4 = $context->builder->fmul($tenthF4, $tenthF4); + $fortiethF4 = $context->builder->fmul($twentiethF4, $twentiethF4); + $sqF4 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF4 = $context->builder->fmul($fortiethF4, $sqF4); + $fortyfourthF4 = $context->builder->fmul($fortysecondF4, $sqF4); + $sixtyninthF4Sq = $context->builder->fmul($fortyfourthF4, $sqF4); + $sixtyninthF4Eighth = $context->builder->fmul($sixtyninthF4Sq, $sqF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4Eighth, $sqF4); + $nF4 = $context->builder->siToFp($n, $f64); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $sixtyninthF4 = $context->builder->fmul($sixtyninthF4, $nF4); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF4 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok4Block); + $twentiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $tenthLong, + $tenthLong + ); + $ov5 = JitLongArithOverflow::loadOverflowFlagI1($context, $twentiethVar->longArithOverflowFlag); + if (null === $ov5 || null === $twentiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (twentieth)'); + } + $twentiethLong = JITVariable::KIND_VARIABLE === $twentiethVar->kind + ? $context->builder->load($twentiethVar->value) + : $twentiethVar->value; + $ov5Block = BasicBlockHelper::append($context, 'pow_sixtyninth_twentieth_ov'); + $ok5Block = BasicBlockHelper::append($context, 'pow_sixtyninth_twentieth_ok'); + $context->builder->branchIf($ov5, $ov5Block, $ok5Block); + + $context->builder->positionAtEnd($ov5Block); + $twentiethF5 = $context->builder->load($twentiethVar->longArithOverflowDoubleSlot); + $fortiethF5 = $context->builder->fmul($twentiethF5, $twentiethF5); + $sqF5 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF5 = $context->builder->fmul($fortiethF5, $sqF5); + $fortyfourthF5 = $context->builder->fmul($fortysecondF5, $sqF5); + $sixtyninthF5Sq = $context->builder->fmul($fortyfourthF5, $sqF5); + $sixtyninthF5Eighth = $context->builder->fmul($sixtyninthF5Sq, $sqF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5Eighth, $sqF5); + $nF5 = $context->builder->siToFp($n, $f64); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $sixtyninthF5 = $context->builder->fmul($sixtyninthF5, $nF5); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF5 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok5Block); + $fortiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $twentiethLong, + $twentiethLong + ); + $ov6 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortiethVar->longArithOverflowFlag); + if (null === $ov6 || null === $fortiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fortieth)'); + } + $fortiethLong = JITVariable::KIND_VARIABLE === $fortiethVar->kind + ? $context->builder->load($fortiethVar->value) + : $fortiethVar->value; + $ov6Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortieth_ov'); + $ok6Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortieth_ok'); + $context->builder->branchIf($ov6, $ov6Block, $ok6Block); + + $context->builder->positionAtEnd($ov6Block); + $fortiethF6 = $context->builder->load($fortiethVar->longArithOverflowDoubleSlot); + $sqF6 = $context->builder->siToFp($sqLong, $f64); + $fortysecondF6 = $context->builder->fmul($fortiethF6, $sqF6); + $fortyfourthF6 = $context->builder->fmul($fortysecondF6, $sqF6); + $sixtyninthF6Sq = $context->builder->fmul($fortyfourthF6, $sqF6); + $sixtyninthF6Eighth = $context->builder->fmul($sixtyninthF6Sq, $sqF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6Eighth, $sqF6); + $nF6 = $context->builder->siToFp($n, $f64); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $sixtyninthF6 = $context->builder->fmul($sixtyninthF6, $nF6); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF6 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok6Block); + $fortysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortiethLong, + $sqLong + ); + $ov7 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysecondVar->longArithOverflowFlag); + if (null === $ov7 || null === $fortysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fortysecond)'); + } + $fortysecondLong = JITVariable::KIND_VARIABLE === $fortysecondVar->kind + ? $context->builder->load($fortysecondVar->value) + : $fortysecondVar->value; + $ov7Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysecond_ov'); + $ok7Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysecond_ok'); + $context->builder->branchIf($ov7, $ov7Block, $ok7Block); + + $context->builder->positionAtEnd($ov7Block); + $fortysecondF7 = $context->builder->load($fortysecondVar->longArithOverflowDoubleSlot); + $sqF7 = $context->builder->siToFp($sqLong, $f64); + $fortyfourthF7 = $context->builder->fmul($fortysecondF7, $sqF7); + $sixtyninthF7Sq = $context->builder->fmul($fortyfourthF7, $sqF7); + $sixtyninthF7Eighth = $context->builder->fmul($sixtyninthF7Sq, $sqF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7Eighth, $sqF7); + $nF7 = $context->builder->siToFp($n, $f64); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $sixtyninthF7 = $context->builder->fmul($sixtyninthF7, $nF7); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF7 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok7Block); + $fortyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysecondLong, + $sqLong + ); + $ov8 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyfourthVar->longArithOverflowFlag); + if (null === $ov8 || null === $fortyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fortyfourth)'); + } + $fortyfourthLong = JITVariable::KIND_VARIABLE === $fortyfourthVar->kind + ? $context->builder->load($fortyfourthVar->value) + : $fortyfourthVar->value; + $ov8Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyfourth_ov'); + $ok8Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyfourth_ok'); + $context->builder->branchIf($ov8, $ov8Block, $ok8Block); + + $context->builder->positionAtEnd($ov8Block); + $fortyfourthF8 = $context->builder->load($fortyfourthVar->longArithOverflowDoubleSlot); + $sqF8 = $context->builder->siToFp($sqLong, $f64); + $sixtyninthF8Sq = $context->builder->fmul($fortyfourthF8, $sqF8); + $sixtyninthF8Eighth = $context->builder->fmul($sixtyninthF8Sq, $sqF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8Eighth, $sqF8); + $nF8 = $context->builder->siToFp($n, $f64); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $sixtyninthF8 = $context->builder->fmul($sixtyninthF8, $nF8); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF8 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok8Block); + $fortysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyfourthLong, + $sqLong + ); + $ov9 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortysixthVar->longArithOverflowFlag); + if (null === $ov9 || null === $fortysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fortysixth)'); + } + $fortysixthLong = JITVariable::KIND_VARIABLE === $fortysixthVar->kind + ? $context->builder->load($fortysixthVar->value) + : $fortysixthVar->value; + $ov9Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysixth_ov'); + $ok9Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortysixth_ok'); + $context->builder->branchIf($ov9, $ov9Block, $ok9Block); + + $context->builder->positionAtEnd($ov9Block); + $fortysixthF9 = $context->builder->load($fortysixthVar->longArithOverflowDoubleSlot); + $sqF9 = $context->builder->siToFp($sqLong, $f64); + $fortyeighthF9 = $context->builder->fmul($fortysixthF9, $sqF9); + $sixtyninthF9 = $context->builder->fmul($fortyeighthF9, $sqF9); + $nF9 = $context->builder->siToFp($n, $f64); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $sixtyninthF9 = $context->builder->fmul($sixtyninthF9, $nF9); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF9 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok9Block); + $fortyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortysixthLong, + $sqLong + ); + $ov10 = JitLongArithOverflow::loadOverflowFlagI1($context, $fortyeighthVar->longArithOverflowFlag); + if (null === $ov10 || null === $fortyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fortyeighth)'); + } + $fortyeighthLong = JITVariable::KIND_VARIABLE === $fortyeighthVar->kind + ? $context->builder->load($fortyeighthVar->value) + : $fortyeighthVar->value; + $ov10Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyeighth_ov'); + $ok10Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fortyeighth_ok'); + $context->builder->branchIf($ov10, $ov10Block, $ok10Block); + + $context->builder->positionAtEnd($ov10Block); + $fortyeighthF10 = $context->builder->load($fortyeighthVar->longArithOverflowDoubleSlot); + $sqF10 = $context->builder->siToFp($sqLong, $f64); + $sixtyninthF10 = $context->builder->fmul($fortyeighthF10, $sqF10); + $nF10 = $context->builder->siToFp($n, $f64); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $sixtyninthF10 = $context->builder->fmul($sixtyninthF10, $nF10); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF10 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok10Block); + $fiftiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fortyeighthLong, + $sqLong + ); + $ov11 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftiethVar->longArithOverflowFlag); + if (null === $ov11 || null === $fiftiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftieth)'); + } + $fiftiethLong = JITVariable::KIND_VARIABLE === $fiftiethVar->kind + ? $context->builder->load($fiftiethVar->value) + : $fiftiethVar->value; + $ov11Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftieth_ov'); + $ok11Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftieth_ok'); + $context->builder->branchIf($ov11, $ov11Block, $ok11Block); + + $context->builder->positionAtEnd($ov11Block); + $fiftiethF11 = $context->builder->load($fiftiethVar->longArithOverflowDoubleSlot); + $nF11 = $context->builder->siToFp($n, $f64); + $sixtyninthF11 = $context->builder->fmul($fiftiethF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $sixtyninthF11 = $context->builder->fmul($sixtyninthF11, $nF11); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF11 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok11Block); + $fiftyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftiethLong, + $n + ); + $ov12 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfirstVar->longArithOverflowFlag); + if (null === $ov12 || null === $fiftyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyfirst)'); + } + $fiftyfirstLong = JITVariable::KIND_VARIABLE === $fiftyfirstVar->kind + ? $context->builder->load($fiftyfirstVar->value) + : $fiftyfirstVar->value; + $ov12Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfirst_ov'); + $ok12Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfirst_ok'); + $context->builder->branchIf($ov12, $ov12Block, $ok12Block); + + $context->builder->positionAtEnd($ov12Block); + $fiftyfirstF12 = $context->builder->load($fiftyfirstVar->longArithOverflowDoubleSlot); + $nF12 = $context->builder->siToFp($n, $f64); + $sixtyninthF12 = $context->builder->fmul($fiftyfirstF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $sixtyninthF12 = $context->builder->fmul($sixtyninthF12, $nF12); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF12 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok12Block); + $fiftysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfirstLong, + $n + ); + $ov13 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysecondVar->longArithOverflowFlag); + if (null === $ov13 || null === $fiftysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftysecond)'); + } + $fiftysecondLong = JITVariable::KIND_VARIABLE === $fiftysecondVar->kind + ? $context->builder->load($fiftysecondVar->value) + : $fiftysecondVar->value; + $ov13Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysecond_ov'); + $ok13Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysecond_ok'); + $context->builder->branchIf($ov13, $ov13Block, $ok13Block); + + $context->builder->positionAtEnd($ov13Block); + $fiftysecondF13 = $context->builder->load($fiftysecondVar->longArithOverflowDoubleSlot); + $nF13 = $context->builder->siToFp($n, $f64); + $sixtyninthF13 = $context->builder->fmul($fiftysecondF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $sixtyninthF13 = $context->builder->fmul($sixtyninthF13, $nF13); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF13 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok13Block); + $fiftythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysecondLong, + $n + ); + $ov14 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftythirdVar->longArithOverflowFlag); + if (null === $ov14 || null === $fiftythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftythird)'); + } + $fiftythirdLong = JITVariable::KIND_VARIABLE === $fiftythirdVar->kind + ? $context->builder->load($fiftythirdVar->value) + : $fiftythirdVar->value; + $ov14Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftythird_ov'); + $ok14Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftythird_ok'); + $context->builder->branchIf($ov14, $ov14Block, $ok14Block); + + $context->builder->positionAtEnd($ov14Block); + $fiftythirdF14 = $context->builder->load($fiftythirdVar->longArithOverflowDoubleSlot); + $nF14 = $context->builder->siToFp($n, $f64); + $sixtyninthF14 = $context->builder->fmul($fiftythirdF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $sixtyninthF14 = $context->builder->fmul($sixtyninthF14, $nF14); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF14 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok14Block); + $fiftyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftythirdLong, + $n + ); + $ov15 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfourthVar->longArithOverflowFlag); + if (null === $ov15 || null === $fiftyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyfourth)'); + } + $fiftyfourthLong = JITVariable::KIND_VARIABLE === $fiftyfourthVar->kind + ? $context->builder->load($fiftyfourthVar->value) + : $fiftyfourthVar->value; + $ov15Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfourth_ov'); + $ok15Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfourth_ok'); + $context->builder->branchIf($ov15, $ov15Block, $ok15Block); + + $context->builder->positionAtEnd($ov15Block); + $fiftyfourthF15 = $context->builder->load($fiftyfourthVar->longArithOverflowDoubleSlot); + $nF15 = $context->builder->siToFp($n, $f64); + $sixtyninthF15 = $context->builder->fmul($fiftyfourthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $sixtyninthF15 = $context->builder->fmul($sixtyninthF15, $nF15); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF15 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok15Block); + $fiftyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfourthLong, + $n + ); + $ov16 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyfifthVar->longArithOverflowFlag); + if (null === $ov16 || null === $fiftyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyfifth)'); + } + $fiftyfifthLong = JITVariable::KIND_VARIABLE === $fiftyfifthVar->kind + ? $context->builder->load($fiftyfifthVar->value) + : $fiftyfifthVar->value; + $ov16Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfifth_ov'); + $ok16Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyfifth_ok'); + $context->builder->branchIf($ov16, $ov16Block, $ok16Block); + + $context->builder->positionAtEnd($ov16Block); + $fiftyfifthF16 = $context->builder->load($fiftyfifthVar->longArithOverflowDoubleSlot); + $nF16 = $context->builder->siToFp($n, $f64); + $sixtyninthF16 = $context->builder->fmul($fiftyfifthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $sixtyninthF16 = $context->builder->fmul($sixtyninthF16, $nF16); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF16 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok16Block); + $fiftysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyfifthLong, + $n + ); + $ov17 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftysixthVar->longArithOverflowFlag); + if (null === $ov17 || null === $fiftysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftysixth)'); + } + $fiftysixthLong = JITVariable::KIND_VARIABLE === $fiftysixthVar->kind + ? $context->builder->load($fiftysixthVar->value) + : $fiftysixthVar->value; + $ov17Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysixth_ov'); + $ok17Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftysixth_ok'); + $context->builder->branchIf($ov17, $ov17Block, $ok17Block); + + $context->builder->positionAtEnd($ov17Block); + $fiftysixthF17 = $context->builder->load($fiftysixthVar->longArithOverflowDoubleSlot); + $nF17 = $context->builder->siToFp($n, $f64); + $sixtyninthF17 = $context->builder->fmul($fiftysixthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $sixtyninthF17 = $context->builder->fmul($sixtyninthF17, $nF17); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF17 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok17Block); + $fiftyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftysixthLong, + $n + ); + $ov18 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyseventhVar->longArithOverflowFlag); + if (null === $ov18 || null === $fiftyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyseventh)'); + } + $fiftyseventhLong = JITVariable::KIND_VARIABLE === $fiftyseventhVar->kind + ? $context->builder->load($fiftyseventhVar->value) + : $fiftyseventhVar->value; + $ov18Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyseventh_ov'); + $ok18Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyseventh_ok'); + $context->builder->branchIf($ov18, $ov18Block, $ok18Block); + + $context->builder->positionAtEnd($ov18Block); + $fiftyseventhF18 = $context->builder->load($fiftyseventhVar->longArithOverflowDoubleSlot); + $nF18 = $context->builder->siToFp($n, $f64); + $sixtyninthF18 = $context->builder->fmul($fiftyseventhF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $sixtyninthF18 = $context->builder->fmul($sixtyninthF18, $nF18); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF18 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok18Block); + $fiftyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyseventhLong, + $n + ); + $ov19 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyeighthVar->longArithOverflowFlag); + if (null === $ov19 || null === $fiftyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyeighth)'); + } + $fiftyeighthLong = JITVariable::KIND_VARIABLE === $fiftyeighthVar->kind + ? $context->builder->load($fiftyeighthVar->value) + : $fiftyeighthVar->value; + $ov19Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyeighth_ov'); + $ok19Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyeighth_ok'); + $context->builder->branchIf($ov19, $ov19Block, $ok19Block); + + $context->builder->positionAtEnd($ov19Block); + $fiftyeighthF19 = $context->builder->load($fiftyeighthVar->longArithOverflowDoubleSlot); + $nF19 = $context->builder->siToFp($n, $f64); + $sixtyninthF19 = $context->builder->fmul($fiftyeighthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $sixtyninthF19 = $context->builder->fmul($sixtyninthF19, $nF19); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF19 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok19Block); + $fiftyninthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyeighthLong, + $n + ); + $ov20 = JitLongArithOverflow::loadOverflowFlagI1($context, $fiftyninthVar->longArithOverflowFlag); + if (null === $ov20 || null === $fiftyninthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (fiftyninth)'); + } + $fiftyninthLong = JITVariable::KIND_VARIABLE === $fiftyninthVar->kind + ? $context->builder->load($fiftyninthVar->value) + : $fiftyninthVar->value; + $ov20Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyninth_ov'); + $ok20Block = BasicBlockHelper::append($context, 'pow_sixtyninth_fiftyninth_ok'); + $context->builder->branchIf($ov20, $ov20Block, $ok20Block); + + $context->builder->positionAtEnd($ov20Block); + $fiftyninthF20 = $context->builder->load($fiftyninthVar->longArithOverflowDoubleSlot); + $nF20 = $context->builder->siToFp($n, $f64); + $sixtyninthF20 = $context->builder->fmul($fiftyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $sixtyninthF20 = $context->builder->fmul($sixtyninthF20, $nF20); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF20 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok20Block); + $sixtiethVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $fiftyninthLong, + $n + ); + $ov21 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtiethVar->longArithOverflowFlag); + if (null === $ov21 || null === $sixtiethVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtieth)'); + } + $sixtiethLong = JITVariable::KIND_VARIABLE === $sixtiethVar->kind + ? $context->builder->load($sixtiethVar->value) + : $sixtiethVar->value; + $ov21Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtieth_ov'); + $ok21Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtieth_ok'); + $context->builder->branchIf($ov21, $ov21Block, $ok21Block); + + $context->builder->positionAtEnd($ov21Block); + $sixtiethF21 = $context->builder->load($sixtiethVar->longArithOverflowDoubleSlot); + $nF21 = $context->builder->siToFp($n, $f64); + $sixtyninthF21 = $context->builder->fmul($sixtiethF21, $nF21); + $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); + $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); + $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); + $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); + $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); + $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); + $sixtyninthF21 = $context->builder->fmul($sixtyninthF21, $nF21); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF21 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok21Block); + $sixtyfirstVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtiethLong, + $n + ); + $ov22 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfirstVar->longArithOverflowFlag); + if (null === $ov22 || null === $sixtyfirstVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyfirst)'); + } + $sixtyfirstLong = JITVariable::KIND_VARIABLE === $sixtyfirstVar->kind + ? $context->builder->load($sixtyfirstVar->value) + : $sixtyfirstVar->value; + $ov22Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfirst_ov'); + $ok22Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfirst_ok'); + $context->builder->branchIf($ov22, $ov22Block, $ok22Block); + + $context->builder->positionAtEnd($ov22Block); + $sixtyfirstF22 = $context->builder->load($sixtyfirstVar->longArithOverflowDoubleSlot); + $nF22 = $context->builder->siToFp($n, $f64); + $sixtyninthF22 = $context->builder->fmul($sixtyfirstF22, $nF22); + $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); + $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); + $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); + $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); + $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); + $sixtyninthF22 = $context->builder->fmul($sixtyninthF22, $nF22); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF22 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok22Block); + $sixtysecondVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfirstLong, + $n + ); + $ov23 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysecondVar->longArithOverflowFlag); + if (null === $ov23 || null === $sixtysecondVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtysecond)'); + } + $sixtysecondLong = JITVariable::KIND_VARIABLE === $sixtysecondVar->kind + ? $context->builder->load($sixtysecondVar->value) + : $sixtysecondVar->value; + $ov23Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysecond_ov'); + $ok23Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysecond_ok'); + $context->builder->branchIf($ov23, $ov23Block, $ok23Block); + + $context->builder->positionAtEnd($ov23Block); + $sixtysecondF23 = $context->builder->load($sixtysecondVar->longArithOverflowDoubleSlot); + $nF23 = $context->builder->siToFp($n, $f64); + $sixtyninthF23 = $context->builder->fmul($sixtysecondF23, $nF23); + $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); + $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); + $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); + $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); + $sixtyninthF23 = $context->builder->fmul($sixtyninthF23, $nF23); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF23 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok23Block); + $sixtythirdVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysecondLong, + $n + ); + $ov24 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtythirdVar->longArithOverflowFlag); + if (null === $ov24 || null === $sixtythirdVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtythird)'); + } + $sixtythirdLong = JITVariable::KIND_VARIABLE === $sixtythirdVar->kind + ? $context->builder->load($sixtythirdVar->value) + : $sixtythirdVar->value; + $ov24Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtythird_ov'); + $ok24Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtythird_ok'); + $context->builder->branchIf($ov24, $ov24Block, $ok24Block); + + $context->builder->positionAtEnd($ov24Block); + $sixtythirdF24 = $context->builder->load($sixtythirdVar->longArithOverflowDoubleSlot); + $nF24 = $context->builder->siToFp($n, $f64); + $sixtyninthF24 = $context->builder->fmul($sixtythirdF24, $nF24); + $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); + $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); + $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); + $sixtyninthF24 = $context->builder->fmul($sixtyninthF24, $nF24); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF24 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok24Block); + $sixtyfourthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtythirdLong, + $n + ); + $ov25 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfourthVar->longArithOverflowFlag); + if (null === $ov25 || null === $sixtyfourthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyfourth)'); + } + $sixtyfourthLong = JITVariable::KIND_VARIABLE === $sixtyfourthVar->kind + ? $context->builder->load($sixtyfourthVar->value) + : $sixtyfourthVar->value; + $ov25Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfourth_ov'); + $ok25Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfourth_ok'); + $context->builder->branchIf($ov25, $ov25Block, $ok25Block); + + $context->builder->positionAtEnd($ov25Block); + $sixtyfourthF25 = $context->builder->load($sixtyfourthVar->longArithOverflowDoubleSlot); + $nF25 = $context->builder->siToFp($n, $f64); + $sixtyninthF25 = $context->builder->fmul($sixtyfourthF25, $nF25); + $sixtyninthF25 = $context->builder->fmul($sixtyninthF25, $nF25); + $sixtyninthF25 = $context->builder->fmul($sixtyninthF25, $nF25); + $sixtyninthF25 = $context->builder->fmul($sixtyninthF25, $nF25); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF25 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok25Block); + $sixtyfifthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfourthLong, + $n + ); + $ov26 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyfifthVar->longArithOverflowFlag); + if (null === $ov26 || null === $sixtyfifthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyfifth)'); + } + $sixtyfifthLong = JITVariable::KIND_VARIABLE === $sixtyfifthVar->kind + ? $context->builder->load($sixtyfifthVar->value) + : $sixtyfifthVar->value; + $ov26Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfifth_ov'); + $ok26Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyfifth_ok'); + $context->builder->branchIf($ov26, $ov26Block, $ok26Block); + + $context->builder->positionAtEnd($ov26Block); + $sixtyfifthF26 = $context->builder->load($sixtyfifthVar->longArithOverflowDoubleSlot); + $nF26 = $context->builder->siToFp($n, $f64); + $sixtyninthF26 = $context->builder->fmul($sixtyfifthF26, $nF26); + $sixtyninthF26 = $context->builder->fmul($sixtyninthF26, $nF26); + $sixtyninthF26 = $context->builder->fmul($sixtyninthF26, $nF26); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF26 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok26Block); + $sixtysixthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyfifthLong, + $n + ); + $ov27 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtysixthVar->longArithOverflowFlag); + if (null === $ov27 || null === $sixtysixthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtysixth)'); + } + $sixtysixthLong = JITVariable::KIND_VARIABLE === $sixtysixthVar->kind + ? $context->builder->load($sixtysixthVar->value) + : $sixtysixthVar->value; + $ov27Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysixth_ov'); + $ok27Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtysixth_ok'); + $context->builder->branchIf($ov27, $ov27Block, $ok27Block); + + $context->builder->positionAtEnd($ov27Block); + $sixtysixthF27 = $context->builder->load($sixtysixthVar->longArithOverflowDoubleSlot); + $nF27 = $context->builder->siToFp($n, $f64); + $sixtyninthF27 = $context->builder->fmul($sixtysixthF27, $nF27); + $sixtyninthF27 = $context->builder->fmul($sixtyninthF27, $nF27); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF27 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok27Block); + $sixtyseventhVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtysixthLong, + $n + ); + $ov28 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyseventhVar->longArithOverflowFlag); + if (null === $ov28 || null === $sixtyseventhVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyseventh)'); + } + $sixtyseventhLong = JITVariable::KIND_VARIABLE === $sixtyseventhVar->kind + ? $context->builder->load($sixtyseventhVar->value) + : $sixtyseventhVar->value; + $ov28Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyseventh_ov'); + $ok28Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyseventh_ok'); + $context->builder->branchIf($ov28, $ov28Block, $ok28Block); + + $context->builder->positionAtEnd($ov28Block); + $sixtyseventhF28 = $context->builder->load($sixtyseventhVar->longArithOverflowDoubleSlot); + $nF28 = $context->builder->siToFp($n, $f64); + $sixtyninthF28 = $context->builder->fmul($sixtyseventhF28, $nF28); + $sixtyninthF28 = $context->builder->fmul($sixtyninthF28, $nF28); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF28 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok28Block); + $sixtyeighthVar = JitLongArithOverflow::binaryNativeLong( + $context, + OpCode::TYPE_MUL, + $sixtyseventhLong, + $n + ); + $ov29 = JitLongArithOverflow::loadOverflowFlagI1($context, $sixtyeighthVar->longArithOverflowFlag); + if (null === $ov29 || null === $sixtyeighthVar->longArithOverflowDoubleSlot) { + throw new \LogicException('pow() **69 expected smul overflow metadata (sixtyeighth)'); + } + $sixtyeighthLong = JITVariable::KIND_VARIABLE === $sixtyeighthVar->kind + ? $context->builder->load($sixtyeighthVar->value) + : $sixtyeighthVar->value; + $ov29Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyeighth_ov'); + $ok29Block = BasicBlockHelper::append($context, 'pow_sixtyninth_sixtyeighth_ok'); + $context->builder->branchIf($ov29, $ov29Block, $ok29Block); + + $context->builder->positionAtEnd($ov29Block); + $sixtyeighthF29 = $context->builder->load($sixtyeighthVar->longArithOverflowDoubleSlot); + $nF29 = $context->builder->siToFp($n, $f64); + $sixtyninthF29 = $context->builder->fmul($sixtyeighthF29, $nF29); + $context->builder->call( + $context->lookupFunction('__value__writeDouble'), + $slotPtr, + $sixtyninthF29 + ); + JitValueBox::publishAfterWrite($context, $slotPtr); + $context->builder->branch($doneBlock); + + $context->builder->positionAtEnd($ok29Block); + JitLongArithOverflow::writeBoxedBinary( + $context, + OpCode::TYPE_MUL, + $sixtyeighthLong, + $n, + $slotPtr + ); + $context->builder->branch($doneBlock); + + + $context->builder->positionAtEnd($doneBlock); + + return true; + } + + return false; + } +} diff --git a/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha b/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha index 4ce629a9c7..b26a2f31eb 100755 --- a/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha +++ b/prelinked/bootstrap-gen0/.m3_compiler_lib_sidecar.sha @@ -1 +1 @@ -2d5b5221b23e94e9fe57f8e8514649046b8fff80 +b354171d25ab318567c9f7991c5f9f17bd4f75c4 diff --git a/script/size-budgets.json b/script/size-budgets.json index cd1fc0dd65..34e047f7ea 100644 --- a/script/size-budgets.json +++ b/script/size-budgets.json @@ -719,9 +719,9 @@ "note": "pow()/ ** LLVM lowering hub; integer chained-smul emit in JitPowIntegerEmit + Low + Mid + High (#36387)" }, "ext/standard/JitPowIntegerEmit.php": { - "budget": 16438, - "target": 25000, - "note": "integer pow()/ ** hub: Low/Mid/High dispatch; retains exponents 50..69 until Exponents50to69 extract (#36387/#36386)" + "budget": 107, + "target": 5000, + "note": "integer pow hub dispatching Low/Mid/Exponents50to69/High (#36387/#36386)" }, "ext/standard/JitPowIntegerEmitHigh.php": { "budget": 46827, @@ -737,6 +737,11 @@ "budget": 5037, "target": 8000, "note": "integer pow()/ ** chained-smul emit for compile-time exponents 30..49 extracted from JitPowIntegerEmit (#36387/#36386)" + }, + "ext/standard/JitPowIntegerEmitExponents50to69.php": { + "budget": 16374, + "target": 20000, + "note": "compile-time exponents 50-69 (#36387/#36386)" } }, "script_file_count": { diff --git a/test/selfhost/compiler_lib_spine_smoke/main.php b/test/selfhost/compiler_lib_spine_smoke/main.php index cd0a9fd1d1..cd1c408d0b 100644 --- a/test/selfhost/compiler_lib_spine_smoke/main.php +++ b/test/selfhost/compiler_lib_spine_smoke/main.php @@ -3097,6 +3097,7 @@ require_once __DIR__.'/../../../ext/standard/JitPopen.php'; require_once __DIR__.'/../../../ext/standard/JitPow.php'; require_once __DIR__.'/../../../ext/standard/JitPowIntegerEmit.php'; +require_once __DIR__.'/../../../ext/standard/JitPowIntegerEmitExponents50to69.php'; require_once __DIR__.'/../../../ext/standard/JitPowIntegerEmitMid.php'; require_once __DIR__.'/../../../ext/standard/JitPowIntegerEmitHigh.php'; require_once __DIR__.'/../../../ext/standard/JitPregFilter.php'; diff --git a/test/unit/BootstrapSelfhostBundleTest.php b/test/unit/BootstrapSelfhostBundleTest.php index 5d42bb4407..22310d16ef 100644 --- a/test/unit/BootstrapSelfhostBundleTest.php +++ b/test/unit/BootstrapSelfhostBundleTest.php @@ -569,7 +569,7 @@ public function testCompilerLibSpineSmokeBundleUnitCountAndKeyUnits(): void $contents = (string) file_get_contents($entry); $count = bootstrap_spine_counts(self::$root)['spine']; // Spine ratio 8017/8002 — Phase A inventory in compiler_lib_spine_smoke (#2202, #31835 typed parent assign). - $this->assertSame(8589, $count, 'M2 spine require_once units track Phase A inventory (#8559, #9234, #11629, #18550, #36079); coverage sync defers PregJitHelperThinAot (#24115) + NetworkServicesNameLookupThinAot (#27103)'); + $this->assertSame(8590, $count, 'M2 spine require_once units track Phase A inventory (#8559, #9234, #11629, #18550, #36079); coverage sync defers PregJitHelperThinAot (#24115) + NetworkServicesNameLookupThinAot (#27103)'); foreach (self::LIB_SPINE_SMOKE_NEW_UNITS as $unit) { $this->assertStringContainsString( "require_once __DIR__.'/../../../{$unit}';",