brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 2458da1 Raw
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