summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-04-16 21:18:42 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-04-16 21:18:42 +0000
commitfc89cc2a91a157693cd2263a831e1e4f061f1a29 (patch)
tree6b44a77c043e82fb8905ded6324394d771704d90
parenteb5f089ce1ee62c548be65e3e2c81bb2ac7968d7 (diff)
downloadbcm5719-llvm-fc89cc2a91a157693cd2263a831e1e4f061f1a29.tar.gz
bcm5719-llvm-fc89cc2a91a157693cd2263a831e1e4f061f1a29.zip
[2/6] ARM Neon Intrinsic Tablegen Test Generator.
This patch causes OpInst records to be silently identified with their Non-Op inst counterparts so that the same test generation infrastructure can be used to generate tests. Reviewed by Bob Wilson. llvm-svn: 179628
-rw-r--r--clang/utils/TableGen/NeonEmitter.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/clang/utils/TableGen/NeonEmitter.cpp b/clang/utils/TableGen/NeonEmitter.cpp
index c605859717d..b952f78d4b9 100644
--- a/clang/utils/TableGen/NeonEmitter.cpp
+++ b/clang/utils/TableGen/NeonEmitter.cpp
@@ -98,7 +98,12 @@ enum ClassKind {
ClassI, // generic integer instruction, e.g., "i8" suffix
ClassS, // signed/unsigned/poly, e.g., "s8", "u8" or "p8" suffix
ClassW, // width-specific instruction, e.g., "8" suffix
- ClassB // bitcast arguments with enum argument to specify type
+ ClassB, // bitcast arguments with enum argument to specify type
+ ClassL, // Logical instructions which are op instructions
+ // but we need to not emit any suffix for in our
+ // tests.
+ ClassNoTest // Instructions which we do not test since they are
+ // not TRUE instructions.
};
/// NeonTypeFlags - Flags to identify the types for overloaded Neon
@@ -204,9 +209,20 @@ public:
Record *SI = R.getClass("SInst");
Record *II = R.getClass("IInst");
Record *WI = R.getClass("WInst");
+ Record *SOpI = R.getClass("SOpInst");
+ Record *IOpI = R.getClass("IOpInst");
+ Record *WOpI = R.getClass("WOpInst");
+ Record *LOpI = R.getClass("LOpInst");
+ Record *NoTestOpI = R.getClass("NoTestOpInst");
+
ClassMap[SI] = ClassS;
ClassMap[II] = ClassI;
ClassMap[WI] = ClassW;
+ ClassMap[SOpI] = ClassS;
+ ClassMap[IOpI] = ClassI;
+ ClassMap[WOpI] = ClassW;
+ ClassMap[LOpI] = ClassL;
+ ClassMap[NoTestOpI] = ClassNoTest;
}
// run - Emit arm_neon.h.inc
OpenPOWER on IntegriCloud