diff options
Diffstat (limited to 'test/CodeGen/SystemZ/fp-cmp-03.ll')
-rw-r--r-- | test/CodeGen/SystemZ/fp-cmp-03.ll | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/test/CodeGen/SystemZ/fp-cmp-03.ll b/test/CodeGen/SystemZ/fp-cmp-03.ll index fd12c93e27a51..e777d00c96873 100644 --- a/test/CodeGen/SystemZ/fp-cmp-03.ll +++ b/test/CodeGen/SystemZ/fp-cmp-03.ll @@ -1,15 +1,16 @@ -; Test 128-bit floating-point comparison. +; Test 128-bit floating-point comparison. The tests assume a z10 implementation +; of select, using conditional branches rather than LOCGR. ; -; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z10 | FileCheck %s ; There is no memory form of 128-bit comparison. define i64 @f1(i64 %a, i64 %b, fp128 *%ptr, float %f2) { -; CHECK: f1: +; CHECK-LABEL: f1: ; CHECK: lxebr %f0, %f0 ; CHECK: ld %f1, 0(%r4) ; CHECK: ld %f3, 8(%r4) ; CHECK: cxbr %f1, %f0 -; CHECK-NEXT: j{{g?}}e +; CHECK-NEXT: je ; CHECK: lgr %r2, %r3 ; CHECK: br %r14 %f2x = fpext float %f2 to fp128 @@ -18,3 +19,18 @@ define i64 @f1(i64 %a, i64 %b, fp128 *%ptr, float %f2) { %res = select i1 %cond, i64 %a, i64 %b ret i64 %res } + +; Check comparison with zero. +define i64 @f2(i64 %a, i64 %b, fp128 *%ptr) { +; CHECK-LABEL: f2: +; CHECK: ld %f0, 0(%r4) +; CHECK: ld %f2, 8(%r4) +; CHECK: ltxbr %f0, %f0 +; CHECK-NEXT: je +; CHECK: lgr %r2, %r3 +; CHECK: br %r14 + %f = load fp128 *%ptr + %cond = fcmp oeq fp128 %f, 0xL00000000000000000000000000000000 + %res = select i1 %cond, i64 %a, i64 %b + ret i64 %res +} |