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 *);