34 lines · plain
1; Test f128 comparisons on z14.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s4 5; There is no memory form of 128-bit comparison.6define i64 @f1(i64 %a, i64 %b, ptr %ptr1, ptr %ptr2) {7; CHECK-LABEL: f1:8; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r4)9; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r5)10; CHECK: wfcxb [[REG1]], [[REG2]]11; CHECK-NEXT: locgrne %r2, %r312; CHECK: br %r1413 %f1 = load fp128, ptr %ptr114 %f2 = load fp128, ptr %ptr215 %cond = fcmp oeq fp128 %f1, %f216 %res = select i1 %cond, i64 %a, i64 %b17 ret i64 %res18}19 20; Check comparison with zero -- it is not worthwhile to copy to21; FP pairs just so we can use LTXBR, so simply load up a zero.22define i64 @f2(i64 %a, i64 %b, ptr %ptr) {23; CHECK-LABEL: f2:24; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r4)25; CHECK-DAG: vzero [[REG2:%v[0-9]+]]26; CHECK: wfcxb [[REG1]], [[REG2]]27; CHECK-NEXT: locgrne %r2, %r328; CHECK: br %r1429 %f = load fp128, ptr %ptr30 %cond = fcmp oeq fp128 %f, 0xL0000000000000000000000000000000031 %res = select i1 %cond, i64 %a, i64 %b32 ret i64 %res33}34