-
-
Notifications
You must be signed in to change notification settings - Fork 46
Open
Description
I will add to this as I go along when I see things which may be missing.
API
- Any function that takes a
const char*also take a length where possible- Maybe using your convention of when
ptrdiff_tis -1, it's NUL terminated
- Maybe using your convention of when
- Function Signature ABI handling
- Documentation
- Better Abstraction that handles it for you, maybe?
-
f16type- Even if it is just
u16internally or whatever
- Even if it is just
- Range bounds on values to improve generation of bounds checks
- If a pointer-like array has a specific range to it, and an integer is know to have a specific range, then a bounds check may be omitted
- Minimum alignment of a
TB_Node*(useful in some instructions that require an explicit alignment)
Instructions
-
allocaequivalent -
tb_inst_ptris missing -
tb_inst_sint/tb_inst_uintfor types >64 bits (e.g. 128-bits) -
tb_inst_memmove- High Priority
-
TB_(SHL|SHR|SAR) with slightly different to C semantics- Instead of C-like, I want Odin-like which is defined to have
x<<2==(x<<1)<<1
- Instead of C-like, I want Odin-like which is defined to have
-
TB_BSWAPwork with floats- useful for endian specific types and file formats
- add/sub/mul with overflow check
- Low priority, and for mul it can be done with
TB_MULPAIR
- Low priority, and for mul it can be done with
- add/sub/mul with saturation
- Extension to
TB_ArithmeticBehaviormaybe? - Very low priority
- Extension to
- fused multiply add (fma)
- Very low priority
- nontemporal stores and loads
- Low priority
- Fixed point arithmetic? (I'm not sure about this one)
- Very low priority
- Prefetch (read/write data/instruction)
- Very low priority
- WASM intrinsics (when WASM is needed)
wasm.memory.growwasm.memory.sizewasm.memory.atomic.wait32wasm.memory.atomic.notify
-
tb_inst_memzerohelper?- Is this even a needed?
TB_API void tb_inst_memzero(TB_Function* f, TB_Node* dst, TB_Node* val, TB_Node* count, TB_CharUnits align, bool is_volatile) {
tb_inst_memset(f, dst, tb_inst_uint(f, TB_TYPE_I8, 0), count, align, is_volatile);
}"Intrinsics"
-
cpu_relaxpauseon amd64isbon arm64
-
x86_cpuid -
x86_xgetbv - Valgrind client request
- It's just a weird set of instructions that does nothing but Valgrind et al looks for
IR Debugging
- Linearized Textual IR Printer (not GraphViz)
Debug Information
- Set column information along with file and line information
- Ability to set scopes
- Enum Types
- Named types
Questions
- Does
tb_inst_set_region_namerequire that the name passed is in unique to that function or does Tilde handle this? - How to get the previous instruction?—i.e. of a region
Metadata
Metadata
Assignees
Labels
No labels