From 3e9f1d09c0dc7c3921ebd32d9be45d1fdf182bf2 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 1 Apr 2007 20:49:36 +0000 Subject: [PATCH] fix breakage from last night, simplify code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35560 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86TargetAsmInfo.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/lib/Target/X86/X86TargetAsmInfo.cpp b/lib/Target/X86/X86TargetAsmInfo.cpp index 74977dfa5bf..8b0ad03b0a0 100644 --- a/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/lib/Target/X86/X86TargetAsmInfo.cpp @@ -17,6 +17,7 @@ #include "llvm/DerivedTypes.h" #include "llvm/InlineAsm.h" #include "llvm/Instructions.h" +#include "llvm/Intrinsics.h" #include "llvm/Module.h" #include "llvm/ADT/StringExtras.h" using namespace llvm; @@ -199,24 +200,14 @@ bool X86TargetAsmInfo::LowerToBSwap(CallInst *CI) const { !CI->getType()->isInteger()) return false; - const Type *Ty = CI->getType(); - const char *IntName; - if (const IntegerType *ITy = dyn_cast(Ty)) { - unsigned BitWidth = ITy->getBitWidth(); - if (BitWidth == 16) - IntName = "llvm.bswap.i16"; - else if (BitWidth == 32) - IntName = "llvm.bswap.i32"; - else if (BitWidth == 64) - IntName = "llvm.bswap.i64"; - else - return false; - } else + const IntegerType *Ty = dyn_cast(CI->getType()); + if (!Ty || Ty->getBitWidth() % 16 != 0) return false; - + // Okay, we can do this xform, do so now. + const Type *Tys[] = { Ty, Ty }; Module *M = CI->getParent()->getParent()->getParent(); - Constant *Int = M->getOrInsertFunction(IntName, Ty, Ty, (Type*)0); + Constant *Int = Intrinsic::getDeclaration(M, Intrinsic::bswap, Tys, 2); Value *Op = CI->getOperand(1); Op = new CallInst(Int, Op, CI->getName(), CI);