22 *
23 */
24
25 #ifndef CPU_X86_C2_MACROASSEMBLER_X86_HPP
26 #define CPU_X86_C2_MACROASSEMBLER_X86_HPP
27
28 // C2_MacroAssembler contains high-level macros for C2
29
30 public:
31 // C2 compiled method's prolog code.
32 void verified_entry(int framesize, int stack_bang_size, bool fp_mode_24b, bool is_stub);
33
34 Assembler::AvxVectorLen vector_length_encoding(int vlen_in_bytes);
35
36 // Code used by cmpFastLock and cmpFastUnlock mach instructions in .ad file.
37 // See full description in c2_MacroAssembler_x86.cpp.
38 void fast_lock(Register obj, Register box, Register rax_reg,
39 Register t, Register thread);
40 void fast_unlock(Register obj, Register reg_rax, Register t, Register thread);
41
42 void verify_int_in_range(uint idx, const TypeInt* t, Register val);
43 void verify_long_in_range(uint idx, const TypeLong* t, Register val, Register tmp);
44
45 // Generic instructions support for use in .ad files C2 code generation
46 void vabsnegd(int opcode, XMMRegister dst, XMMRegister src);
47 void vabsnegd(int opcode, XMMRegister dst, XMMRegister src, int vector_len);
48 void vabsnegf(int opcode, XMMRegister dst, XMMRegister src);
49 void vabsnegf(int opcode, XMMRegister dst, XMMRegister src, int vector_len);
50
51 void pminmax(int opcode, BasicType elem_bt, XMMRegister dst, XMMRegister src,
52 XMMRegister tmp = xnoreg);
53 void vpminmax(int opcode, BasicType elem_bt,
54 XMMRegister dst, XMMRegister src1, XMMRegister src2,
55 int vlen_enc);
56
57 void vpuminmax(int opcode, BasicType elem_bt,
58 XMMRegister dst, XMMRegister src1, XMMRegister src2,
59 int vlen_enc);
60
61 void vpuminmax(int opcode, BasicType elem_bt,
|
22 *
23 */
24
25 #ifndef CPU_X86_C2_MACROASSEMBLER_X86_HPP
26 #define CPU_X86_C2_MACROASSEMBLER_X86_HPP
27
28 // C2_MacroAssembler contains high-level macros for C2
29
30 public:
31 // C2 compiled method's prolog code.
32 void verified_entry(int framesize, int stack_bang_size, bool fp_mode_24b, bool is_stub);
33
34 Assembler::AvxVectorLen vector_length_encoding(int vlen_in_bytes);
35
36 // Code used by cmpFastLock and cmpFastUnlock mach instructions in .ad file.
37 // See full description in c2_MacroAssembler_x86.cpp.
38 void fast_lock(Register obj, Register box, Register rax_reg,
39 Register t, Register thread);
40 void fast_unlock(Register obj, Register reg_rax, Register t, Register thread);
41
42 static void abort_verify_int_in_range(uint idx, jint val, jint lo, jint hi);
43 static void abort_verify_long_in_range(uint idx, jlong val, jlong lo, jlong hi);
44
45 void verify_int_in_range(uint idx, const TypeInt* t, Register val);
46 void verify_long_in_range(uint idx, const TypeLong* t, Register val, Register tmp);
47
48 // Generic instructions support for use in .ad files C2 code generation
49 void vabsnegd(int opcode, XMMRegister dst, XMMRegister src);
50 void vabsnegd(int opcode, XMMRegister dst, XMMRegister src, int vector_len);
51 void vabsnegf(int opcode, XMMRegister dst, XMMRegister src);
52 void vabsnegf(int opcode, XMMRegister dst, XMMRegister src, int vector_len);
53
54 void pminmax(int opcode, BasicType elem_bt, XMMRegister dst, XMMRegister src,
55 XMMRegister tmp = xnoreg);
56 void vpminmax(int opcode, BasicType elem_bt,
57 XMMRegister dst, XMMRegister src1, XMMRegister src2,
58 int vlen_enc);
59
60 void vpuminmax(int opcode, BasicType elem_bt,
61 XMMRegister dst, XMMRegister src1, XMMRegister src2,
62 int vlen_enc);
63
64 void vpuminmax(int opcode, BasicType elem_bt,
|