[llvm-commits] [llvm] r138861 - /llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp
Jakob Stoklund Olesen
stoklund at 2pi.dk
Wed Aug 31 10:00:02 PDT 2011
Author: stoklund
Date: Wed Aug 31 12:00:02 2011
New Revision: 138861
URL: http://llvm.org/viewvc/llvm-project?rev=138861&view=rev
Log:
Put VMOVS widening under a command line option, off by default.
It appears that our use of the imp-use and imp-def flags with
sub-registers is not yet robust enough to support this.
The failing test case is complicated, I am working on a reduction.
<rdar://problem/10044201>
Modified:
llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp?rev=138861&r1=138860&r2=138861&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMBaseInstrInfo.cpp Wed Aug 31 12:00:02 2011
@@ -46,6 +46,10 @@
EnableARM3Addr("enable-arm-3-addr-conv", cl::Hidden,
cl::desc("Enable ARM 2-addr to 3-addr conv"));
+static cl::opt<bool>
+WidenVMOVS("widen-vmovs", cl::Hidden,
+ cl::desc("Widen ARM vmovs to vmovd when possible"));
+
/// ARM_MLxEntry - Record information about MLA / MLS instructions.
struct ARM_MLxEntry {
unsigned MLxOpc; // MLA / MLS opcode
@@ -637,7 +641,8 @@
// a VMOVD since that can be converted to a NEON-domain move by
// NEONMoveFix.cpp. Check that MI is the original COPY instruction, and
// that it really defines the whole D-register.
- if ((DestReg - ARM::S0) % 2 == 0 && (SrcReg - ARM::S0) % 2 == 0 &&
+ if (WidenVMOVS &&
+ (DestReg - ARM::S0) % 2 == 0 && (SrcReg - ARM::S0) % 2 == 0 &&
I != MBB.end() && I->isCopy() &&
I->getOperand(0).getReg() == DestReg &&
I->getOperand(1).getReg() == SrcReg) {
More information about the llvm-commits
mailing list