blob: 3836a671701c97d34870e8189eef918f1c5ef4a7 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=arm-eabi %s -o - | FileCheck -check-prefix=ARM %s
; RUN: llc -mtriple=thumbv7-eabi %s -o - | FileCheck -check-prefix=THUMB %s
declare void @otherfn()
define void @cmp_shiftx(i32 %a, i32 %b) {
; ARM-LABEL: cmp_shiftx:
; ARM: @ %bb.0: @ %entry
; ARM-NEXT: cmp r1, r0, lsl #1
; ARM-NEXT: movne pc, lr
; ARM-NEXT: .LBB0_1: @ %if.then
; ARM-NEXT: b otherfn
;
; THUMB-LABEL: cmp_shiftx:
; THUMB: @ %bb.0: @ %entry
; THUMB-NEXT: cmp.w r1, r0, lsl #1
; THUMB-NEXT: it ne
; THUMB-NEXT: bxne lr
; THUMB-NEXT: b otherfn
entry:
%shl = shl i32 %a, 1
%cmp = icmp eq i32 %shl, %b
br i1 %cmp, label %if.then, label %if.end
if.then:
tail call void @otherfn()
br label %if.end
if.end:
ret void
}
define void @cmp_shifty(i32 %a, i32 %b) {
; ARM-LABEL: cmp_shifty:
; ARM: @ %bb.0: @ %entry
; ARM-NEXT: cmp r0, r1, lsl #1
; ARM-NEXT: movne pc, lr
; ARM-NEXT: .LBB1_1: @ %if.then
; ARM-NEXT: b otherfn
;
; THUMB-LABEL: cmp_shifty:
; THUMB: @ %bb.0: @ %entry
; THUMB-NEXT: cmp.w r0, r1, lsl #1
; THUMB-NEXT: it ne
; THUMB-NEXT: bxne lr
; THUMB-NEXT: b otherfn
entry:
%shl = shl i32 %b, 1
%cmp = icmp eq i32 %a, %shl
br i1 %cmp, label %if.then, label %if.end
if.then:
tail call void @otherfn()
br label %if.end
if.end:
ret void
}
define void @cmn_shiftx(i32 %a, i32 %b) {
; ARM-LABEL: cmn_shiftx:
; ARM: @ %bb.0: @ %entry
; ARM-NEXT: cmn r1, r0, lsl #1
; ARM-NEXT: movne pc, lr
; ARM-NEXT: .LBB2_1: @ %if.then
; ARM-NEXT: b otherfn
;
; THUMB-LABEL: cmn_shiftx:
; THUMB: @ %bb.0: @ %entry
; THUMB-NEXT: cmn.w r1, r0, lsl #1
; THUMB-NEXT: it ne
; THUMB-NEXT: bxne lr
; THUMB-NEXT: b otherfn
entry:
%shl = shl i32 %a, 1
%sub = sub nsw i32 0, %b
%cmp = icmp eq i32 %shl, %sub
br i1 %cmp, label %if.then, label %if.end
if.then:
tail call void @otherfn()
br label %if.end
if.end:
ret void
}
define void @cmn_shifty(i32 %a, i32 %b) {
; ARM-LABEL: cmn_shifty:
; ARM: @ %bb.0: @ %entry
; ARM-NEXT: cmn r0, r1, lsl #1
; ARM-NEXT: movne pc, lr
; ARM-NEXT: .LBB3_1: @ %if.then
; ARM-NEXT: b otherfn
;
; THUMB-LABEL: cmn_shifty:
; THUMB: @ %bb.0: @ %entry
; THUMB-NEXT: cmn.w r0, r1, lsl #1
; THUMB-NEXT: it ne
; THUMB-NEXT: bxne lr
; THUMB-NEXT: b otherfn
entry:
%mul = mul i32 %b, -2
%cmp = icmp eq i32 %a, %mul
br i1 %cmp, label %if.then, label %if.end
if.then:
tail call void @otherfn()
br label %if.end
if.end:
ret void
}