27 #define CPU_RISCV_C2_MACROASSEMBLER_RISCV_HPP
28
29 // C2_MacroAssembler contains high-level macros for C2
30
31 private:
32 // Return true if the phase output is in the scratch emit size mode.
33 virtual bool in_scratch_emit_size() override;
34
35 void element_compare(Register r1, Register r2,
36 Register result, Register cnt,
37 Register tmp1, Register tmp2,
38 VectorRegister vr1, VectorRegister vr2,
39 VectorRegister vrs,
40 bool is_latin, Label& DONE, Assembler::LMUL lmul);
41
42 void compress_bits_v(Register dst, Register src, Register mask, bool is_long);
43 void expand_bits_v(Register dst, Register src, Register mask, bool is_long);
44
45 public:
46 // Code used by cmpFastLock and cmpFastUnlock mach instructions in .ad file.
47 void fast_lock(Register object, Register box, Register tmp1, Register tmp2, Register tmp3);
48 void fast_unlock(Register object, Register box, Register tmp1, Register tmp2);
49 // Code used by cmpFastLockLightweight and cmpFastUnlockLightweight mach instructions in .ad file.
50 void fast_lock_lightweight(Register object, Register box, Register tmp1, Register tmp2, Register tmp3);
51 void fast_unlock_lightweight(Register object, Register box, Register tmp1, Register tmp2, Register tmp3);
52
53 void string_compare(Register str1, Register str2,
54 Register cnt1, Register cnt2, Register result,
55 Register tmp1, Register tmp2, Register tmp3,
56 int ae);
57
58 void string_indexof_char_short(Register str1, Register cnt1,
59 Register ch, Register result,
60 bool isL);
61
62 void string_indexof_char(Register str1, Register cnt1,
63 Register ch, Register result,
64 Register tmp1, Register tmp2,
65 Register tmp3, Register tmp4,
66 bool isL);
67
68 void string_indexof(Register str1, Register str2,
69 Register cnt1, Register cnt2,
70 Register tmp1, Register tmp2,
71 Register tmp3, Register tmp4,
|
27 #define CPU_RISCV_C2_MACROASSEMBLER_RISCV_HPP
28
29 // C2_MacroAssembler contains high-level macros for C2
30
31 private:
32 // Return true if the phase output is in the scratch emit size mode.
33 virtual bool in_scratch_emit_size() override;
34
35 void element_compare(Register r1, Register r2,
36 Register result, Register cnt,
37 Register tmp1, Register tmp2,
38 VectorRegister vr1, VectorRegister vr2,
39 VectorRegister vrs,
40 bool is_latin, Label& DONE, Assembler::LMUL lmul);
41
42 void compress_bits_v(Register dst, Register src, Register mask, bool is_long);
43 void expand_bits_v(Register dst, Register src, Register mask, bool is_long);
44
45 public:
46 // Code used by cmpFastLock and cmpFastUnlock mach instructions in .ad file.
47 void fast_lock(Register object, Register box,
48 Register tmp1, Register tmp2, Register tmp3, Register tmp4);
49 void fast_unlock(Register object, Register box, Register tmp1, Register tmp2);
50
51 // Code used by cmpFastLockLightweight and cmpFastUnlockLightweight mach instructions in .ad file.
52 void fast_lock_lightweight(Register object, Register box,
53 Register tmp1, Register tmp2, Register tmp3, Register tmp4);
54 void fast_unlock_lightweight(Register object, Register box,
55 Register tmp1, Register tmp2, Register tmp3);
56
57 void string_compare(Register str1, Register str2,
58 Register cnt1, Register cnt2, Register result,
59 Register tmp1, Register tmp2, Register tmp3,
60 int ae);
61
62 void string_indexof_char_short(Register str1, Register cnt1,
63 Register ch, Register result,
64 bool isL);
65
66 void string_indexof_char(Register str1, Register cnt1,
67 Register ch, Register result,
68 Register tmp1, Register tmp2,
69 Register tmp3, Register tmp4,
70 bool isL);
71
72 void string_indexof(Register str1, Register str2,
73 Register cnt1, Register cnt2,
74 Register tmp1, Register tmp2,
75 Register tmp3, Register tmp4,
|