1 ; Test 32-bit comparisons in which the second operand is a PC-relative
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
8 ; Check signed comparisons.
9 define i32 @f1(i32 %src1) {
12 ; CHECK-NEXT: j{{g?}}l
16 %cond = icmp slt i32 %src1, %src2
17 br i1 %cond, label %exit, label %mulb
19 %mul = mul i32 %src1, %src1
22 %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
26 ; Check unsigned comparisons.
27 define i32 @f2(i32 %src1) {
30 ; CHECK-NEXT: j{{g?}}l
34 %cond = icmp ult i32 %src1, %src2
35 br i1 %cond, label %exit, label %mulb
37 %mul = mul i32 %src1, %src1
40 %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
44 ; Check equality, which can use CRL or CLRL.
45 define i32 @f3(i32 %src1) {
47 ; CHECK: c{{l?}}rl %r2, g
48 ; CHECK-NEXT: j{{g?}}e
52 %cond = icmp eq i32 %src1, %src2
53 br i1 %cond, label %exit, label %mulb
55 %mul = mul i32 %src1, %src1
58 %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]
62 ; ...likewise inequality.
63 define i32 @f4(i32 %src1) {
65 ; CHECK: c{{l?}}rl %r2, g
66 ; CHECK-NEXT: j{{g?}}lh
70 %cond = icmp ne i32 %src1, %src2
71 br i1 %cond, label %exit, label %mulb
73 %mul = mul i32 %src1, %src1
76 %res = phi i32 [ %src1, %entry ], [ %mul, %mulb ]