File tree 2 files changed +17
-0
lines changed
2 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -2825,20 +2825,26 @@ void LinearScan::buildIntervals()
2825
2825
availableRegCount = REG_INT_COUNT;
2826
2826
}
2827
2827
2828
+ #ifdef HAS_MORE_THAN_64_REGISTERS
2828
2829
static_assert (sizeof (regMaskTP) == 2 * sizeof (regMaskSmall));
2830
+ #else
2831
+ static_assert (sizeof (regMaskTP) == sizeof (regMaskSmall));
2832
+ #endif
2829
2833
2830
2834
if (availableRegCount < (sizeof (regMaskSmall) * 8 ))
2831
2835
{
2832
2836
// Mask out the bits that are between (8 * regMaskSmall) ~ availableRegCount
2833
2837
actualRegistersMask = regMaskTP ((1ULL << availableRegCount) - 1 );
2834
2838
}
2839
+ #ifdef HAS_MORE_THAN_64_REGISTERS
2835
2840
else if (availableRegCount < (sizeof (regMaskTP) * 8 ))
2836
2841
{
2837
2842
// Mask out the bits that are between (8 * regMaskTP) ~ availableRegCount
2838
2843
// Subtract one extra for stack.
2839
2844
unsigned topRegCount = availableRegCount - sizeof (regMaskSmall) * 8 - 1 ;
2840
2845
actualRegistersMask = regMaskTP (~RBM_NONE, (1ULL << topRegCount) - 1 );
2841
2846
}
2847
+ #endif
2842
2848
else
2843
2849
{
2844
2850
actualRegistersMask = regMaskTP (~RBM_NONE, ~RBM_NONE);
Original file line number Diff line number Diff line change @@ -229,20 +229,31 @@ typedef uint64_t regMaskSmall;
229
229
#define REG_MASK_ALL_FMT " %016llX"
230
230
#endif
231
231
232
+ #ifdef TARGET_ARM64
233
+ #define HAS_MORE_THAN_64_REGISTERS 1
234
+ #define MORE_THAN_64_REGISTERS (x ) x
235
+ #else
236
+ #define MORE_THAN_64_REGISTERS (x )
237
+ #endif // TARGET_ARM64
238
+
232
239
typedef regMaskSmall SingleTypeRegSet;
233
240
inline SingleTypeRegSet genSingleTypeRegMask (regNumber reg);
234
241
235
242
struct regMaskTP
236
243
{
237
244
private:
238
245
regMaskSmall low;
246
+ #ifdef HAS_MORE_THAN_64_REGISTERS
239
247
regMaskSmall high;
248
+ #endif
240
249
241
250
public:
242
251
243
252
regMaskTP (regMaskSmall lowMask, regMaskSmall highMask)
244
253
: low(lowMask)
254
+ #ifdef HAS_MORE_THAN_64_REGISTERS
245
255
, high(highMask)
256
+ #endif
246
257
{
247
258
}
248
259
You can’t perform that action at this time.
0 commit comments