qbe

Internal scc patchset buffer for QBE
Log | Files | Refs | README | LICENSE

all.h (994B)


      1 #include "../all.h"
      2 
      3 typedef struct Rv64Op Rv64Op;
      4 
      5 enum Rv64Reg {
      6 	/* caller-save */
      7 	T0 = RXX + 1, T1, T2, T3, T4, T5,
      8 	A0, A1, A2, A3, A4, A5, A6, A7,
      9 
     10 	/* callee-save */
     11 	S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11,
     12 
     13 	/* globally live */
     14 	FP, SP, GP, TP, RA,
     15 
     16 	/* FP caller-save */
     17 	FT0, FT1, FT2, FT3, FT4, FT5, FT6, FT7, FT8, FT9, FT10,
     18 	FA0, FA1, FA2, FA3, FA4, FA5, FA6, FA7,
     19 
     20 	/* FP callee-save */
     21 	FS0, FS1, FS2, FS3, FS4, FS5, FS6, FS7, FS8, FS9, FS10, FS11,
     22 
     23 	/* reserved (see rv64/emit.c) */
     24 	T6, FT11,
     25 
     26 	NFPR = FS11 - FT0 + 1,
     27 	NGPR = RA - T0 + 1,
     28 	NGPS = A7 - T0 + 1,
     29 	NFPS = FA7 - FT0 + 1,
     30 	NCLR = (S11 - S1 + 1) + (FS11 - FS0 + 1),
     31 };
     32 MAKESURE(reg_not_tmp, FT11 < (int)Tmp0);
     33 
     34 struct Rv64Op {
     35 	char imm;
     36 };
     37 
     38 /* targ.c */
     39 extern int rv64_rsave[];
     40 extern int rv64_rclob[];
     41 extern Rv64Op rv64_op[];
     42 
     43 /* abi.c */
     44 bits rv64_retregs(Ref, int[2]);
     45 bits rv64_argregs(Ref, int[2]);
     46 void rv64_abi(Fn *);
     47 
     48 /* isel.c */
     49 void rv64_isel(Fn *);
     50 
     51 /* emit.c */
     52 void rv64_emitfn(Fn *, FILE *);