mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-24 22:24:54 +00:00
Implememting named register intrinsics
This patch implements the infrastructure to use named register constructs in programs that need access to specific registers (bare metal, kernels, etc). So far, only the stack pointer is supported as a technology preview, but as it is, the intrinsic can already support all non-allocatable registers from any architecture. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208104 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -72,6 +72,11 @@ namespace ISD {
|
||||
/// the parent's frame or return address, and so on.
|
||||
FRAMEADDR, RETURNADDR,
|
||||
|
||||
/// READ_REGISTER, WRITE_REGISTER - This node represents llvm.register on
|
||||
/// the DAG, which implements the named register global variables extension.
|
||||
READ_REGISTER,
|
||||
WRITE_REGISTER,
|
||||
|
||||
/// FRAME_TO_ARGS_OFFSET - This node represents offset from frame pointer to
|
||||
/// first (possible) on-stack argument. This is needed for correct stack
|
||||
/// adjustment during unwind.
|
||||
|
@@ -242,6 +242,8 @@ private:
|
||||
|
||||
// Calls to these functions are generated by tblgen.
|
||||
SDNode *Select_INLINEASM(SDNode *N);
|
||||
SDNode *Select_READ_REGISTER(SDNode *N);
|
||||
SDNode *Select_WRITE_REGISTER(SDNode *N);
|
||||
SDNode *Select_UNDEF(SDNode *N);
|
||||
void CannotYetSelect(SDNode *N);
|
||||
|
||||
|
Reference in New Issue
Block a user