mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
f817a9b5c3
This replaces TableGen's type inference to operate on parameterized types instead of MVTs, and as a consequence, some interfaces have changed: - Uses of MVTs are replaced by ValueTypeByHwMode. - EEVT::TypeSet is replaced by TypeSetByHwMode. This affects the way that types and type sets are printed, and the tests relying on that have been updated. There are certain users of the inferred types outside of TableGen itself, namely FastISel and GlobalISel. For those users, the way that the types are accessed have changed. For typical scenarios, these replacements can be used: - TreePatternNode::getType(ResNo) -> getSimpleType(ResNo) - TreePatternNode::hasTypeSet(ResNo) -> hasConcreteType(ResNo) - TypeSet::isConcrete -> TypeSetByHwMode::isValueTypeByHwMode(false) For more information, please refer to the review page. Differential Revision: https://reviews.llvm.org/D31951 llvm-svn: 313271
28 lines
996 B
TableGen
28 lines
996 B
TableGen
// RUN: not llvm-tblgen -gen-dag-isel -I %p/../../include %s 2>&1 | FileCheck %s
|
|
|
|
// The HwModeSelect class is intended to serve as a base class for other
|
|
// classes that are then used to select a value based on the HW mode.
|
|
// It contains a list of HW modes, and a derived class should provide a
|
|
// list of corresponding values.
|
|
// These two lists must have the same size. Make sure that a violation of
|
|
// this requirement is diagnosed.
|
|
|
|
include "llvm/Target/Target.td"
|
|
|
|
def TestTargetInstrInfo : InstrInfo;
|
|
|
|
def TestTarget : Target {
|
|
let InstructionSet = TestTargetInstrInfo;
|
|
}
|
|
|
|
def TestReg : Register<"testreg">;
|
|
def TestClass : RegisterClass<"TestTarget", [i32], 32, (add TestReg)>;
|
|
|
|
def TestMode1 : HwMode<"+feat1">;
|
|
def TestMode2 : HwMode<"+feat2">;
|
|
|
|
def BadDef : ValueTypeByHwMode<[TestMode1, TestMode2, DefaultMode],
|
|
[i8, i16, i32, i64]>;
|
|
|
|
// CHECK: error: in record BadDef derived from HwModeSelect: the lists Modes and Objects should have the same size
|