blob: 40c5b8853da9c3f397797da8109d56671434323e [file] [log] [blame]
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +00001; RUN: llc -mtriple=thumb-eabi -mcpu=cortex-m0 %s -verify-machineinstrs -o - | FileCheck %s
2
3define i32 @test1a(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +00004entry:
5 %cmp = icmp ne i32 %a, %b
6 %cond = zext i1 %cmp to i32
7 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +00008; CHECK-LABEL: test1a:
9; CHECK-NOT: b{{(ne)|(eq)}}
10; CHECK: subs r0, r0, r1
11; CHECK-NEXT: subs r1, r0, #1
12; CHECK-NEXT: sbcs r0, r1
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000013}
14
15define i32 @test1b(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000016entry:
17 %cmp = icmp eq i32 %a, %b
18 %cond = zext i1 %cmp to i32
19 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000020; CHECK-LABEL: test1b:
21; CHECK-NOT: b{{(ne)|(eq)}}
22; CHECK: subs r1, r0, r1
Eli Friedman063fd982018-10-31 21:45:48 +000023; CHECK-NEXT: rsbs r0, r1, #0
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000024; CHECK-NEXT: adcs r0, r1
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000025}
26
27define i32 @test2a(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000028entry:
29 %cmp = icmp eq i32 %a, %b
30 %cond = zext i1 %cmp to i32
31 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000032; CHECK-LABEL: test2a:
33; CHECK-NOT: b{{(ne)|(eq)}}
34; CHECK: subs r1, r0, r1
Eli Friedman063fd982018-10-31 21:45:48 +000035; CHECK-NEXT: rsbs r0, r1, #0
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000036; CHECK-NEXT: adcs r0, r1
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000037}
38
39define i32 @test2b(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000040entry:
41 %cmp = icmp ne i32 %a, %b
42 %cond = zext i1 %cmp to i32
43 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000044; CHECK-LABEL: test2b:
45; CHECK-NOT: b{{(ne)|(eq)}}
46; CHECK: subs r0, r0, r1
47; CHECK-NEXT: subs r1, r0, #1
48; CHECK-NEXT: sbcs r0, r1
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000049}
50
51define i32 @test3a(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000052entry:
53 %cmp = icmp eq i32 %a, %b
54 %cond = select i1 %cmp, i32 0, i32 4
55 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000056; CHECK-LABEL: test3a:
57; CHECK-NOT: b{{(ne)|(eq)}}
58; CHECK: subs r0, r0, r1
59; CHECK-NEXT: subs r1, r0, #1
60; CHECK-NEXT: sbcs r0, r1
61; CHECK-NEXT: lsls r0, r0, #2
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000062}
63
64define i32 @test3b(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000065entry:
66 %cmp = icmp eq i32 %a, %b
67 %cond = select i1 %cmp, i32 4, i32 0
68 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000069; CHECK-LABEL: test3b:
70; CHECK-NOT: b{{(ne)|(eq)}}
71; CHECK: subs r0, r0, r1
Eli Friedman063fd982018-10-31 21:45:48 +000072; CHECK-NEXT: rsbs r1, r0, #0
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000073; CHECK-NEXT: adcs r1, r0
74; CHECK-NEXT: lsls r0, r1, #2
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000075}
76
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000077define i32 @test4a(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000078entry:
79 %cmp = icmp ne i32 %a, %b
80 %cond = select i1 %cmp, i32 0, i32 4
81 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000082; CHECK-LABEL: test4a:
Alexandros Lamprinease15c9822018-11-09 11:09:40 +000083; CHECK-NOT: b{{(ne)|(eq)}}
84; CHECK: subs r0, r0, r1
85; CHECK-NEXT: rsbs r1, r0, #0
86; CHECK-NEXT: adcs r1, r0
87; CHECK-NEXT: lsls r0, r1, #2
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000088}
89
90define i32 @test4b(i32 %a, i32 %b) {
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +000091entry:
92 %cmp = icmp ne i32 %a, %b
93 %cond = select i1 %cmp, i32 4, i32 0
94 ret i32 %cond
Roger Ferrer Ibanezd41059a2018-02-16 09:23:59 +000095; CHECK-LABEL: test4b:
96; CHECK-NOT: b{{(ne)|(eq)}}
97; CHECK: subs r0, r0, r1
98; CHECK-NEXT: subs r1, r0, #1
99; CHECK-NEXT: sbcs r0, r1
100; CHECK-NEXT: lsls r0, r0, #2
Roger Ferrer Ibanez9fcc4722017-12-15 09:24:46 +0000101}