new blit instruction

This commit is contained in:
Quentin Carbonneaux 2022-12-10 23:16:21 +01:00
parent 15e25a61b3
commit 26c1c30b7d
16 changed files with 398 additions and 103 deletions

11
all.h
View file

@ -83,7 +83,8 @@ struct Ref {
enum {
RTmp,
RCon,
RType,
RInt,
RType, /* last kind to come out of the parser */
RSlot,
RCall,
RMem,
@ -97,6 +98,7 @@ enum {
#define TYPE(x) (Ref){RType, x}
#define CALL(x) (Ref){RCall, x}
#define MEM(x) (Ref){RMem, x}
#define INT(x) (Ref){RInt, (x)&0x1fffffff}
static inline int req(Ref a, Ref b)
{
@ -474,8 +476,6 @@ int symeq(Sym, Sym);
Ref newcon(Con *, Fn *);
Ref getcon(int64_t, Fn *);
int addcon(Con *, Con *);
void blit(Ref, uint, Ref, uint, uint, Fn *);
void blit0(Ref, Ref, uint, Fn *);
void salloc(Ref, Ref, Fn *);
void dumpts(BSet *, Tmp *, FILE *);
@ -528,7 +528,7 @@ void coalesce(Fn *);
/* alias.c */
void fillalias(Fn *);
void getalias(Alias *, Ref, Fn *);
int alias(Ref, int, Ref, int, int *, Fn *);
int alias(Ref, int, int, Ref, int, int *, Fn *);
int escapes(Ref, Fn *);
/* load.c */
@ -549,6 +549,9 @@ void copy(Fn *);
/* fold.c */
void fold(Fn *);
/* simpl.c */
void simpl(Fn *);
/* live.c */
void liveon(BSet *, Blk *, Blk *);
void filllive(Fn *);