blob: cde9b568b38c4327e7f7a2a59790d3ad34221e6d [file] [log] [blame]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +00001; Test all condition-code masks that are relevant for signed integer
2; comparisons.
3;
4; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
5
6define void @f1(i32 *%src, i32 %target) {
7; CHECK: f1:
8; CHECK: .cfi_startproc
9; CHECK: .L[[LABEL:.*]]:
10; CHECK: c %r3, 0(%r2)
11; CHECK-NEXT: j{{g?}}e .L[[LABEL]]
12 br label %loop
13loop:
14 %val = load volatile i32 *%src
15 %cond = icmp eq i32 %target, %val
16 br i1 %cond, label %loop, label %exit
17exit:
18 ret void
19}
20
21define void @f2(i32 *%src, i32 %target) {
22; CHECK: f2:
23; CHECK: .cfi_startproc
24; CHECK: .L[[LABEL:.*]]:
25; CHECK: c %r3, 0(%r2)
26; CHECK-NEXT: j{{g?}}lh .L[[LABEL]]
27 br label %loop
28loop:
29 %val = load volatile i32 *%src
30 %cond = icmp ne i32 %target, %val
31 br i1 %cond, label %loop, label %exit
32exit:
33 ret void
34}
35
36define void @f3(i32 *%src, i32 %target) {
37; CHECK: f3:
38; CHECK: .cfi_startproc
39; CHECK: .L[[LABEL:.*]]:
40; CHECK: c %r3, 0(%r2)
41; CHECK-NEXT: j{{g?}}le .L[[LABEL]]
42 br label %loop
43loop:
44 %val = load volatile i32 *%src
45 %cond = icmp sle i32 %target, %val
46 br i1 %cond, label %loop, label %exit
47exit:
48 ret void
49}
50
51define void @f4(i32 *%src, i32 %target) {
52; CHECK: f4:
53; CHECK: .cfi_startproc
54; CHECK: .L[[LABEL:.*]]:
55; CHECK: c %r3, 0(%r2)
56; CHECK-NEXT: j{{g?}}l .L[[LABEL]]
57 br label %loop
58loop:
59 %val = load volatile i32 *%src
60 %cond = icmp slt i32 %target, %val
61 br i1 %cond, label %loop, label %exit
62exit:
63 ret void
64}
65
66define void @f5(i32 *%src, i32 %target) {
67; CHECK: f5:
68; CHECK: .cfi_startproc
69; CHECK: .L[[LABEL:.*]]:
70; CHECK: c %r3, 0(%r2)
71; CHECK-NEXT: j{{g?}}h .L[[LABEL]]
72 br label %loop
73loop:
74 %val = load volatile i32 *%src
75 %cond = icmp sgt i32 %target, %val
76 br i1 %cond, label %loop, label %exit
77exit:
78 ret void
79}
80
81define void @f6(i32 *%src, i32 %target) {
82; CHECK: f6:
83; CHECK: .cfi_startproc
84; CHECK: .L[[LABEL:.*]]:
85; CHECK: c %r3, 0(%r2)
86; CHECK-NEXT: j{{g?}}he .L[[LABEL]]
87 br label %loop
88loop:
89 %val = load volatile i32 *%src
90 %cond = icmp sge i32 %target, %val
91 br i1 %cond, label %loop, label %exit
92exit:
93 ret void
94}