/**
* <copyright>
* Copyright (c) 2009-2012, IETR/INSA of Rennes
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* * Neither the name of the IETR/INSA of Rennes nor the names of its
* contributors may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
* WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* </copyright>
*/
package net.sf.orcc.backends.llvm.tta.architecture;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.eclipse.emf.common.util.Enumerator;
/**
* <!-- begin-user-doc --> A representation of the literals of the enumeration '
* <em><b>Processor Configuration</b></em>', and utility methods for working
* with them. <!-- end-user-doc -->
* @see net.sf.orcc.backends.llvm.tta.architecture.ArchitecturePackage#getProcessorConfiguration()
* @model
* @generated
*/
public enum ProcessorConfiguration implements Enumerator {
/**
* The '<em><b>Standard</b></em>' literal object.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #STANDARD_VALUE
* @generated
* @ordered
*/
STANDARD(0, "Standard", "Standard"),
/**
* The '<em><b>Custom</b></em>' literal object.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @see #CUSTOM_VALUE
* @generated
* @ordered
*/
CUSTOM(1, "Custom", "Custom"),
/**
* The '<em><b>Huge</b></em>' literal object.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @see #HUGE_VALUE
* @generated
* @ordered
*/
HUGE(2, "Huge", "Huge"), /**
* The '<em><b>Fast</b></em>' literal object.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #FAST_VALUE
* @generated
* @ordered
*/
FAST(3, "Fast", "Fast"), /**
* The '<em><b>Other</b></em>' literal object.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #OTHER_VALUE
* @generated
* @ordered
*/
OTHER(4, "Other", "Other");
/**
* The '<em><b>Standard</b></em>' literal value.
* <!-- begin-user-doc -->
* <p>
* If the meaning of '<em><b>Standard</b></em>' literal object isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @see #STANDARD
* @model name="Standard"
* @generated
* @ordered
*/
public static final int STANDARD_VALUE = 0;
/**
* The '<em><b>Custom</b></em>' literal value.
* <!-- begin-user-doc -->
* <p>
* If the meaning of '<em><b>Custom</b></em>' literal object isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @see #CUSTOM
* @model name="Custom"
* @generated
* @ordered
*/
public static final int CUSTOM_VALUE = 1;
/**
* The '<em><b>Huge</b></em>' literal value.
* <!-- begin-user-doc -->
* <p>
* If the meaning of '<em><b>Huge</b></em>' literal object isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @see #HUGE
* @model name="Huge"
* @generated
* @ordered
*/
public static final int HUGE_VALUE = 2;
/**
* The '<em><b>Fast</b></em>' literal value.
* <!-- begin-user-doc -->
* <p>
* If the meaning of '<em><b>Fast</b></em>' literal object isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @see #FAST
* @model name="Fast"
* @generated
* @ordered
*/
public static final int FAST_VALUE = 3;
/**
* The '<em><b>Other</b></em>' literal value.
* <!-- begin-user-doc -->
* <p>
* If the meaning of '<em><b>Other</b></em>' literal object isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @see #OTHER
* @model name="Other"
* @generated
* @ordered
*/
public static final int OTHER_VALUE = 4;
/**
* An array of all the '<em><b>Processor Configuration</b></em>' enumerators.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private static final ProcessorConfiguration[] VALUES_ARRAY = new ProcessorConfiguration[] {
STANDARD, CUSTOM, HUGE, FAST, OTHER, };
/**
* A public read-only list of all the '<em><b>Processor Configuration</b></em>' enumerators.
* <!-- begin-user-doc
* --> <!-- end-user-doc -->
* @generated
*/
public static final List<ProcessorConfiguration> VALUES = Collections
.unmodifiableList(Arrays.asList(VALUES_ARRAY));
/**
* Returns the '<em><b>Processor Configuration</b></em>' literal with the specified literal value.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public static ProcessorConfiguration get(String literal) {
for (int i = 0; i < VALUES_ARRAY.length; ++i) {
ProcessorConfiguration result = VALUES_ARRAY[i];
if (result.toString().equals(literal)) {
return result;
}
}
return null;
}
/**
* Returns the '<em><b>Processor Configuration</b></em>' literal with the specified name.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public static ProcessorConfiguration getByName(String name) {
for (int i = 0; i < VALUES_ARRAY.length; ++i) {
ProcessorConfiguration result = VALUES_ARRAY[i];
if (result.getName().equals(name)) {
return result;
}
}
return null;
}
/**
* Returns the '<em><b>Processor Configuration</b></em>' literal with the specified integer value.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public static ProcessorConfiguration get(int value) {
switch (value) {
case STANDARD_VALUE:
return STANDARD;
case CUSTOM_VALUE:
return CUSTOM;
case HUGE_VALUE:
return HUGE;
case FAST_VALUE:
return FAST;
case OTHER_VALUE:
return OTHER;
}
return null;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private final int value;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private final String name;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
private final String literal;
/**
* Only this class can construct instances.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @generated
*/
private ProcessorConfiguration(int value, String name, String literal) {
this.value = value;
this.name = name;
this.literal = literal;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public int getValue() {
return value;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public String getName() {
return name;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public String getLiteral() {
return literal;
}
/**
* Returns the literal value of the enumerator, which is its string representation.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public String toString() {
return literal;
}
public int getAluNb() {
switch (this) {
case CUSTOM:
return 2;
case HUGE:
return 12;
case FAST:
return 3;
case STANDARD:
default:
return 1;
}
}
public int getBusNb() {
switch (this) {
case CUSTOM:
return 6;
case HUGE:
return 32;
case FAST:
return 18;
case STANDARD:
default:
return 3;
}
}
public int getIntRfNb() {
switch (this) {
case CUSTOM:
return 3;
case HUGE:
return 8;
case FAST:
return 3;
case STANDARD:
default:
return 2;
}
}
public int getMulNb() {
switch (this) {
case HUGE:
return 8;
case FAST:
case STANDARD:
case CUSTOM:
default:
return 1;
}
}
public int getLsuNb() {
switch (this) {
case HUGE:
return 2;
case STANDARD:
case CUSTOM:
case FAST:
default:
return 1;
}
}
public int getIntRfSize() {
switch (this) {
case HUGE:
return 32;
case FAST:
return 14;
case STANDARD:
case CUSTOM:
default:
return 12;
}
}
public int getBoolRfSize() {
switch (this) {
case HUGE:
return 6;
case FAST:
return 6;
case STANDARD:
case CUSTOM:
default:
return 2;
}
}
} // ProcessorConfiguration