blob: a258e850ea3e22eb414faeaff42e73c02c03c840 [file] [log] [blame]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +00001; Test all condition-code masks that are relevant for unsigned integer
2; comparisons.
3;
4; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
5define void @f1(i32 *%src, i32 %target) {
Stephen Lind24ab202013-07-14 06:24:09 +00006; CHECK-LABEL: f1:
Ulrich Weigand9e3577f2013-05-06 16:17:29 +00007; CHECK: .cfi_startproc
8; CHECK: .L[[LABEL:.*]]:
9; CHECK: cl %r3, 0(%r2)
Richard Sandiford586f4172013-05-21 08:53:17 +000010; CHECK-NEXT: jle .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000011 br label %loop
12loop:
David Blaikiea79ac142015-02-27 21:17:42 +000013 %val = load volatile i32 , i32 *%src
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000014 %cond = icmp ule i32 %target, %val
15 br i1 %cond, label %loop, label %exit
16exit:
17 ret void
18}
19
20define void @f2(i32 *%src, i32 %target) {
Stephen Lind24ab202013-07-14 06:24:09 +000021; CHECK-LABEL: f2:
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000022; CHECK: .cfi_startproc
23; CHECK: .L[[LABEL:.*]]:
24; CHECK: cl %r3, 0(%r2)
Richard Sandiford586f4172013-05-21 08:53:17 +000025; CHECK-NEXT: jl .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000026 br label %loop
27loop:
David Blaikiea79ac142015-02-27 21:17:42 +000028 %val = load volatile i32 , i32 *%src
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000029 %cond = icmp ult i32 %target, %val
30 br i1 %cond, label %loop, label %exit
31exit:
32 ret void
33}
34
35define void @f3(i32 *%src, i32 %target) {
Stephen Lind24ab202013-07-14 06:24:09 +000036; CHECK-LABEL: f3:
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000037; CHECK: .cfi_startproc
38; CHECK: .L[[LABEL:.*]]:
39; CHECK: cl %r3, 0(%r2)
Richard Sandiford586f4172013-05-21 08:53:17 +000040; CHECK-NEXT: jh .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000041 br label %loop
42loop:
David Blaikiea79ac142015-02-27 21:17:42 +000043 %val = load volatile i32 , i32 *%src
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000044 %cond = icmp ugt i32 %target, %val
45 br i1 %cond, label %loop, label %exit
46exit:
47 ret void
48}
49
50define void @f4(i32 *%src, i32 %target) {
Stephen Lind24ab202013-07-14 06:24:09 +000051; CHECK-LABEL: f4:
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000052; CHECK: .cfi_startproc
53; CHECK: .L[[LABEL:.*]]:
54; CHECK: cl %r3, 0(%r2)
Richard Sandiford586f4172013-05-21 08:53:17 +000055; CHECK-NEXT: jhe .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000056 br label %loop
57loop:
David Blaikiea79ac142015-02-27 21:17:42 +000058 %val = load volatile i32 , i32 *%src
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000059 %cond = icmp uge i32 %target, %val
60 br i1 %cond, label %loop, label %exit
61exit:
62 ret void
63}