From 2426775c81b32ab0f12eb15e45001303737060c8 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 12 Dec 2006 14:03:29 +0000 Subject: [PATCH] don't use "ordinary" addressing mode 1 when mvn is appropriate git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32482 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMISelDAGToDAG.cpp | 2 ++ test/CodeGen/ARM/mvn.ll | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Target/ARM/ARMISelDAGToDAG.cpp b/lib/Target/ARM/ARMISelDAGToDAG.cpp index 48d918c1d6c..a796431ae78 100644 --- a/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -849,6 +849,8 @@ bool ARMDAGToDAGISel::SelectAddrMode1(SDOperand Op, case ISD::Constant: { uint32_t val = cast(N)->getValue(); if(!isRotInt8Immediate(val)) { + if (isRotInt8Immediate(~val)) + return false; //use MVN Constant *C = ConstantInt::get(Type::UIntTy, val); int alignment = 2; SDOperand Addr = CurDAG->getTargetConstantPool(C, MVT::i32, alignment); diff --git a/test/CodeGen/ARM/mvn.ll b/test/CodeGen/ARM/mvn.ll index d425498ea7e..b825cf8ea9b 100644 --- a/test/CodeGen/ARM/mvn.ll +++ b/test/CodeGen/ARM/mvn.ll @@ -1,5 +1,5 @@ ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm && -; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep mvn | wc -l | grep 5 +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm | grep mvn | wc -l | grep 6 int %f1() { entry: @@ -53,3 +53,14 @@ entry: %tmp3not = xor int %tmp3, -1 ; [#uses=1] ret int %tmp3not } + +int %f9() { +entry: + %tmp4845 = add int 0, 0 + br label %cond_true4848 + +cond_true4848: ; preds = %bb4835 + %tmp4851 = sub int -3, 0 ; [#uses=1] + %abc = add int %tmp4851, %tmp4845 + ret int %abc +} -- 2.34.1