blob: 9365f16143090c7cf3548390da633779d4fea63e [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)
Richard Sandiford586f4172013-05-21 08:53:17 +000011; CHECK-NEXT: je .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000012 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)
Richard Sandiford586f4172013-05-21 08:53:17 +000026; CHECK-NEXT: jlh .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000027 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)
Richard Sandiford586f4172013-05-21 08:53:17 +000041; CHECK-NEXT: jle .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000042 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)
Richard Sandiford586f4172013-05-21 08:53:17 +000056; CHECK-NEXT: jl .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000057 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)
Richard Sandiford586f4172013-05-21 08:53:17 +000071; CHECK-NEXT: jh .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000072 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)
Richard Sandiford586f4172013-05-21 08:53:17 +000086; CHECK-NEXT: jhe .L[[LABEL]]
Ulrich Weigand9e3577f2013-05-06 16:17:29 +000087 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}