blob: 1cab6ff28ed7d33bcaa0a3ae18176de727eecebc [file] [log] [blame]
Richard Sandiford0fb90ab2013-05-28 10:41:11 +00001; Test all condition-code masks that are relevant for CGRJ.
2;
3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
4
5declare i64 @foo();
6
7define void @f1(i64 %target) {
8; CHECK: f1:
9; CHECK: .cfi_def_cfa_offset
10; CHECK: .L[[LABEL:.*]]:
11; CHECK: cgrje %r2, {{%r[0-9]+}}, .L[[LABEL]]
12 br label %loop
13loop:
14 %val = call i64 @foo()
15 %cond = icmp eq i64 %val, %target
16 br i1 %cond, label %loop, label %exit
17exit:
18 ret void
19}
20
21define void @f2(i64 %target) {
22; CHECK: f2:
23; CHECK: .cfi_def_cfa_offset
24; CHECK: .L[[LABEL:.*]]:
25; CHECK: cgrjlh %r2, {{%r[0-9]+}}, .L[[LABEL]]
26 br label %loop
27loop:
28 %val = call i64 @foo()
29 %cond = icmp ne i64 %val, %target
30 br i1 %cond, label %loop, label %exit
31exit:
32 ret void
33}
34
35define void @f3(i64 %target) {
36; CHECK: f3:
37; CHECK: .cfi_def_cfa_offset
38; CHECK: .L[[LABEL:.*]]:
39; CHECK: cgrjle %r2, {{%r[0-9]+}}, .L[[LABEL]]
40 br label %loop
41loop:
42 %val = call i64 @foo()
43 %cond = icmp sle i64 %val, %target
44 br i1 %cond, label %loop, label %exit
45exit:
46 ret void
47}
48
49define void @f4(i64 %target) {
50; CHECK: f4:
51; CHECK: .cfi_def_cfa_offset
52; CHECK: .L[[LABEL:.*]]:
53; CHECK: cgrjl %r2, {{%r[0-9]+}}, .L[[LABEL]]
54 br label %loop
55loop:
56 %val = call i64 @foo()
57 %cond = icmp slt i64 %val, %target
58 br i1 %cond, label %loop, label %exit
59exit:
60 ret void
61}
62
63define void @f5(i64 %target) {
64; CHECK: f5:
65; CHECK: .cfi_def_cfa_offset
66; CHECK: .L[[LABEL:.*]]:
67; CHECK: cgrjh %r2, {{%r[0-9]+}}, .L[[LABEL]]
68 br label %loop
69loop:
70 %val = call i64 @foo()
71 %cond = icmp sgt i64 %val, %target
72 br i1 %cond, label %loop, label %exit
73exit:
74 ret void
75}
76
77define void @f6(i64 %target) {
78; CHECK: f6:
79; CHECK: .cfi_def_cfa_offset
80; CHECK: .L[[LABEL:.*]]:
81; CHECK: cgrjhe %r2, {{%r[0-9]+}}, .L[[LABEL]]
82 br label %loop
83loop:
84 %val = call i64 @foo()
85 %cond = icmp sge i64 %val, %target
86 br i1 %cond, label %loop, label %exit
87exit:
88 ret void
89}