summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-04-30 03:44:07 +0000
committerChris Lattner <sabre@nondot.org>2005-04-30 03:44:07 +0000
commit1c636f11181d0c9cd35e29241dda0a78d5b1c896 (patch)
tree7a643f99ececf1c8837d4c9dd2efe98b54dd6bdd /llvm/lib
parent4c444fe007320d63ed25a710a0ecded15bdcd171 (diff)
downloadbcm5719-llvm-1c636f11181d0c9cd35e29241dda0a78d5b1c896.tar.gz
bcm5719-llvm-1c636f11181d0c9cd35e29241dda0a78d5b1c896.zip
Add llvm.sqrt intrinsic, patch contributed by Morten Ofstad
llvm-svn: 21627
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp2
-rw-r--r--llvm/lib/VMCore/Function.cpp1
-rw-r--r--llvm/lib/VMCore/Verifier.cpp10
3 files changed, 12 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 7d9e21cb94c..21c6543f754 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -702,7 +702,7 @@ namespace {
static const char *DoesntAccessMemoryTable[] = {
// LLVM intrinsics:
"llvm.frameaddress", "llvm.returnaddress", "llvm.readport",
- "llvm.isunordered",
+ "llvm.isunordered", "llvm.sqrt",
"abs", "labs", "llabs", "imaxabs", "fabs", "fabsf", "fabsl",
"trunc", "truncf", "truncl", "ldexp",
diff --git a/llvm/lib/VMCore/Function.cpp b/llvm/lib/VMCore/Function.cpp
index 2672e892c74..6740c6bbb0d 100644
--- a/llvm/lib/VMCore/Function.cpp
+++ b/llvm/lib/VMCore/Function.cpp
@@ -245,6 +245,7 @@ unsigned Function::getIntrinsicID() const {
if (getName() == "llvm.setjmp") return Intrinsic::setjmp;
if (getName() == "llvm.sigsetjmp") return Intrinsic::sigsetjmp;
if (getName() == "llvm.siglongjmp") return Intrinsic::siglongjmp;
+ if (getName() == "llvm.sqrt") return Intrinsic::sqrt;
break;
case 'v':
if (getName() == "llvm.va_copy") return Intrinsic::vacopy;
diff --git a/llvm/lib/VMCore/Verifier.cpp b/llvm/lib/VMCore/Verifier.cpp
index da14c00065e..d7b8f509621 100644
--- a/llvm/lib/VMCore/Verifier.cpp
+++ b/llvm/lib/VMCore/Verifier.cpp
@@ -723,6 +723,16 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) {
NumArgs = 2;
break;
+ case Intrinsic::sqrt:
+ Assert1(FT->getNumParams() == 1,
+ "Illegal # arguments for intrinsic function!", IF);
+ Assert1(FT->getParamType(0)->isFloatingPoint(),
+ "Argument is not a floating point type!", IF);
+ Assert1(FT->getReturnType() == FT->getParamType(0),
+ "Return type is not the same as argument type!", IF);
+ NumArgs = 1;
+ break;
+
case Intrinsic::setjmp: NumArgs = 1; break;
case Intrinsic::longjmp: NumArgs = 2; break;
case Intrinsic::sigsetjmp: NumArgs = 2; break;
OpenPOWER on IntegriCloud