Skip to content

Commit 60ba3ec

Browse files
committed
Merge pull request dotnet#2092 from BruceForstall/CleanupTargetHIfdefs
Simplify JIT target.h #ifdefs for ETW_EBP_FRAMED
2 parents 121e8d1 + 44a2e7e commit 60ba3ec

File tree

1 file changed

+32
-94
lines changed

1 file changed

+32
-94
lines changed

src/jit/target.h

Lines changed: 32 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -700,22 +700,26 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits
700700
#define STACK_ALIGN 16 // stack alignment requirement
701701
#define STACK_ALIGN_SHIFT 3 // Shift-right amount to convert stack size in bytes to size in pointer sized words
702702

703-
#ifdef UNIX_AMD64_ABI
704703
#if ETW_EBP_FRAMED
705-
#define RBM_INT_CALLEE_SAVED (RBM_EBX|RBM_R12|RBM_R13|RBM_R14|RBM_R15)
704+
#define RBM_ETW_FRAMED_EBP RBM_NONE
705+
#define RBM_ETW_FRAMED_EBP_LIST
706+
#define REG_ETW_FRAMED_EBP_LIST
707+
#define REG_ETW_FRAMED_EBP_COUNT 0
706708
#else // !ETW_EBP_FRAMED
707-
#define RBM_INT_CALLEE_SAVED (RBM_EBX|RBM_EBP|RBM_R12|RBM_R13|RBM_R14|RBM_R15)
709+
#define RBM_ETW_FRAMED_EBP RBM_EBP
710+
#define RBM_ETW_FRAMED_EBP_LIST RBM_EBP,
711+
#define REG_ETW_FRAMED_EBP_LIST REG_EBP,
712+
#define REG_ETW_FRAMED_EBP_COUNT 1
708713
#endif // !ETW_EBP_FRAMED
714+
715+
#ifdef UNIX_AMD64_ABI
716+
#define RBM_INT_CALLEE_SAVED (RBM_EBX|RBM_ETW_FRAMED_EBP|RBM_R12|RBM_R13|RBM_R14|RBM_R15)
709717
#define RBM_INT_CALLEE_TRASH (RBM_EAX|RBM_RDI|RBM_RSI|RBM_EDX|RBM_ECX|RBM_R8|RBM_R9|RBM_R10|RBM_R11)
710718
#define RBM_FLT_CALLEE_SAVED (0)
711719
#define RBM_FLT_CALLEE_TRASH (RBM_XMM0|RBM_XMM1|RBM_XMM2|RBM_XMM3|RBM_XMM4|RBM_XMM5|RBM_XMM6|RBM_XMM7| \
712720
RBM_XMM8|RBM_XMM9|RBM_XMM10|RBM_XMM11|RBM_XMM12|RBM_XMM13|RBM_XMM14|RBM_XMM15)
713721
#else // !UNIX_AMD64_ABI
714-
#if ETW_EBP_FRAMED
715-
#define RBM_INT_CALLEE_SAVED (RBM_EBX|RBM_ESI|RBM_EDI|RBM_R12|RBM_R13|RBM_R14|RBM_R15)
716-
#else // ETW_EBP_FRAMED
717-
#define RBM_INT_CALLEE_SAVED (RBM_EBX|RBM_ESI|RBM_EDI|RBM_EBP|RBM_R12|RBM_R13|RBM_R14|RBM_R15)
718-
#endif // ETW_EBP_FRAMED
722+
#define RBM_INT_CALLEE_SAVED (RBM_EBX|RBM_ESI|RBM_EDI|RBM_ETW_FRAMED_EBP|RBM_R12|RBM_R13|RBM_R14|RBM_R15)
719723
#define RBM_INT_CALLEE_TRASH (RBM_EAX|RBM_ECX|RBM_EDX|RBM_R8|RBM_R9|RBM_R10|RBM_R11)
720724
#define RBM_FLT_CALLEE_SAVED (RBM_XMM6|RBM_XMM7|RBM_XMM8|RBM_XMM9|RBM_XMM10|RBM_XMM11|RBM_XMM12|RBM_XMM13|RBM_XMM14|RBM_XMM15)
721725
#define RBM_FLT_CALLEE_TRASH (RBM_XMM0|RBM_XMM1|RBM_XMM2|RBM_XMM3|RBM_XMM4|RBM_XMM5)
@@ -731,135 +735,69 @@ typedef unsigned short regPairNoSmall; // arm: need 12 bits
731735

732736
#define RBM_ALLINT (RBM_INT_CALLEE_SAVED | RBM_INT_CALLEE_TRASH)
733737
#ifdef UNIX_AMD64_ABI
734-
#if ETW_EBP_FRAMED
735-
#define RBM_LOWINT (RBM_EAX|RBM_RDI|RBM_RSI|RBM_EDX|RBM_ECX|RBM_EBX)
736-
#else // !ETW_EBP_FRAMED
737-
#define RBM_LOWINT (RBM_EAX|RBM_RDI|RBM_RSI|RBM_EDX|RBM_ECX|RBM_EBX|RBM_EBP)
738-
#endif // !ETW_EBP_FRAMED
738+
#define RBM_LOWINT (RBM_EAX|RBM_RDI|RBM_RSI|RBM_EDX|RBM_ECX|RBM_EBX|RBM_ETW_FRAMED_EBP)
739739
#else // !UNIX_AMD64_ABI
740-
#if ETW_EBP_FRAMED
741-
#define RBM_LOWINT (RBM_EAX|RBM_ECX|RBM_EBX|RBM_ESI|RBM_EDI)
742-
#else // !ETW_EBP_FRAMED
743-
#define RBM_LOWINT (RBM_EAX|RBM_ECX|RBM_EBX|RBM_EBP|RBM_ESI|RBM_EDI)
744-
#endif // !ETW_EBP_FRAMED
740+
#define RBM_LOWINT (RBM_EAX|RBM_ECX|RBM_EBX|RBM_ETW_FRAMED_EBP|RBM_ESI|RBM_EDI)
745741
#endif // !UNIX_AMD64_ABI
746742

747743
#if 0
748-
#if ETW_EBP_FRAMED
749-
#define REG_VAR_ORDER REG_EAX,REG_EDX,REG_ECX,REG_ESI,REG_EDI,REG_EBX, \
750-
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
751-
#else // !ETW_EBP_FRAMED
752-
#define REG_VAR_ORDER REG_EAX,REG_EDX,REG_ECX,REG_ESI,REG_EDI,REG_EBX,REG_EBP, \
744+
#define REG_VAR_ORDER REG_EAX,REG_EDX,REG_ECX,REG_ESI,REG_EDI,REG_EBX,REG_ETW_FRAMED_EBP_LIST \
753745
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
754-
#endif // !ETW_EBP_FRAMED
755-
756746
#else
757747
// TEMPORARY ORDER TO AVOID CALLEE-SAVES
758748
// TODO-CQ: Review this and set appropriately
759749
#ifdef UNIX_AMD64_ABI
760-
#if ETW_EBP_FRAMED
761-
#define REG_VAR_ORDER \
762-
REG_EAX,REG_EDI,REG_ESI, \
763-
REG_EDX,REG_ECX,REG_R8,REG_R9, \
764-
REG_R10,REG_R11,REG_EBX, \
765-
REG_R14,REG_R15,REG_R12,REG_R13
766-
#else // !ETW_EBP_FRAMED
767-
#define REG_VAR_ORDER \
768-
REG_EAX,REG_EDI,REG_ESI, \
750+
#define REG_VAR_ORDER REG_EAX,REG_EDI,REG_ESI, \
769751
REG_EDX,REG_ECX,REG_R8,REG_R9, \
770-
REG_R10,REG_R11,REG_EBX,REG_EBP, \
752+
REG_R10,REG_R11,REG_EBX,REG_ETW_FRAMED_EBP_LIST \
771753
REG_R14,REG_R15,REG_R12,REG_R13
772-
#endif // !ETW_EBP_FRAMED
773754
#else // !UNIX_AMD64_ABI
774-
#if ETW_EBP_FRAMED
775755
#define REG_VAR_ORDER REG_EAX,REG_EDX,REG_ECX, \
776756
REG_R8,REG_R9,REG_R10,REG_R11, \
777-
REG_ESI,REG_EDI,REG_EBX, \
757+
REG_ESI,REG_EDI,REG_EBX,REG_ETW_FRAMED_EBP_LIST \
778758
REG_R14,REG_R15,REG_R12,REG_R13
779-
#else // !ETW_EBP_FRAMED
780-
#define REG_VAR_ORDER REG_EAX,REG_EDX,REG_ECX, \
781-
REG_R8,REG_R9,REG_R10,REG_R11, \
782-
REG_ESI,REG_EDI,REG_EBX,REG_EBP, \
783-
REG_R14,REG_R15,REG_R12,REG_R13
784-
#endif // !ETW_EBP_FRAMED
785759
#endif // !UNIX_AMD64_ABI
786760
#endif
787761

788762
#define REG_VAR_ORDER_FLT REG_XMM0,REG_XMM1,REG_XMM2,REG_XMM3,REG_XMM4,REG_XMM5,REG_XMM6,REG_XMM7,REG_XMM8,REG_XMM9,REG_XMM10,REG_XMM11,REG_XMM12,REG_XMM13,REG_XMM14,REG_XMM15
789763

790764
#ifdef UNIX_AMD64_ABI
791-
#if ETW_EBP_FRAMED
792-
#define REG_TMP_ORDER REG_EAX,REG_EDI,REG_ESI,REG_EDX,REG_ECX,REG_EBX, \
765+
#define REG_TMP_ORDER REG_EAX,REG_EDI,REG_ESI,REG_EDX,REG_ECX,REG_EBX,REG_ETW_FRAMED_EBP_LIST \
793766
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
794-
#else // !ETW_EBP_FRAMED
795-
#define REG_TMP_ORDER REG_EAX,REG_EDI,REG_ESI,REG_EDX,REG_ECX,REG_EBX,REG_EBP, \
796-
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
797-
#endif // !ETW_EBP_FRAMED
798767
#else // !UNIX_AMD64_ABI
799-
#if ETW_EBP_FRAMED
800-
#define MAX_VAR_ORDER_SIZE 14
801-
#define REG_TMP_ORDER REG_EAX,REG_EDX,REG_ECX,REG_EBX,REG_ESI,REG_EDI, \
802-
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
803-
#else // !ETW_EBP_FRAMED
804-
#define MAX_VAR_ORDER_SIZE 15
805-
#define REG_TMP_ORDER REG_EAX,REG_EDX,REG_ECX,REG_EBX,REG_ESI,REG_EDI,REG_EBP, \
768+
#define MAX_VAR_ORDER_SIZE (14 + REG_ETW_FRAMED_EBP_COUNT)
769+
#define REG_TMP_ORDER REG_EAX,REG_EDX,REG_ECX,REG_EBX,REG_ESI,REG_EDI,REG_ETW_FRAMED_EBP_LIST \
806770
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
807-
#endif // !ETW_EBP_FRAMED
808771
#endif // !UNIX_AMD64_ABI
809772

810773
#ifdef UNIX_AMD64_ABI
811-
#if ETW_EBP_FRAMED
812-
#define REG_PREDICT_ORDER REG_EAX,REG_EDI,REG_ESI,REG_EDX,REG_ECX,REG_EBX, \
813-
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
814-
#define CNT_CALLEE_SAVED (5)
815-
#else // ETW_EBP_FRAMED
816-
#define REG_PREDICT_ORDER REG_EAX,REG_EDI,REG_ESI,REG_EDX,REG_ECX,REG_EBX,REG_EBP, \
817-
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
818-
#define CNT_CALLEE_SAVED (6)
819-
#endif // ETW_EBP_FRAMED
774+
#define REG_PREDICT_ORDER REG_EAX,REG_EDI,REG_ESI,REG_EDX,REG_ECX,REG_EBX,REG_ETW_FRAMED_EBP_LIST \
775+
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
776+
#define CNT_CALLEE_SAVED (5 + REG_ETW_FRAMED_EBP_COUNT)
820777
#define CNT_CALLEE_TRASH (9)
821778
#define CNT_CALLEE_ENREG (CNT_CALLEE_SAVED)
822779

823780
#define CNT_CALLEE_SAVED_FLOAT (0)
824781
#define CNT_CALLEE_TRASH_FLOAT (16)
825782

826-
#if ETW_EBP_FRAMED
827-
#define REG_CALLEE_SAVED_ORDER REG_EBX,REG_R12,REG_R13,REG_R14,REG_R15
828-
#define RBM_CALLEE_SAVED_ORDER RBM_EBX,RBM_R12,RBM_R13,RBM_R14,RBM_R15
829-
#else // !ETW_EBP_FRAMED
830-
#define REG_CALLEE_SAVED_ORDER REG_EBX,REG_EBP,REG_R12,REG_R13,REG_R14,REG_R15
831-
#define RBM_CALLEE_SAVED_ORDER RBM_EBX,RBM_EBP,RBM_R12,RBM_R13,RBM_R14,RBM_R15
832-
#endif // !ETW_EBP_FRAMED
833-
#define CALLEE_SAVED_REG_MAXSZ (CNT_CALLEE_SAVED*REGSIZE_BYTES) // RBX, RBP, R12, R13, R14, R15
783+
#define REG_CALLEE_SAVED_ORDER REG_EBX,REG_ETW_FRAMED_EBP_LIST REG_R12,REG_R13,REG_R14,REG_R15
784+
#define RBM_CALLEE_SAVED_ORDER RBM_EBX,RBM_ETW_FRAMED_EBP_LIST RBM_R12,RBM_R13,RBM_R14,RBM_R15
834785
#else // !UNIX_AMD64_ABI
835-
#if ETW_EBP_FRAMED
836-
#define REG_TMP_ORDER_COUNT 14
837-
#define REG_PREDICT_ORDER REG_EAX,REG_EDX,REG_ECX,REG_EBX,REG_ESI,REG_EDI, \
786+
#define REG_TMP_ORDER_COUNT (14 + REG_ETW_FRAMED_EBP_COUNT)
787+
#define REG_PREDICT_ORDER REG_EAX,REG_EDX,REG_ECX,REG_EBX,REG_ESI,REG_EDI,REG_ETW_FRAMED_EBP_LIST \
838788
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
839-
#define CNT_CALLEE_SAVED (7)
840-
#else // ETW_EBP_FRAMED
841-
#define REG_TMP_ORDER_COUNT 15
842-
#define REG_PREDICT_ORDER REG_EAX,REG_EDX,REG_ECX,REG_EBX,REG_ESI,REG_EDI,REG_EBP, \
843-
REG_R8,REG_R9,REG_R10,REG_R11,REG_R14,REG_R15,REG_R12,REG_R13
844-
#define CNT_CALLEE_SAVED (8)
845-
#endif // ETW_EBP_FRAMED
846-
789+
#define CNT_CALLEE_SAVED (7 + REG_ETW_FRAMED_EBP_COUNT)
847790
#define CNT_CALLEE_TRASH (7)
848791
#define CNT_CALLEE_ENREG (CNT_CALLEE_SAVED)
849792

850793
#define CNT_CALLEE_SAVED_FLOAT (10)
851794
#define CNT_CALLEE_TRASH_FLOAT (6)
852795

853-
#if ETW_EBP_FRAMED
854-
#define REG_CALLEE_SAVED_ORDER REG_EBX,REG_ESI,REG_EDI,REG_R12,REG_R13,REG_R14,REG_R15
855-
#define RBM_CALLEE_SAVED_ORDER RBM_EBX,RBM_ESI,RBM_EDI,RBM_R12,RBM_R13,RBM_R14,RBM_R15
856-
#else // !ETW_EBP_FRAMED
857-
#define REG_CALLEE_SAVED_ORDER REG_EBX,REG_ESI,REG_EDI,REG_EBP,REG_R12,REG_R13,REG_R14,REG_R15
858-
#define RBM_CALLEE_SAVED_ORDER RBM_EBX,RBM_ESI,RBM_EDI,RBM_EBP,RBM_R12,RBM_R13,RBM_R14,RBM_R15
859-
#endif // !ETW_EBP_FRAMED
860-
#define CALLEE_SAVED_REG_MAXSZ (CNT_CALLEE_SAVED*REGSIZE_BYTES) // RBX, RSI, RDI, RBP, R12, R13, R14, R15
796+
#define REG_CALLEE_SAVED_ORDER REG_EBX,REG_ESI,REG_EDI,REG_ETW_FRAMED_EBP_LIST REG_R12,REG_R13,REG_R14,REG_R15
797+
#define RBM_CALLEE_SAVED_ORDER RBM_EBX,RBM_ESI,RBM_EDI,RBM_ETW_FRAMED_EBP_LIST RBM_R12,RBM_R13,RBM_R14,RBM_R15
861798
#endif // !UNIX_AMD64_ABI
862799

800+
#define CALLEE_SAVED_REG_MAXSZ (CNT_CALLEE_SAVED*REGSIZE_BYTES)
863801
#define CALLEE_SAVED_FLOAT_MAXSZ (CNT_CALLEE_SAVED_FLOAT*16)
864802

865803
// We reuse the ESP register as a illegal value in the register predictor

0 commit comments

Comments
 (0)