prevent bogus simplifications
[qbe.git] / rv64 / all.h
bloba03973c3f0b1663334f2977e3d32d6f6bab3aba6
1 #include "../all.h"
3 typedef struct Rv64Op Rv64Op;
5 enum Rv64Reg {
6 /* caller-save */
7 T0 = RXX + 1, T1, T2, T3, T4, T5,
8 A0, A1, A2, A3, A4, A5, A6, A7,
10 /* callee-save */
11 S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11,
13 /* globally live */
14 FP, SP, GP, TP, RA,
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,
20 /* FP callee-save */
21 FS0, FS1, FS2, FS3, FS4, FS5, FS6, FS7, FS8, FS9, FS10, FS11,
23 /* reserved (see rv64/emit.c) */
24 T6, FT11,
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),
32 MAKESURE(reg_not_tmp, FT11 < (int)Tmp0);
34 struct Rv64Op {
35 char imm;
38 /* targ.c */
39 extern int rv64_rsave[];
40 extern int rv64_rclob[];
41 extern Rv64Op rv64_op[];
43 /* abi.c */
44 bits rv64_retregs(Ref, int[2]);
45 bits rv64_argregs(Ref, int[2]);
46 void rv64_abi(Fn *);
48 /* isel.c */
49 void rv64_isel(Fn *);
51 /* emit.c */
52 void rv64_emitfn(Fn *, FILE *);