Got OpenGOAL building and running natively on Apple Silicon.
This is the rest of the port after the smaller arm64 emitter PRs. I was
told pushing one big PR was okay. This covers goalc, the runtime,
linker, kernel and the GOAL asm.
The new paths have native tests. I also found four more emitter bugs
while running it. They're in scalar sqrt, 128-bit stores, scalar max and
indexed stores above 4 GB.
Spent a while cleaning it up so it's easier to read. 4am gotta sleep lol
Closes#3841
---------
Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
This PR does the following:
- Designs a mechanism by which arm64 instructions can be encoded and
emitted
- Dispatch our higher-level instruction emitting calls to either x86 or
arm64 instructions depending on what the compiler is set to (defaults to
x86)
- Bare minimum scaffolding to get the arm64 instructions successfully
executing atleast on apple silicon
- Implement enough instructions to get the codetester test suite passing
on arm
I havn't tested it yet, but I can almost guarantee that atleast `goalc`
will not work in the slightest!
But the project is atleast fully compiling. My hope is to start
translating some AVX to NEON next / get `goalc` working...eventually.
* first pass
* first pass at shrinking fr3s
* only need to load vertices once
* avx2 detect and switch
* fix build
* another ifx'
* one more
* fix the sky and stupid math bug in size check
* improve performance on intel graphics
* more tweaks, add a glfinish button
* remove divide in fragment shader
* temp
* add cpu sky blend
* use vao
* change format
* use floats in direct renderer
* format
* format again
* tfrag ice