put register classes into arch_env struct, no need for complicated callbacks
[libfirm] / ir / be / arm / arm_cconv.h
index 1624341..b952b52 100644 (file)
 #include "gen_arm_regalloc_if.h"
 
 static const arch_register_t *const callee_saves[] = {
-       &arm_gp_regs[REG_R4],
-       &arm_gp_regs[REG_R5],
-       &arm_gp_regs[REG_R6],
-       &arm_gp_regs[REG_R7],
-       &arm_gp_regs[REG_R8],
-       &arm_gp_regs[REG_R9],
-       &arm_gp_regs[REG_R10],
-       &arm_gp_regs[REG_R11],
-       &arm_gp_regs[REG_LR],
+       &arm_registers[REG_R4],
+       &arm_registers[REG_R5],
+       &arm_registers[REG_R6],
+       &arm_registers[REG_R7],
+       &arm_registers[REG_R8],
+       &arm_registers[REG_R9],
+       &arm_registers[REG_R10],
+       &arm_registers[REG_R11],
+       &arm_registers[REG_LR],
 };
 
 static const arch_register_t *const caller_saves[] = {
-       &arm_gp_regs[REG_R0],
-       &arm_gp_regs[REG_R1],
-       &arm_gp_regs[REG_R2],
-       &arm_gp_regs[REG_R3],
-       &arm_gp_regs[REG_LR]
+       &arm_registers[REG_R0],
+       &arm_registers[REG_R1],
+       &arm_registers[REG_R2],
+       &arm_registers[REG_R3],
+       &arm_registers[REG_LR],
+
+       &arm_registers[REG_F0],
+       &arm_registers[REG_F1],
+       &arm_registers[REG_F2],
+       &arm_registers[REG_F3],
+       &arm_registers[REG_F4],
+       &arm_registers[REG_F5],
+       &arm_registers[REG_F6],
+       &arm_registers[REG_F7],
 };
 
 static const arch_register_t* const param_regs[] = {
-       &arm_gp_regs[REG_R0],
-       &arm_gp_regs[REG_R1],
-       &arm_gp_regs[REG_R2],
-       &arm_gp_regs[REG_R3]
+       &arm_registers[REG_R0],
+       &arm_registers[REG_R1],
+       &arm_registers[REG_R2],
+       &arm_registers[REG_R3]
 };
 
 static const arch_register_t* const result_regs[] = {
-       &arm_gp_regs[REG_R0],
-       &arm_gp_regs[REG_R1],
-       &arm_gp_regs[REG_R2],
-       &arm_gp_regs[REG_R3]
+       &arm_registers[REG_R0],
+       &arm_registers[REG_R1],
+       &arm_registers[REG_R2],
+       &arm_registers[REG_R3]
+};
+
+static const arch_register_t* const float_result_regs[] = {
+       &arm_registers[REG_F0],
+       &arm_registers[REG_F1]
 };
 
 /** information about a single parameter or result */
@@ -88,11 +102,11 @@ typedef struct calling_convention_t
  * Decides what goes to register or to stack and what stack offsets/
  * datatypes are used.
  */
-calling_convention_t *decide_calling_convention(ir_type *function_type);
+calling_convention_t *arm_decide_calling_convention(ir_type *function_type);
 
 /**
  * free memory used by a calling_convention_t
  */
-void free_calling_convention(calling_convention_t *cconv);
+void arm_free_calling_convention(calling_convention_t *cconv);
 
 #endif