Skip to content
This repository has been archived by the owner on Apr 23, 2020. It is now read-only.

Commit

Permalink
[ARM] Fix issue with large xor constants.
Browse files Browse the repository at this point in the history
Fixup to rL325573 for large xor constants.

Thanks to Eli Friedman for the catch.

Differential revision: https://reviews.llvm.org/D43549



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@325761 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
davemgreen committed Feb 22, 2018
1 parent 4463835 commit 7f3a2c2
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 5 deletions.
7 changes: 2 additions & 5 deletions lib/Target/ARM/ARMTargetTransformInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,8 @@ int ARMTTIImpl::getIntImmCost(unsigned Opcode, unsigned Idx, const APInt &Imm,
}

// xor a, -1 can always be folded to MVN
if (Opcode == Instruction::Xor) {
int64_t NegImm = Imm.getSExtValue();
if (NegImm == -1)
return 0;
}
if (Opcode == Instruction::Xor && Imm.isAllOnesValue())
return 0;

return getIntImmCost(Imm, Ty);
}
Expand Down
29 changes: 29 additions & 0 deletions test/CodeGen/Thumb/mvn.ll
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,32 @@ for.cond.cleanup:
ret void
}


define void @test128(i128* %a) {
; CHECK-LABEL: test128:
; CHECK: ldr r1, [r0, #4]
; CHECK-NEXT: ldr r2, .LCPI8_0
; CHECK-NEXT: eors r2, r1
; CHECK-NEXT: str r2, [r0, #4]
; CHECK-NEXT: ldr r1, [r0]
; CHECK-NEXT: ldr r2, .LCPI8_1
; CHECK-NEXT: eors r2, r1
; CHECK-NEXT: str r2, [r0]
; CHECK-NEXT: ldr r1, [r0, #8]
; CHECK-NEXT: ldr r2, .LCPI8_2
; CHECK-NEXT: eors r2, r1
; CHECK-NEXT: str r2, [r0, #8]
; CHECK-NEXT: bx lr
; CHECK-NEXT: .p2align 2
; CHECK-NEXT: .LCPI8_0:
; CHECK-NEXT: .long 4075008415
; CHECK-NEXT: .LCPI8_1:
; CHECK-NEXT: .long 2080661269
; CHECK-NEXT: .LCPI8_2:
; CHECK-NEXT: .long 6692605
%x = load i128, i128* %a
%xn = xor i128 %x, 123456789123456789123456789
store i128 %xn, i128* %a
ret void
}

0 comments on commit 7f3a2c2

Please sign in to comment.