Skip to content

Commit 3741ac6

Browse files
committed
Move mapTypeToRegTypeIndex() and mapRegNumtoRegTypeIndex() in compiler.hpp
1 parent 687ed43 commit 3741ac6

File tree

3 files changed

+48
-30
lines changed

3 files changed

+48
-30
lines changed

src/coreclr/jit/compiler.hpp

+46
Original file line numberDiff line numberDiff line change
@@ -1016,6 +1016,52 @@ inline regNumber genFirstRegNumFromMaskAndToggle(SingleTypeRegSet& mask)
10161016
return regNum;
10171017
}
10181018

1019+
//------------------------------------------------------------------------------
1020+
// mapTypeToRegTypeIndex : Maps the type to the index used to store relevant mask
1021+
// in regMaskTP. 0= IntRegisterType, 1= FloatRegisterType, 2= PredicateRegisterType
1022+
// Arguments:
1023+
// vt - the register type
1024+
//
1025+
// Return Value:
1026+
// The index depending on the register type.
1027+
//
1028+
1029+
/* static */ int regMaskTP::mapTypeToRegTypeIndex(var_types vt)
1030+
{
1031+
int type = varTypeRegister[TypeGet(vt)];
1032+
#ifdef HAS_MORE_THAN_64_REGISTERS
1033+
assert(type <= 3);
1034+
#endif
1035+
1036+
#ifndef FEATURE_MASKED_HW_INTRINSICS
1037+
assert(type != VTR_MASK);
1038+
#endif
1039+
return (type - 1);
1040+
}
1041+
1042+
//------------------------------------------------------------------------------
1043+
// mapTypeToRegTypeIndex : Maps the regNumber to the index used to store relevant mask
1044+
// in regMaskTP.
1045+
// Arguments:
1046+
// reg - the register number
1047+
//
1048+
// Return Value:
1049+
// The index depending on the register type.
1050+
//
1051+
/* static */ int regMaskTP::mapRegNumToRegTypeIndex(regNumber reg)
1052+
{
1053+
static const BYTE _registerTypeIndex[] = {
1054+
#ifdef TARGET_ARM64
1055+
#define REGDEF(name, rnum, mask, xname, wname, regTypeTag) regTypeTag,
1056+
#else
1057+
#define REGDEF(name, rnum, mask, sname, regTypeTag) regTypeTag,
1058+
#endif
1059+
#include "register.h"
1060+
};
1061+
1062+
return _registerTypeIndex[reg];
1063+
}
1064+
10191065
/*****************************************************************************
10201066
*
10211067
* Return the size in bytes of the given type.

src/coreclr/jit/regMaskTPOps.cpp

-28
Original file line numberDiff line numberDiff line change
@@ -214,34 +214,6 @@ void regMaskTP::RemoveRegsetForType(SingleTypeRegSet regsToRemove, var_types typ
214214
#endif
215215
}
216216

217-
template <class T>
218-
/* static */ int regMaskTP::mapTypeToRegTypeIndex(T vt)
219-
{
220-
int type = varTypeRegister[TypeGet(vt)];
221-
#ifdef HAS_MORE_THAN_64_REGISTERS
222-
assert(type <= 3);
223-
#endif
224-
225-
#ifndef FEATURE_MASKED_HW_INTRINSICS
226-
assert(type != VTR_MASK);
227-
#endif
228-
return (type - 1);
229-
}
230-
231-
/* static */ int regMaskTP::mapRegNumToRegTypeIndex(regNumber reg)
232-
{
233-
static const BYTE _registerTypeIndex[] = {
234-
#ifdef TARGET_ARM64
235-
#define REGDEF(name, rnum, mask, xname, wname, regTypeTag) regTypeTag,
236-
#else
237-
#define REGDEF(name, rnum, mask, sname, regTypeTag) regTypeTag,
238-
#endif
239-
#include "register.h"
240-
};
241-
242-
return _registerTypeIndex[reg];
243-
}
244-
245217
void regMaskTP::operator|=(const regNumber reg)
246218
{
247219
SingleTypeRegSet value = genSingleTypeRegMask(reg);

src/coreclr/jit/target.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,13 @@ struct regMaskTP
270270
#endif
271271

272272
FORCEINLINE static int mapRegNumToRegTypeIndex(regNumber reg);
273-
template <class T>
274-
FORCEINLINE static int mapTypeToRegTypeIndex(T type);
275273
FORCEINLINE static RegSet32 encodeForRegisterIndex(int index, regMaskSmall value);
276274
FORCEINLINE static regMaskSmall decodeForRegisterIndex(int index, RegSet32 value);
277275

278276
public:
279277

278+
FORCEINLINE static int mapTypeToRegTypeIndex(var_types type);
279+
280280
#ifdef TARGET_ARM
281281
void AddRegNumInMask(regNumber reg, var_types type);
282282
void RemoveRegNumFromMask(regNumber reg, var_types type);

0 commit comments

Comments
 (0)