1*93183ee7SRichard Sandiford; Test all condition-code masks that are relevant for CLGRJ. 2*93183ee7SRichard Sandiford; 3*93183ee7SRichard Sandiford; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s 4*93183ee7SRichard Sandiford 5*93183ee7SRichard Sandiforddeclare i64 @foo() 6*93183ee7SRichard Sandiford@g1 = global i16 0 7*93183ee7SRichard Sandiford 8*93183ee7SRichard Sandiforddefine void @f1(i64 %target) { 9*93183ee7SRichard Sandiford; CHECK-LABEL: f1: 10*93183ee7SRichard Sandiford; CHECK: .cfi_def_cfa_offset 11*93183ee7SRichard Sandiford; CHECK: .L[[LABEL:.*]]: 12*93183ee7SRichard Sandiford; CHECK: clgrjle %r2, {{%r[0-9]+}}, .L[[LABEL]] 13*93183ee7SRichard Sandiford br label %loop 14*93183ee7SRichard Sandifordloop: 15*93183ee7SRichard Sandiford %val = call i64 @foo() 16*93183ee7SRichard Sandiford %cond = icmp ule i64 %val, %target 17*93183ee7SRichard Sandiford br i1 %cond, label %loop, label %exit 18*93183ee7SRichard Sandifordexit: 19*93183ee7SRichard Sandiford ret void 20*93183ee7SRichard Sandiford} 21*93183ee7SRichard Sandiford 22*93183ee7SRichard Sandiforddefine void @f2(i64 %target) { 23*93183ee7SRichard Sandiford; CHECK-LABEL: f2: 24*93183ee7SRichard Sandiford; CHECK: .cfi_def_cfa_offset 25*93183ee7SRichard Sandiford; CHECK: .L[[LABEL:.*]]: 26*93183ee7SRichard Sandiford; CHECK: clgrjl %r2, {{%r[0-9]+}}, .L[[LABEL]] 27*93183ee7SRichard Sandiford br label %loop 28*93183ee7SRichard Sandifordloop: 29*93183ee7SRichard Sandiford %val = call i64 @foo() 30*93183ee7SRichard Sandiford %cond = icmp ult i64 %val, %target 31*93183ee7SRichard Sandiford br i1 %cond, label %loop, label %exit 32*93183ee7SRichard Sandifordexit: 33*93183ee7SRichard Sandiford ret void 34*93183ee7SRichard Sandiford} 35*93183ee7SRichard Sandiford 36*93183ee7SRichard Sandiforddefine void @f3(i64 %target) { 37*93183ee7SRichard Sandiford; CHECK-LABEL: f3: 38*93183ee7SRichard Sandiford; CHECK: .cfi_def_cfa_offset 39*93183ee7SRichard Sandiford; CHECK: .L[[LABEL:.*]]: 40*93183ee7SRichard Sandiford; CHECK: clgrjh %r2, {{%r[0-9]+}}, .L[[LABEL]] 41*93183ee7SRichard Sandiford br label %loop 42*93183ee7SRichard Sandifordloop: 43*93183ee7SRichard Sandiford %val = call i64 @foo() 44*93183ee7SRichard Sandiford %cond = icmp ugt i64 %val, %target 45*93183ee7SRichard Sandiford br i1 %cond, label %loop, label %exit 46*93183ee7SRichard Sandifordexit: 47*93183ee7SRichard Sandiford ret void 48*93183ee7SRichard Sandiford} 49*93183ee7SRichard Sandiford 50*93183ee7SRichard Sandiforddefine void @f4(i64 %target) { 51*93183ee7SRichard Sandiford; CHECK-LABEL: f4: 52*93183ee7SRichard Sandiford; CHECK: .cfi_def_cfa_offset 53*93183ee7SRichard Sandiford; CHECK: .L[[LABEL:.*]]: 54*93183ee7SRichard Sandiford; CHECK: clgrjhe %r2, {{%r[0-9]+}}, .L[[LABEL]] 55*93183ee7SRichard Sandiford br label %loop 56*93183ee7SRichard Sandifordloop: 57*93183ee7SRichard Sandiford %val = call i64 @foo() 58*93183ee7SRichard Sandiford %cond = icmp uge i64 %val, %target 59*93183ee7SRichard Sandiford br i1 %cond, label %loop, label %exit 60*93183ee7SRichard Sandifordexit: 61*93183ee7SRichard Sandiford ret void 62*93183ee7SRichard Sandiford} 63