Codegen fabs/fabsf as FABS. Patch contributed by Morten Ofstad
authorChris Lattner <sabre@nondot.org>
Thu, 28 Apr 2005 21:48:42 +0000 (21:48 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 28 Apr 2005 21:48:42 +0000 (21:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21607 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelSimple.cpp

index b783002420ded44426f27dde0d9303b6617edb84..cd0c0d31475a21177dad7383ec7571628ce19bb5 100644 (file)
@@ -1735,6 +1735,15 @@ void X86ISel::visitCallInst(CallInst &CI) {
     if (Intrinsic::ID ID = (Intrinsic::ID)F->getIntrinsicID()) {
       visitIntrinsicCall(ID, CI);   // Special intrinsics are not handled here
       return;
+    } else if (F->getName() == "fabs" || F->getName() == "fabsf") {
+      if (CI.getNumOperands() == 2 &&   // Basic sanity checks.
+          CI.getOperand(1)->getType()->isFloatingPoint() &&
+          CI.getType() == CI.getOperand(1)->getType()) {
+        unsigned op1Reg = getReg(CI.getOperand(1));
+        unsigned DestReg = getReg(CI);
+        BuildMI(BB, X86::FABS, 1, DestReg).addReg(op1Reg);
+        return;
+      }
     }
 
     // Emit a CALL instruction with PC-relative displacement.