[aarch64] Unimplemented Backend Features
I noticed there are lots of things that zebu doesn't implement, so I decided to make a list, and will try and keep it up to do (I would like to implement stuff here specifically the mu specific things like traps, watch points, threads and stack related things, as I feel currently Zebu is mostly just LLVM with exceptions and a garbage collector that doesn't collect..)
I'm not entirely sure what the x86-64 backend implements, so i've only listed things for aarch64: (note features with a * next to them haven't been tested properly yet), I have also included things I believe are not implemented on x86-64 but are on aarch64:
Types:
-
int<n>
: -
n = 1 (some arithmetic) -
* n <= 64 and n != 8, 16, 32, or 64 -
* n = 128, floating point conversions -
n > 64 and n != 128 -
struct
SSA variables -
hybrid
SSA variables -
array
SSA variables -
tagref64
-
threadref
-
`stackref`` -
framecursorref
-
irbuilderref
-
vector<t n>
Instruction Clauses:
-
keep Alive Clauses -
Exception clauses -
CALL -
binop (divison by zero) -
NEW/NEYHYBRID (allocation failure) -
LOAD/STORE/CMPXCHG (null referenced) -
CCALL (implementation defined)
Instructions:
-
TAILCALL
:-
When the callee's stack argument size is less than or equal to the caller's -
When the callee's stack argument size is greater than the caller's
-
-
For unimplemented types: -
EXTRACTVALUE
/INSERTVALUE
-
EXTRACTELEMENT
/INSERTELEMENT
-
SHUFFLEVECTOR
-
-
Memory -
ALLOCA
/ALLOCAHYBRID
-
* CMPXCHG
-
* FENCE
-
ATOMICRMW
-
Traps/watchpoints -
TRAP
-
WATCHPOINT
-
WPBRANCH
-
Thread/stack instructions -
NEWTHREAD
-
SWAPTSTACK
Common Instructions
-
thread and stack things: -
new_stack -
kill_stack -
thread_exit -
current_stack -
set_threadlocal -
get_threadlocal -
tr64.* -
futex.* -
kill_dependency -
native.* (except nativ.pin and nativ.unpnin) -
meta.* -
irbuilder.*