Files
clang-p2996/llvm/test/CodeGen/ARM/cmn.ll
Roger Ferrer Ibanez d41059a9f6 [ARM] Materialise some boolean values to avoid a branch
This patch combines some cases of ARMISD::CMOV for integers that arise in comparisons of the form

  a != b ? x : 0
  a == b ? 0 : x

and that currently (e.g. in Thumb1) are emitted as branches.

Differential Revision: https://reviews.llvm.org/D34515

llvm-svn: 325323
2018-02-16 09:23:59 +00:00

23 lines
475 B
LLVM

; RUN: llc < %s -mtriple thumbv7-apple-ios | FileCheck %s
; <rdar://problem/7569620>
define i32 @compare_i_gt(i32 %a) {
entry:
; CHECK: compare_i_gt
; CHECK-NOT: mvn
; CHECK: cmn
%cmp = icmp sgt i32 %a, -78
%ret = select i1 %cmp, i32 42, i32 24
ret i32 %ret
}
define i32 @compare_r_eq(i32 %a, i32 %b) {
entry:
; CHECK: compare_r_eq
; CHECK: cmn
%sub = sub nsw i32 0, %b
%cmp = icmp eq i32 %a, %sub
%ret = select i1 %cmp, i32 42, i32 24
ret i32 %ret
}