aboutsummaryrefslogtreecommitdiffhomepage
path: root/ir.h
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2023-06-06 15:08:46 +0200
committerlemon <lsof@mailbox.org>2023-06-06 15:08:46 +0200
commit86625b1166bd39e28b4dd4995ed6cd88c0bdde7e (patch)
tree2bfd67ddc7e3b4bb4c4a3d951dfc80fac7c4bad3 /ir.h
parent3388975ee3a0814e9c95863035ab0d122174c549 (diff)
codegen skeleton
Diffstat (limited to 'ir.h')
-rw-r--r--ir.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/ir.h b/ir.h
index 2b6267a..1b5e20f 100644
--- a/ir.h
+++ b/ir.h
@@ -87,6 +87,7 @@ enum op {
#define oiscmp(o) in_range(o, Oequ, Oulte)
#define oisalloca(o) in_range(o, Oalloca1, Oalloca16)
#define oisstore(o) in_range(o, Ostore1, Ostore8)
+#define oisload(o) in_range(o, Oloads1, Oloadf8)
enum intrin {
INxxx,
@@ -153,8 +154,12 @@ struct mctarg {
* if passed by pointer cls[0] == KPTR, r[0] contains integer register or -1 if stack
*/
int (*abiarg)(short r[2], uchar cls[2], int *ni, int *nf, int *ns, union irtype);
+
+ void (*emit)(struct function *);
};
+enum { MAXINSTR = 1<<14 };
+
extern uchar type2cls[];
extern uchar cls2siz[];
extern const uchar siz2intcls[];