diff options
Diffstat (limited to 'src/jit/target.h')
-rw-r--r-- | src/jit/target.h | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/src/jit/target.h b/src/jit/target.h index fa0b18af3e..a726525488 100644 --- a/src/jit/target.h +++ b/src/jit/target.h @@ -6,11 +6,6 @@ #ifndef _TARGET_H_ #define _TARGET_H_ -// Inform includers that we're in a context in which a target has been set. -#if defined(_TARGET_X86_) || defined(_TARGET_AMD64_) || defined(_TARGET_ARM_) -#define _TARGET_SET_ -#endif - // If the UNIX_AMD64_ABI is defined make sure that _TARGET_AMD64_ is also defined. #if defined(UNIX_AMD64_ABI) #if !defined(_TARGET_AMD64_) @@ -365,6 +360,9 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #endif // !LEGACY_BACKEND +#ifdef FEATURE_SIMD + #define ALIGN_SIMD_TYPES 1 // whether SIMD type locals are to be aligned +#endif // FEATURE_SIMD #define FEATURE_WRITE_BARRIER 1 // Generate the proper WriteBarrier calls for GC #define FEATURE_FIXED_OUT_ARGS 0 // X86 uses push instructions to pass args @@ -585,7 +583,14 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define RBM_CALLEE_TRASH_NOGC RBM_EDX #endif // NOGC_WRITE_BARRIERS - // IL stub's secret parameter (CORJIT_FLG_PUBLISH_SECRET_PARAM) + // GenericPInvokeCalliHelper unmanaged target parameter + #define REG_PINVOKE_TARGET_PARAM REG_EAX + #define RBM_PINVOKE_TARGET_PARAM RBM_EAX + + // GenericPInvokeCalliHelper cookie parameter + #define REG_PINVOKE_COOKIE_PARAM REG_STK + + // IL stub's secret parameter (JitFlags::JIT_FLAG_PUBLISH_SECRET_PARAM) #define REG_SECRET_STUB_PARAM REG_EAX #define RBM_SECRET_STUB_PARAM RBM_EAX @@ -594,6 +599,10 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define RBM_VIRTUAL_STUB_PARAM RBM_EAX #define PREDICT_REG_VIRTUAL_STUB_PARAM PREDICT_REG_EAX + // VSD target address register + #define REG_VIRTUAL_STUB_TARGET REG_EAX + #define RBM_VIRTUAL_STUB_TARGET RBM_EAX + // Registers used by PInvoke frame setup #define REG_PINVOKE_FRAME REG_EDI // EDI is p/invoke "Frame" pointer argument to CORINFO_HELP_INIT_PINVOKE_FRAME helper #define RBM_PINVOKE_FRAME RBM_EDI @@ -670,6 +679,12 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define RBM_ARG_REGS (RBM_ARG_0|RBM_ARG_1) + // The registers trashed by profiler enter/leave/tailcall hook + // See vm\i386\asmhelpers.asm for more details. + #define RBM_PROFILER_ENTER_TRASH RBM_NONE + #define RBM_PROFILER_LEAVE_TRASH RBM_NONE + #define RBM_PROFILER_TAILCALL_TRASH (RBM_ALLINT & ~RBM_ARG_REGS) + // What sort of reloc do we use for [disp32] address mode #define IMAGE_REL_BASED_DISP32 IMAGE_REL_BASED_HIGHLOW @@ -968,7 +983,7 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define RBM_PINVOKE_TARGET_PARAM RBM_R10 #define PREDICT_REG_PINVOKE_TARGET_PARAM PREDICT_REG_R10 - // IL stub's secret MethodDesc parameter (CORJIT_FLG_PUBLISH_SECRET_PARAM) + // IL stub's secret MethodDesc parameter (JitFlags::JIT_FLAG_PUBLISH_SECRET_PARAM) #define REG_SECRET_STUB_PARAM REG_R10 #define RBM_SECRET_STUB_PARAM RBM_R10 @@ -1111,9 +1126,10 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #endif // !UNIX_AMD64_ABI // The registers trashed by profiler enter/leave/tailcall hook - // See vm\amd64\amshelpers.asm for more details. - #define RBM_PROFILER_ENTER_TRASH RBM_CALLEE_TRASH - #define RBM_PROFILER_LEAVE_TRASH (RBM_CALLEE_TRASH & ~(RBM_FLOATRET | RBM_INTRET)) + // See vm\amd64\asmhelpers.asm for more details. + #define RBM_PROFILER_ENTER_TRASH RBM_CALLEE_TRASH + #define RBM_PROFILER_LEAVE_TRASH (RBM_CALLEE_TRASH & ~(RBM_FLOATRET | RBM_INTRET)) + #define RBM_PROFILER_TAILCALL_TRASH RBM_PROFILER_LEAVE_TRASH // The registers trashed by the CORINFO_HELP_STOP_FOR_GC helper. #ifdef FEATURE_UNIX_AMD64_STRUCT_PASSING @@ -1339,7 +1355,7 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define RBM_PINVOKE_TARGET_PARAM RBM_R12 #define PREDICT_REG_PINVOKE_TARGET_PARAM PREDICT_REG_R12 - // IL stub's secret MethodDesc parameter (CORJIT_FLG_PUBLISH_SECRET_PARAM) + // IL stub's secret MethodDesc parameter (JitFlags::JIT_FLAG_PUBLISH_SECRET_PARAM) #define REG_SECRET_STUB_PARAM REG_R12 #define RBM_SECRET_STUB_PARAM RBM_R12 @@ -1447,6 +1463,9 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define JMP_DIST_SMALL_MAX_NEG (-2048) #define JMP_DIST_SMALL_MAX_POS (+2046) + #define CALL_DIST_MAX_NEG (-16777216) + #define CALL_DIST_MAX_POS (+16777214) + #define JCC_DIST_SMALL_MAX_NEG (-256) #define JCC_DIST_SMALL_MAX_POS (+254) @@ -1617,7 +1636,7 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits #define RBM_PINVOKE_TARGET_PARAM RBM_R14 #define PREDICT_REG_PINVOKE_TARGET_PARAM PREDICT_REG_R14 - // IL stub's secret MethodDesc parameter (CORJIT_FLG_PUBLISH_SECRET_PARAM) + // IL stub's secret MethodDesc parameter (JitFlags::JIT_FLAG_PUBLISH_SECRET_PARAM) #define REG_SECRET_STUB_PARAM REG_R12 #define RBM_SECRET_STUB_PARAM RBM_R12 @@ -2277,6 +2296,9 @@ inline regNumber regNextOfType(regNumber reg, var_types type) inline bool isRegPairType(int /* s/b "var_types" */ type) { +#if !CPU_LONG_USES_REGPAIR + return false; +#else #ifdef _TARGET_64BIT_ return false; #elif CPU_HAS_FP_SUPPORT @@ -2284,6 +2306,7 @@ inline bool isRegPairType(int /* s/b "var_types" */ type) #else return type == TYP_LONG || type == TYP_DOUBLE; #endif +#endif // CPU_LONG_USES_REGPAIR } inline bool isFloatRegType(int /* s/b "var_types" */ type) |