diff options
| author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-08-07 11:03:34 +0000 |
|---|---|---|
| committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-08-07 11:03:34 +0000 |
| commit | 9f11bc1956abeb654dbc98d9859a3fa3b8661b13 (patch) | |
| tree | 5ebe9a07d5574414fe0d08695314963283da9779 /llvm/test | |
| parent | f502fd75ab60d18bd7bc942fe486214898b6224e (diff) | |
| download | bcm5719-llvm-9f11bc1956abeb654dbc98d9859a3fa3b8661b13.tar.gz bcm5719-llvm-9f11bc1956abeb654dbc98d9859a3fa3b8661b13.zip | |
[SystemZ] Add floating-point load-and-test instructions
These instructions can also be used as comparisons with zero.
llvm-svn: 187882
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/fp-cmp-01.ll | 12 | ||||
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/fp-cmp-02.ll | 12 | ||||
| -rw-r--r-- | llvm/test/CodeGen/SystemZ/fp-cmp-03.ll | 15 | ||||
| -rw-r--r-- | llvm/test/MC/Disassembler/SystemZ/insns.txt | 36 | ||||
| -rw-r--r-- | llvm/test/MC/SystemZ/insn-bad.s | 8 | ||||
| -rw-r--r-- | llvm/test/MC/SystemZ/insn-good.s | 30 |
6 files changed, 113 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/fp-cmp-01.ll b/llvm/test/CodeGen/SystemZ/fp-cmp-01.ll index d59640ec071..6a9598e30ce 100644 --- a/llvm/test/CodeGen/SystemZ/fp-cmp-01.ll +++ b/llvm/test/CodeGen/SystemZ/fp-cmp-01.ll @@ -147,3 +147,15 @@ define float @f7(float *%ptr0) { ret float %sel10 } + +; Check comparison with zero. +define i64 @f8(i64 %a, i64 %b, float %f) { +; CHECK-LABEL: f8: +; CHECK: ltebr %f0, %f0 +; CHECK-NEXT: je +; CHECK: lgr %r2, %r3 +; CHECK: br %r14 + %cond = fcmp oeq float %f, 0.0 + %res = select i1 %cond, i64 %a, i64 %b + ret i64 %res +} diff --git a/llvm/test/CodeGen/SystemZ/fp-cmp-02.ll b/llvm/test/CodeGen/SystemZ/fp-cmp-02.ll index 48374a722bb..309d12e824a 100644 --- a/llvm/test/CodeGen/SystemZ/fp-cmp-02.ll +++ b/llvm/test/CodeGen/SystemZ/fp-cmp-02.ll @@ -147,3 +147,15 @@ define double @f7(double *%ptr0) { ret double %sel10 } + +; Check comparison with zero. +define i64 @f8(i64 %a, i64 %b, double %f) { +; CHECK-LABEL: f8: +; CHECK: ltdbr %f0, %f0 +; CHECK-NEXT: je +; CHECK: lgr %r2, %r3 +; CHECK: br %r14 + %cond = fcmp oeq double %f, 0.0 + %res = select i1 %cond, i64 %a, i64 %b + ret i64 %res +} diff --git a/llvm/test/CodeGen/SystemZ/fp-cmp-03.ll b/llvm/test/CodeGen/SystemZ/fp-cmp-03.ll index 3badc46352c..0f71f4e3a92 100644 --- a/llvm/test/CodeGen/SystemZ/fp-cmp-03.ll +++ b/llvm/test/CodeGen/SystemZ/fp-cmp-03.ll @@ -18,3 +18,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 +} diff --git a/llvm/test/MC/Disassembler/SystemZ/insns.txt b/llvm/test/MC/Disassembler/SystemZ/insns.txt index de65a68c376..51860cc5d1b 100644 --- a/llvm/test/MC/Disassembler/SystemZ/insns.txt +++ b/llvm/test/MC/Disassembler/SystemZ/insns.txt @@ -3643,6 +3643,30 @@ # CHECK: lt %r15, 0 0xe3 0xf0 0x00 0x00 0x00 0x12 +# CHECK: ltdbr %f0, %f9 +0xb3 0x12 0x00 0x09 + +# CHECK: ltdbr %f0, %f15 +0xb3 0x12 0x00 0x0f + +# CHECK: ltdbr %f15, %f0 +0xb3 0x12 0x00 0xf0 + +# CHECK: ltdbr %f15, %f9 +0xb3 0x12 0x00 0xf9 + +# CHECK: ltebr %f0, %f9 +0xb3 0x02 0x00 0x09 + +# CHECK: ltebr %f0, %f15 +0xb3 0x02 0x00 0x0f + +# CHECK: ltebr %f15, %f0 +0xb3 0x02 0x00 0xf0 + +# CHECK: ltebr %f15, %f9 +0xb3 0x02 0x00 0xf9 + # CHECK: ltg %r0, -524288 0xe3 0x00 0x00 0x00 0x80 0x02 @@ -3739,6 +3763,18 @@ # CHECK: ltr %r15, %r9 0x12 0xf9 +# CHECK: ltxbr %f0, %f9 +0xb3 0x42 0x00 0x09 + +# CHECK: ltxbr %f0, %f13 +0xb3 0x42 0x00 0x0d + +# CHECK: ltxbr %f13, %f0 +0xb3 0x42 0x00 0xd0 + +# CHECK: ltxbr %f13, %f9 +0xb3 0x42 0x00 0xd9 + # CHECK: lxr %f0, %f8 0xb3 0x65 0x00 0x08 diff --git a/llvm/test/MC/SystemZ/insn-bad.s b/llvm/test/MC/SystemZ/insn-bad.s index 246f5ce661a..b730637cd37 100644 --- a/llvm/test/MC/SystemZ/insn-bad.s +++ b/llvm/test/MC/SystemZ/insn-bad.s @@ -1645,6 +1645,14 @@ ltgf %r0, 524288 #CHECK: error: invalid register pair +#CHECK: ltxbr %f0, %f14 +#CHECK: error: invalid register pair +#CHECK: ltxbr %f14, %f0 + + ltxbr %f0, %f14 + ltxbr %f14, %f0 + +#CHECK: error: invalid register pair #CHECK: lxr %f0, %f2 #CHECK: error: invalid register pair #CHECK: lxr %f2, %f0 diff --git a/llvm/test/MC/SystemZ/insn-good.s b/llvm/test/MC/SystemZ/insn-good.s index 7686238da43..c997271bb6a 100644 --- a/llvm/test/MC/SystemZ/insn-good.s +++ b/llvm/test/MC/SystemZ/insn-good.s @@ -4904,6 +4904,26 @@ ltgf %r0, 524287(%r15,%r1) ltgf %r15, 0 +#CHECK: ltdbr %f0, %f9 # encoding: [0xb3,0x12,0x00,0x09] +#CHECK: ltdbr %f0, %f15 # encoding: [0xb3,0x12,0x00,0x0f] +#CHECK: ltdbr %f15, %f0 # encoding: [0xb3,0x12,0x00,0xf0] +#CHECK: ltdbr %f15, %f9 # encoding: [0xb3,0x12,0x00,0xf9] + + ltdbr %f0,%f9 + ltdbr %f0,%f15 + ltdbr %f15,%f0 + ltdbr %f15,%f9 + +#CHECK: ltebr %f0, %f9 # encoding: [0xb3,0x02,0x00,0x09] +#CHECK: ltebr %f0, %f15 # encoding: [0xb3,0x02,0x00,0x0f] +#CHECK: ltebr %f15, %f0 # encoding: [0xb3,0x02,0x00,0xf0] +#CHECK: ltebr %f15, %f9 # encoding: [0xb3,0x02,0x00,0xf9] + + ltebr %f0,%f9 + ltebr %f0,%f15 + ltebr %f15,%f0 + ltebr %f15,%f9 + #CHECK: ltgfr %r0, %r9 # encoding: [0xb9,0x12,0x00,0x09] #CHECK: ltgfr %r0, %r15 # encoding: [0xb9,0x12,0x00,0x0f] #CHECK: ltgfr %r15, %r0 # encoding: [0xb9,0x12,0x00,0xf0] @@ -4934,6 +4954,16 @@ ltr %r15,%r0 ltr %r15,%r9 +#CHECK: ltxbr %f0, %f9 # encoding: [0xb3,0x42,0x00,0x09] +#CHECK: ltxbr %f0, %f13 # encoding: [0xb3,0x42,0x00,0x0d] +#CHECK: ltxbr %f13, %f0 # encoding: [0xb3,0x42,0x00,0xd0] +#CHECK: ltxbr %f13, %f9 # encoding: [0xb3,0x42,0x00,0xd9] + + ltxbr %f0,%f9 + ltxbr %f0,%f13 + ltxbr %f13,%f0 + ltxbr %f13,%f9 + #CHECK: lxr %f0, %f8 # encoding: [0xb3,0x65,0x00,0x08] #CHECK: lxr %f0, %f13 # encoding: [0xb3,0x65,0x00,0x0d] #CHECK: lxr %f13, %f0 # encoding: [0xb3,0x65,0x00,0xd0] |

