30 enum {
31 #if defined(VM_LITTLE_ENDIAN)
32 pd_lo_word_offset_in_bytes = 0,
33 pd_hi_word_offset_in_bytes = BytesPerInt
34 #else
35 pd_lo_word_offset_in_bytes = BytesPerInt,
36 pd_hi_word_offset_in_bytes = 0
37 #endif
38 };
39
40
41 // Explicit rounding operations are not required to implement the strictFP mode.
42 enum {
43 pd_strict_fp_requires_explicit_rounding = false
44 };
45
46
47 // registers
48 enum {
49 pd_nof_cpu_regs_frame_map = 32, // Number of registers used during code emission.
50 pd_nof_caller_save_cpu_regs_frame_map = 27, // Number of cpu registers killed by calls. (At least R3_ARG1 ... R10_ARG8, but using all like C2.)
51 pd_nof_cpu_regs_reg_alloc = 27, // Number of registers that are visible to register allocator.
52 pd_nof_cpu_regs_linearscan = 32, // Number of registers visible linear scan.
53 pd_first_callee_saved_reg = pd_nof_caller_save_cpu_regs_frame_map,
54 pd_last_callee_saved_reg = pd_nof_cpu_regs_reg_alloc - 1,
55 pd_first_cpu_reg = 0,
56 pd_last_cpu_reg = pd_nof_cpu_regs_reg_alloc - 1,
57
58 pd_nof_fpu_regs_frame_map = 32, // Number of registers used during code emission.
59 pd_nof_caller_save_fpu_regs_frame_map = 32, // Number of fpu registers killed by calls.
60 pd_nof_fpu_regs_reg_alloc = 32, // Number of registers that are visible to register allocator.
61 pd_nof_fpu_regs_linearscan = 32, // Number of registers visible to linear scan.
62 pd_first_fpu_reg = pd_nof_cpu_regs_frame_map,
63 pd_last_fpu_reg = pd_nof_cpu_regs_frame_map + pd_nof_fpu_regs_reg_alloc - 1,
64
65 pd_nof_xmm_regs_linearscan = 0,
66 pd_nof_caller_save_xmm_regs = 0,
67 pd_first_xmm_reg = -1,
68 pd_last_xmm_reg = -1
69 };
70
71 // For debug info: a float value in a register is saved in single precision by runtime stubs.
|
30 enum {
31 #if defined(VM_LITTLE_ENDIAN)
32 pd_lo_word_offset_in_bytes = 0,
33 pd_hi_word_offset_in_bytes = BytesPerInt
34 #else
35 pd_lo_word_offset_in_bytes = BytesPerInt,
36 pd_hi_word_offset_in_bytes = 0
37 #endif
38 };
39
40
41 // Explicit rounding operations are not required to implement the strictFP mode.
42 enum {
43 pd_strict_fp_requires_explicit_rounding = false
44 };
45
46
47 // registers
48 enum {
49 pd_nof_cpu_regs_frame_map = 32, // Number of registers used during code emission.
50 pd_nof_caller_save_cpu_regs_frame_map = 26, // Number of cpu registers killed by calls. (At least R3_ARG1 ... R10_ARG8, but using all like C2.)
51 pd_nof_cpu_regs_reg_alloc = 26, // Number of registers that are visible to register allocator.
52 pd_nof_cpu_regs_linearscan = 32, // Number of registers visible linear scan.
53 pd_first_callee_saved_reg = pd_nof_caller_save_cpu_regs_frame_map,
54 pd_last_callee_saved_reg = pd_nof_cpu_regs_reg_alloc - 1,
55 pd_first_cpu_reg = 0,
56 pd_last_cpu_reg = pd_nof_cpu_regs_reg_alloc - 1,
57
58 pd_nof_fpu_regs_frame_map = 32, // Number of registers used during code emission.
59 pd_nof_caller_save_fpu_regs_frame_map = 32, // Number of fpu registers killed by calls.
60 pd_nof_fpu_regs_reg_alloc = 32, // Number of registers that are visible to register allocator.
61 pd_nof_fpu_regs_linearscan = 32, // Number of registers visible to linear scan.
62 pd_first_fpu_reg = pd_nof_cpu_regs_frame_map,
63 pd_last_fpu_reg = pd_nof_cpu_regs_frame_map + pd_nof_fpu_regs_reg_alloc - 1,
64
65 pd_nof_xmm_regs_linearscan = 0,
66 pd_nof_caller_save_xmm_regs = 0,
67 pd_first_xmm_reg = -1,
68 pd_last_xmm_reg = -1
69 };
70
71 // For debug info: a float value in a register is saved in single precision by runtime stubs.
|