Skip to content

Commit

Permalink
Move mapTypeToRegTypeIndex() and mapRegNumtoRegTypeIndex() in compile…
Browse files Browse the repository at this point in the history
…r.hpp
  • Loading branch information
kunalspathak committed May 30, 2024
1 parent 687ed43 commit 3741ac6
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 30 deletions.
46 changes: 46 additions & 0 deletions src/coreclr/jit/compiler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1016,6 +1016,52 @@ inline regNumber genFirstRegNumFromMaskAndToggle(SingleTypeRegSet& mask)
return regNum;
}

//------------------------------------------------------------------------------
// mapTypeToRegTypeIndex : Maps the type to the index used to store relevant mask
// in regMaskTP. 0= IntRegisterType, 1= FloatRegisterType, 2= PredicateRegisterType
// Arguments:
// vt - the register type
//
// Return Value:
// The index depending on the register type.
//

/* static */ int regMaskTP::mapTypeToRegTypeIndex(var_types vt)
{
int type = varTypeRegister[TypeGet(vt)];
#ifdef HAS_MORE_THAN_64_REGISTERS
assert(type <= 3);
#endif

#ifndef FEATURE_MASKED_HW_INTRINSICS
assert(type != VTR_MASK);
#endif
return (type - 1);
}

//------------------------------------------------------------------------------
// mapTypeToRegTypeIndex : Maps the regNumber to the index used to store relevant mask
// in regMaskTP.
// Arguments:
// reg - the register number
//
// Return Value:
// The index depending on the register type.
//
/* static */ int regMaskTP::mapRegNumToRegTypeIndex(regNumber reg)
{
static const BYTE _registerTypeIndex[] = {
#ifdef TARGET_ARM64
#define REGDEF(name, rnum, mask, xname, wname, regTypeTag) regTypeTag,
#else
#define REGDEF(name, rnum, mask, sname, regTypeTag) regTypeTag,
#endif
#include "register.h"
};

return _registerTypeIndex[reg];
}

/*****************************************************************************
*
* Return the size in bytes of the given type.
Expand Down
28 changes: 0 additions & 28 deletions src/coreclr/jit/regMaskTPOps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -214,34 +214,6 @@ void regMaskTP::RemoveRegsetForType(SingleTypeRegSet regsToRemove, var_types typ
#endif
}

template <class T>
/* static */ int regMaskTP::mapTypeToRegTypeIndex(T vt)
{
int type = varTypeRegister[TypeGet(vt)];
#ifdef HAS_MORE_THAN_64_REGISTERS
assert(type <= 3);
#endif

#ifndef FEATURE_MASKED_HW_INTRINSICS
assert(type != VTR_MASK);
#endif
return (type - 1);
}

/* static */ int regMaskTP::mapRegNumToRegTypeIndex(regNumber reg)
{
static const BYTE _registerTypeIndex[] = {
#ifdef TARGET_ARM64
#define REGDEF(name, rnum, mask, xname, wname, regTypeTag) regTypeTag,
#else
#define REGDEF(name, rnum, mask, sname, regTypeTag) regTypeTag,
#endif
#include "register.h"
};

return _registerTypeIndex[reg];
}

void regMaskTP::operator|=(const regNumber reg)
{
SingleTypeRegSet value = genSingleTypeRegMask(reg);
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/jit/target.h
Original file line number Diff line number Diff line change
Expand Up @@ -270,13 +270,13 @@ struct regMaskTP
#endif

FORCEINLINE static int mapRegNumToRegTypeIndex(regNumber reg);
template <class T>
FORCEINLINE static int mapTypeToRegTypeIndex(T type);
FORCEINLINE static RegSet32 encodeForRegisterIndex(int index, regMaskSmall value);
FORCEINLINE static regMaskSmall decodeForRegisterIndex(int index, RegSet32 value);

public:

FORCEINLINE static int mapTypeToRegTypeIndex(var_types type);

#ifdef TARGET_ARM
void AddRegNumInMask(regNumber reg, var_types type);
void RemoveRegNumFromMask(regNumber reg, var_types type);
Expand Down

0 comments on commit 3741ac6

Please sign in to comment.