all.h 897 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "../all.h"
  2. enum Arm64Reg {
  3. R0 = RXX + 1,
  4. R1, R2, R3, R4, R5, R6, R7,
  5. R8, R9, R10, R11, R12, R13, R14, R15,
  6. IP0, IP1, R18, R19, R20, R21, R22, R23,
  7. R24, R25, R26, R27, R28, FP, LR, SP,
  8. V0, V1, V2, V3, V4, V5, V6, V7,
  9. V8, V9, V10, V11, V12, V13, V14, V15,
  10. V16, V17, V18, V19, V20, V21, V22, V23,
  11. V24, V25, V26, V27, V28, V29, V30, /* V31, */
  12. NFPR = V30 - V0 + 1,
  13. NGPR = SP - R0 + 1,
  14. NGPS = R18 - R0 + 1 /* LR */ + 1,
  15. NFPS = (V7 - V0 + 1) + (V30 - V16 + 1),
  16. NCLR = (R28 - R19 + 1) + (V15 - V8 + 1),
  17. };
  18. MAKESURE(reg_not_tmp, V30 < (int)Tmp0);
  19. /* targ.c */
  20. extern int arm64_rsave[];
  21. extern int arm64_rclob[];
  22. /* abi.c */
  23. bits arm64_retregs(Ref, int[2]);
  24. bits arm64_argregs(Ref, int[2]);
  25. void arm64_abi(Fn *);
  26. void apple_extsb(Fn *);
  27. /* isel.c */
  28. int arm64_logimm(uint64_t, int);
  29. void arm64_isel(Fn *);
  30. /* emit.c */
  31. void arm64_emitfn(Fn *, FILE *);