1 ; Test all condition-code masks that are relevant for CRJ.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
7 define void @f1(i32 %target) {
9 ; CHECK: .cfi_def_cfa_offset
10 ; CHECK: .L[[LABEL:.*]]:
11 ; CHECK: crje %r2, {{%r[0-9]+}}, .L[[LABEL]]
14 %val = call i32 @foo()
15 %cond = icmp eq i32 %val, %target
16 br i1 %cond, label %loop, label %exit
21 define void @f2(i32 %target) {
23 ; CHECK: .cfi_def_cfa_offset
24 ; CHECK: .L[[LABEL:.*]]:
25 ; CHECK: crjlh %r2, {{%r[0-9]+}}, .L[[LABEL]]
28 %val = call i32 @foo()
29 %cond = icmp ne i32 %val, %target
30 br i1 %cond, label %loop, label %exit
35 define void @f3(i32 %target) {
37 ; CHECK: .cfi_def_cfa_offset
38 ; CHECK: .L[[LABEL:.*]]:
39 ; CHECK: crjle %r2, {{%r[0-9]+}}, .L[[LABEL]]
42 %val = call i32 @foo()
43 %cond = icmp sle i32 %val, %target
44 br i1 %cond, label %loop, label %exit
49 define void @f4(i32 %target) {
51 ; CHECK: .cfi_def_cfa_offset
52 ; CHECK: .L[[LABEL:.*]]:
53 ; CHECK: crjl %r2, {{%r[0-9]+}}, .L[[LABEL]]
56 %val = call i32 @foo()
57 %cond = icmp slt i32 %val, %target
58 br i1 %cond, label %loop, label %exit
63 define void @f5(i32 %target) {
65 ; CHECK: .cfi_def_cfa_offset
66 ; CHECK: .L[[LABEL:.*]]:
67 ; CHECK: crjh %r2, {{%r[0-9]+}}, .L[[LABEL]]
70 %val = call i32 @foo()
71 %cond = icmp sgt i32 %val, %target
72 br i1 %cond, label %loop, label %exit
77 define void @f6(i32 %target) {
79 ; CHECK: .cfi_def_cfa_offset
80 ; CHECK: .L[[LABEL:.*]]:
81 ; CHECK: crjhe %r2, {{%r[0-9]+}}, .L[[LABEL]]
84 %val = call i32 @foo()
85 %cond = icmp sge i32 %val, %target
86 br i1 %cond, label %loop, label %exit