| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
|
Code size report: Reference: mimxrt/modmachine: Fix machine.deepsleep(ms) for the MIMXRT1176 port. [09f5bb4]
Comparison: py,ports,tests,tools: Add AArch64 native emitter and inline assembler. [merge of 11bc11b]
mpy-cross: +0 +0.000%
bare-arm: +0 +0.000%
minimal x86: +0 +0.000%
unix x64: +0 +0.000% standard
stm32: +0 +0.000% PYBV10
esp32: +0 +0.000% ESP32_GENERIC
mimxrt: +0 +0.000% TEENSY40
rp2: +0 +0.000% RPI_PICO_W
samd: +0 +0.000% ADAFRUIT_ITSYBITSY_M4_EXPRESS
qemu rv32: +0 +0.000% VIRT_RV32
|
Sorry, something went wrong.
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## master #19697 +/- ##
=======================================
Coverage 98.55% 98.55%
=======================================
Files 182 182
Lines 23335 23335
Branches 5 5
=======================================
Hits 22998 22998
Misses 336 336
Partials 1 1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness.
|
Sorry, something went wrong.
Add a complete AArch64 (ARMv8-A) assembler and native/Viper emitter to the MicroPython compiler. This enables runtime native code generation and an inline assembler for 64-bit ARM targets. Key additions include: - Core AArch64 assembler, native/Viper emitters, and instruction encoders in py/. - QEMU port support: VIRT_AARCH64 and VIRT_AARCH64_FLOAT boards, including startup, exception handling, timer, PL011 UART, and semihosting. Hardware-accelerated sqrt/sqrtf in libm. - Unix port support for AArch64 native/inline emitters. - Comprehensive test suite covering 64-bit constants, large stack frames, and large pointer offsets. - CI jobs for QEMU bare-metal and Unix AArch64 emulation. Note that persistent native .mpy loading is deliberately disabled for AArch64 because the current .mpy format has no available architecture IDs. This is deferred to the .mpy v7 toolchain work (see micropython#19386). This change does not increase the code size for any other architecture, as the new emitters are only compiled when targeting AArch64. Signed-off-by: Stride Zhou <stride_anderson@qq.com>
| Back | FazBrowse Home | New Git URL |
1. Motivation & Problem Statement
Currently, MicroPython lacks runtime native code generation (Native/Viper) and inline assembler support for the 64-bit ARM (AArch64/ARMv8-A) architecture. This limits performance optimization opportunities on modern 64-bit ARM platforms, such as native Unix hosts or QEMU-emulated environments. This PR aims to bridge this gap by providing a complete, robust AArch64 instruction emission and inline assembly framework.
2. Summary of Changes
This PR introduces ~6,200+ lines of code, structured across the following areas:
3. Testing & Verification
Strictly adhering to project CI standards, the following verifications have been completed:
4. Trade-offs, Limitations & Alternatives
5. Compliance & Generative AI Declaration