From 74954a854b1c06a2c04e108e8d3abda309c9c6ed Mon Sep 17 00:00:00 2001 From: LLVM Packaging Team Date: Wed, 18 Oct 2017 15:37:25 +0100 Subject: [PATCH] armhf-bitfield =================================================================== Gbp-Pq: Name armhf-bitfield.diff --- lib/Target/ARM/ARMISelLowering.cpp | 4 ++-- test/CodeGen/ARM/no-cmov2bfi.ll | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/CodeGen/ARM/no-cmov2bfi.ll diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index d75d6968f..0b9971709 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -11324,8 +11324,8 @@ static void computeKnownBits(SelectionDAG &DAG, SDValue Op, APInt &KnownZero, if (Op.getOpcode() == ARMISD::CMOV) { APInt KZ2(KnownZero.getBitWidth(), 0); APInt KO2(KnownOne.getBitWidth(), 0); - computeKnownBits(DAG, Op.getOperand(1), KnownZero, KnownOne); - computeKnownBits(DAG, Op.getOperand(2), KZ2, KO2); + computeKnownBits(DAG, Op.getOperand(0), KnownZero, KnownOne); + computeKnownBits(DAG, Op.getOperand(1), KZ2, KO2); KnownZero &= KZ2; KnownOne &= KO2; diff --git a/test/CodeGen/ARM/no-cmov2bfi.ll b/test/CodeGen/ARM/no-cmov2bfi.ll new file mode 100644 index 000000000..c8b512048 --- /dev/null +++ b/test/CodeGen/ARM/no-cmov2bfi.ll @@ -0,0 +1,19 @@ +; RUN: llc < %s -mtriple=thumbv7 | FileCheck --check-prefix=CHECK-NOBFI %s + +declare zeroext i1 @dummy() + +define i8 @test(i8 %a1, i1 %c) { +; CHECK-NOBFI-NOT: bfi +; CHECK-NOBFI: bl dummy +; CHECK-NOBFI: cmp r0, #0 +; CHECK-NOBFI: it ne +; CHECK-NOBFI: orrne [[REG:r[0-9]+]], [[REG]], #8 +; CHECK-NOBFI: mov r0, [[REG]] + + %1 = and i8 %a1, -9 + %2 = select i1 %c, i8 %1, i8 %a1 + %3 = tail call zeroext i1 @dummy() + %4 = or i8 %2, 8 + %ret = select i1 %3, i8 %4, i8 %2 + ret i8 %ret +} -- 2.30.2