Comments (3)
Plan: Insert load parameter instruction into the first block that dominates all other blocks which use the parameter. The load will move the parameter to a virtual instruction. The load instruction is placed at the end of the block, or if the block contains any existing load instruction, then immediately prior to that instruction. Replace all other load instructions with a move from the virtual instruction.
from mosa-project.
Alternative longer-term option: Similar to before, but instead move all the load instructions to the beginning of the first block. And write another optimization stage that re-orders instructions to reduce the distance between assignments (results) and uses. The register allocator will then "best-fit" the live ranges.
from mosa-project.
The value numbering optimization implemented this optimization and removes redundant parameter loads.
from mosa-project.
Related Issues (20)
- Add X64 Popcnt/Tzcnt/Lzcnt/AndN instructions
- Add x86 IMul instruction
- BUG: Launcher tool missing command line auguments HOT 1
- Add Methods to Korlib
- Integrate Visual Studio Debugger
- BUG: Unit test failures with Release build HOT 2
- Compiler cannot compile `System.Runtime.CompilerServices.NullableAttribute` HOT 2
- Add Serial Debug Logging
- Add Hardware Abstraction Layer (HAL) to BareMetal
- Clean up build annotations and warnings
- Integrate Unit Test Engine into BareMetal
- Assertion fails during ComputeArgumentSize HOT 7
- Adding DeviceService to ServiceManager causes a `System.IndexOutOfRangeException` HOT 2
- BUG: Conversion from R4/R8 to U4 HOT 2
- Add ARM64 Opcodes HOT 3
- Create ARM64 Projects HOT 2
- Add ARM32/ARM64 Launch options to Qemu HOT 1
- Support VMware Workstation GDB Stub
- Add Intel SARX/SHLX/SHRX instructions
- Add X86 Popcnt/Tzcnt/Lzcnt instructions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mosa-project.