diff options
author | Evan Cheng <evan.cheng@apple.com> | 2011-04-01 00:42:02 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2011-04-01 00:42:02 +0000 |
commit | bd7667970059c222ded775a56d5895532df04dc7 (patch) | |
tree | 944165d3bc0048f1734ce0c63e27c7e34e1330c1 /llvm/lib/Target | |
parent | df2963ed46ee860c28b3c3b20cb3d2f1ad2637e7 (diff) | |
download | bcm5719-llvm-bd7667970059c222ded775a56d5895532df04dc7.tar.gz bcm5719-llvm-bd7667970059c222ded775a56d5895532df04dc7.zip |
Issue libcalls __udivmod*i4 / __divmod*i4 for div / rem pairs.
rdar://8911343
llvm-svn: 128696
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelLowering.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp index 5838181497a..5502ca434cc 100644 --- a/llvm/lib/Target/ARM/ARMISelLowering.cpp +++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp @@ -72,6 +72,11 @@ ARMInterworking("arm-interworking", cl::Hidden, cl::desc("Enable / disable ARM interworking (for debugging only)"), cl::init(true)); +static cl::opt<bool> +UseDivMod("arm-divmod-libcall", cl::Hidden, + cl::desc("Use __{u}divmod libcalls for div / rem pairs"), + cl::init(false)); + void ARMTargetLowering::addTypeForNEON(EVT VT, EVT PromotedLdStVT, EVT PromotedBitwiseVT) { if (VT != PromotedLdStVT) { @@ -393,6 +398,11 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM) setLibcallCallingConv(RTLIB::UDIV_I32, CallingConv::ARM_AAPCS); } + if (UseDivMod) { + setLibcallName(RTLIB::SDIVREM_I32, "__divmodsi4"); + setLibcallName(RTLIB::UDIVREM_I32, "__udivmodsi4"); + } + if (Subtarget->isThumb1Only()) addRegisterClass(MVT::i32, ARM::tGPRRegisterClass); else |