REDACTED-rig/src/PowVariant.h
Ben Gräf 8997e74b90
Add ASM optimizations (#208)
* Add ASM optimizations

- Add ASM optimization for CN-FAST on INTEL
- Add ASM optimization for CNV2 on AMD Bulldozer
- Alloy is now announced as XAO

* Upgraded default configs
2018-11-12 12:20:59 +01:00

133 lines
3.4 KiB
C++

/* XMRigCC
* Copyright 2018- BenDr0id <ben@graef.in>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __POW_VARIANT_H__
#define __POW_VARIANT_H__
#include <string>
#include <list>
enum PowVariant
{
POW_AUTODETECT,
POW_V0,
POW_V1,
POW_V2,
POW_TUBE,
POW_ALLOY,
POW_XTL,
POW_MSR,
POW_XHV,
POW_RTO,
LAST_ITEM
};
inline std::string getPowVariantName(PowVariant powVariant)
{
switch (powVariant)
{
case POW_V0:
return "0";
case POW_V1:
return "1";
case POW_V2:
return "2";
case POW_TUBE:
return "tube";
case POW_ALLOY:
return "xao";
case POW_XTL:
return "xtl";
case POW_MSR:
return "msr";
case POW_XHV:
return "xhv";
case POW_RTO:
return "rto";
case POW_AUTODETECT:
default:
return "-1";
}
}
inline std::list<std::string> getSupportedPowVariants()
{
std::list<std::string> supportedPowVariants;
for (int variant = 0; variant != LAST_ITEM; variant++)
{
supportedPowVariants.push_back(getPowVariantName(static_cast<PowVariant >(variant)));
}
return supportedPowVariants;
}
inline PowVariant parseVariant(int variant)
{
PowVariant powVariant = PowVariant::POW_AUTODETECT;
switch (variant) {
case -1:
powVariant = PowVariant::POW_AUTODETECT;
break;
case 0:
powVariant = PowVariant::POW_V0;
break;
case 1:
powVariant = PowVariant::POW_V1;
break;
case 2:
powVariant = PowVariant::POW_V2;
break;
default:
break;
}
return powVariant;
}
inline PowVariant parseVariant(const std::string variant)
{
PowVariant powVariant = PowVariant::POW_AUTODETECT;
if (variant == "0") {
powVariant = PowVariant::POW_V0;
} else if (variant == "1") {
powVariant = PowVariant::POW_V1;
} else if (variant == "2") {
powVariant = PowVariant::POW_V2;
} else if (variant == "ipbc" || variant == "tube" || variant == "bittube") {
powVariant = PowVariant::POW_TUBE;
} else if (variant == "xao" || variant == "alloy") {
powVariant = PowVariant::POW_ALLOY;
} else if (variant == "xtl" || variant == "stellite") {
powVariant = PowVariant::POW_XTL;
} else if (variant == "msr" || variant == "masari") {
powVariant = PowVariant::POW_MSR;
} else if (variant == "xhv" || variant == "haven") {
powVariant = PowVariant::POW_XHV;
} else if (variant == "rto" || variant == "arto") {
powVariant = PowVariant::POW_RTO;
}
return powVariant;
}
#endif /* __POW_VARIANT_H__ */