[llvm-commits] CVS: llvm/lib/VMCore/Function.cpp Verifier.cpp
Chris Lattner
lattner at cs.uiuc.edu
Wed Aug 6 15:09:01 PDT 2003
Changes in directory llvm/lib/VMCore:
Function.cpp updated: 1.40 -> 1.41
Verifier.cpp updated: 1.52 -> 1.53
---
Log message:
Add a bunch of new Alpha Intrinsics for Rahul Joshi
---
Diffs of the changes:
Index: llvm/lib/VMCore/Function.cpp
diff -u llvm/lib/VMCore/Function.cpp:1.40 llvm/lib/VMCore/Function.cpp:1.41
--- llvm/lib/VMCore/Function.cpp:1.40 Mon Jul 28 16:20:57 2003
+++ llvm/lib/VMCore/Function.cpp Wed Aug 6 15:08:23 2003
@@ -163,12 +163,36 @@
getName()[1] != 'l' || getName()[2] != 'v' || getName()[3] != 'm')
return 0; // All intrinsics start with 'llvm.'
+ // a table of all Alpha intrinsic functions
+ struct {
+ std::string name; // The name of the intrinsic
+ unsigned id; // Its ID number
+ } alpha_intrinsics[] = {
+ { "llvm.alpha.ctlz", LLVMIntrinsic::alpha_ctlz },
+ { "llvm.alpha.cttz", LLVMIntrinsic::alpha_cttz },
+ { "llvm.alpha.ctpop", LLVMIntrinsic::alpha_ctpop },
+ { "llvm.alpha.umulh", LLVMIntrinsic::alpha_umulh },
+ { "llvm.alpha.vecop", LLVMIntrinsic::alpha_vecop },
+ { "llvm.alpha.pup", LLVMIntrinsic::alpha_pup },
+ { "llvm.alpha.bytezap", LLVMIntrinsic::alpha_bytezap },
+ { "llvm.alpha.bytemanip", LLVMIntrinsic::alpha_bytemanip },
+ { "llvm.alpha.dfp_bop", LLVMIntrinsic::alpha_dfpbop },
+ { "llvm.alpha.dfp_uop", LLVMIntrinsic::alpha_dfpuop },
+ { "llvm.alpha.unordered", LLVMIntrinsic::alpha_unordered },
+ { "llvm.alpha.uqtodfp", LLVMIntrinsic::alpha_uqtodfp },
+ { "llvm.alpha.uqtosfp", LLVMIntrinsic::alpha_uqtosfp },
+ { "llvm.alpha.dfptosq", LLVMIntrinsic::alpha_dfptosq },
+ { "llvm.alpha.sfptosq", LLVMIntrinsic::alpha_sfptosq },
+ };
+ const unsigned num_alpha_intrinsics =
+ sizeof(alpha_intrinsics) / sizeof(*alpha_intrinsics);
+
switch (getName()[5]) {
case 'a':
- if (getName() == "llvm.alpha.ctlz") return LLVMIntrinsic::alpha_ctlz;
- if (getName() == "llvm.alpha.cttz") return LLVMIntrinsic::alpha_cttz;
- if (getName() == "llvm.alpha.ctpop") return LLVMIntrinsic::alpha_ctpop;
- if (getName() == "llvm.alpha.umulh") return LLVMIntrinsic::alpha_umulh;
+ for (unsigned i = 0; i < num_alpha_intrinsics; ++i) {
+ if (getName() == alpha_intrinsics[i].name)
+ return alpha_intrinsics[i].id;
+ }
break;
case 'l':
if (getName() == "llvm.longjmp") return LLVMIntrinsic::longjmp;
Index: llvm/lib/VMCore/Verifier.cpp
diff -u llvm/lib/VMCore/Verifier.cpp:1.52 llvm/lib/VMCore/Verifier.cpp:1.53
--- llvm/lib/VMCore/Verifier.cpp:1.52 Mon Jul 28 16:20:57 2003
+++ llvm/lib/VMCore/Verifier.cpp Wed Aug 6 15:08:23 2003
@@ -522,10 +522,21 @@
case LLVMIntrinsic::setjmp: NumArgs = 1; break;
case LLVMIntrinsic::longjmp: NumArgs = 2; break;
- case LLVMIntrinsic::alpha_ctlz: NumArgs = 1; break;
- case LLVMIntrinsic::alpha_cttz: NumArgs = 1; break;
- case LLVMIntrinsic::alpha_ctpop: NumArgs = 1; break;
- case LLVMIntrinsic::alpha_umulh: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_ctlz: NumArgs = 1; break;
+ case LLVMIntrinsic::alpha_cttz: NumArgs = 1; break;
+ case LLVMIntrinsic::alpha_ctpop: NumArgs = 1; break;
+ case LLVMIntrinsic::alpha_umulh: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_vecop: NumArgs = 4; break;
+ case LLVMIntrinsic::alpha_pup: NumArgs = 3; break;
+ case LLVMIntrinsic::alpha_bytezap: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_bytemanip: NumArgs = 3; break;
+ case LLVMIntrinsic::alpha_dfpbop: NumArgs = 3; break;
+ case LLVMIntrinsic::alpha_dfpuop: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_unordered: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_uqtodfp: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_uqtosfp: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_dfptosq: NumArgs = 2; break;
+ case LLVMIntrinsic::alpha_sfptosq: NumArgs = 2; break;
case LLVMIntrinsic::not_intrinsic:
assert(0 && "Invalid intrinsic!"); NumArgs = 0; break;
More information about the llvm-commits
mailing list