96 lines · plain
1; Test all condition-code masks that are relevant for signed integer2; comparisons, in cases where a separate branch is better than COMPARE3; AND BRANCH.4;5; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s6 7define void @f1(ptr %src, i32 %target) {8; CHECK-LABEL: f1:9; CHECK: .cfi_startproc10; CHECK: .L[[LABEL:.*]]:11; CHECK: c %r3, 0(%r2)12; CHECK-NEXT: je .L[[LABEL]]13 br label %loop14loop:15 %val = load volatile i32, ptr %src16 %cond = icmp eq i32 %target, %val17 br i1 %cond, label %loop, label %exit18exit:19 ret void20}21 22define void @f2(ptr %src, i32 %target) {23; CHECK-LABEL: f2:24; CHECK: .cfi_startproc25; CHECK: .L[[LABEL:.*]]:26; CHECK: c %r3, 0(%r2)27; CHECK-NEXT: jlh .L[[LABEL]]28 br label %loop29loop:30 %val = load volatile i32, ptr %src31 %cond = icmp ne i32 %target, %val32 br i1 %cond, label %loop, label %exit33exit:34 ret void35}36 37define void @f3(ptr %src, i32 %target) {38; CHECK-LABEL: f3:39; CHECK: .cfi_startproc40; CHECK: .L[[LABEL:.*]]:41; CHECK: c %r3, 0(%r2)42; CHECK-NEXT: jle .L[[LABEL]]43 br label %loop44loop:45 %val = load volatile i32, ptr %src46 %cond = icmp sle i32 %target, %val47 br i1 %cond, label %loop, label %exit48exit:49 ret void50}51 52define void @f4(ptr %src, i32 %target) {53; CHECK-LABEL: f4:54; CHECK: .cfi_startproc55; CHECK: .L[[LABEL:.*]]:56; CHECK: c %r3, 0(%r2)57; CHECK-NEXT: jl .L[[LABEL]]58 br label %loop59loop:60 %val = load volatile i32, ptr %src61 %cond = icmp slt i32 %target, %val62 br i1 %cond, label %loop, label %exit63exit:64 ret void65}66 67define void @f5(ptr %src, i32 %target) {68; CHECK-LABEL: f5:69; CHECK: .cfi_startproc70; CHECK: .L[[LABEL:.*]]:71; CHECK: c %r3, 0(%r2)72; CHECK-NEXT: jh .L[[LABEL]]73 br label %loop74loop:75 %val = load volatile i32, ptr %src76 %cond = icmp sgt i32 %target, %val77 br i1 %cond, label %loop, label %exit78exit:79 ret void80}81 82define void @f6(ptr %src, i32 %target) {83; CHECK-LABEL: f6:84; CHECK: .cfi_startproc85; CHECK: .L[[LABEL:.*]]:86; CHECK: c %r3, 0(%r2)87; CHECK-NEXT: jhe .L[[LABEL]]88 br label %loop89loop:90 %val = load volatile i32, ptr %src91 %cond = icmp sge i32 %target, %val92 br i1 %cond, label %loop, label %exit93exit:94 ret void95}96