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