diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:04:03 +0000 |
| commit | f8af5cf600354830d4ccf59732403f0f073eccb9 (patch) | |
| tree | 2ba0398b4c42ad4f55561327538044fd2c925a8b /test/CodeGen/SystemZ/int-cmp-14.ll | |
| parent | 59d6cff90eecf31cb3dd860c4e786674cfdd42eb (diff) | |
Notes
Diffstat (limited to 'test/CodeGen/SystemZ/int-cmp-14.ll')
| -rw-r--r-- | test/CodeGen/SystemZ/int-cmp-14.ll | 122 |
1 files changed, 82 insertions, 40 deletions
diff --git a/test/CodeGen/SystemZ/int-cmp-14.ll b/test/CodeGen/SystemZ/int-cmp-14.ll index 6a7e0e6d552a..4dbd0ece3af6 100644 --- a/test/CodeGen/SystemZ/int-cmp-14.ll +++ b/test/CodeGen/SystemZ/int-cmp-14.ll @@ -4,9 +4,8 @@ ; Check comparisons with 0. define double @f1(double %a, double %b, i64 %i1) { -; CHECK: f1: -; CHECK: cghi %r2, 0 -; CHECK-NEXT: j{{g?}}lh +; CHECK-LABEL: f1: +; CHECK: cgijlh %r2, 0 ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, 0 @@ -14,11 +13,34 @@ define double @f1(double %a, double %b, i64 %i1) { ret double %res } -; Check the high end of the CGHI range. +; Check the high end of the CGIJ range. define double @f2(double %a, double %b, i64 %i1) { -; CHECK: f2: +; CHECK-LABEL: f2: +; CHECK: cgijlh %r2, 127 +; CHECK: ldr %f0, %f2 +; CHECK: br %r14 + %cond = icmp ne i64 %i1, 127 + %res = select i1 %cond, double %a, double %b + ret double %res +} + +; Check the next value up, which must use CGHI instead. +define double @f3(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f3: +; CHECK: cghi %r2, 128 +; CHECK-NEXT: jlh +; CHECK: ldr %f0, %f2 +; CHECK: br %r14 + %cond = icmp ne i64 %i1, 128 + %res = select i1 %cond, double %a, double %b + ret double %res +} + +; Check the high end of the CGHI range. +define double @f4(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f4: ; CHECK: cghi %r2, 32767 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, 32767 @@ -27,10 +49,10 @@ define double @f2(double %a, double %b, i64 %i1) { } ; Check the next value up, which must use CGFI. -define double @f3(double %a, double %b, i64 %i1) { -; CHECK: f3: +define double @f5(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f5: ; CHECK: cgfi %r2, 32768 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, 32768 @@ -39,10 +61,10 @@ define double @f3(double %a, double %b, i64 %i1) { } ; Check the high end of the CGFI range. -define double @f4(double %a, double %b, i64 %i1) { -; CHECK: f4: +define double @f6(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f6: ; CHECK: cgfi %r2, 2147483647 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, 2147483647 @@ -51,10 +73,10 @@ define double @f4(double %a, double %b, i64 %i1) { } ; Check the next value up, which should use CLGFI instead. -define double @f5(double %a, double %b, i64 %i1) { -; CHECK: f5: +define double @f7(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f7: ; CHECK: clgfi %r2, 2147483648 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, 2147483648 @@ -63,10 +85,10 @@ define double @f5(double %a, double %b, i64 %i1) { } ; Check the high end of the CLGFI range. -define double @f6(double %a, double %b, i64 %i1) { -; CHECK: f6: +define double @f8(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f8: ; CHECK: clgfi %r2, 4294967295 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, 4294967295 @@ -75,10 +97,9 @@ define double @f6(double %a, double %b, i64 %i1) { } ; Check the next value up, which must use a register comparison. -define double @f7(double %a, double %b, i64 %i1) { -; CHECK: f7: -; CHECK: cgr %r2, -; CHECK-NEXT: j{{g?}}lh +define double @f9(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f9: +; CHECK: cgrjlh %r2, ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, 4294967296 @@ -86,11 +107,10 @@ define double @f7(double %a, double %b, i64 %i1) { ret double %res } -; Check the high end of the negative CGHI range. -define double @f8(double %a, double %b, i64 %i1) { -; CHECK: f8: -; CHECK: cghi %r2, -1 -; CHECK-NEXT: j{{g?}}lh +; Check the high end of the negative CGIJ range. +define double @f10(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f10: +; CHECK: cgijlh %r2, -1 ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, -1 @@ -98,11 +118,34 @@ define double @f8(double %a, double %b, i64 %i1) { ret double %res } +; Check the low end of the CGIJ range. +define double @f11(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f11: +; CHECK: cgijlh %r2, -128 +; CHECK: ldr %f0, %f2 +; CHECK: br %r14 + %cond = icmp ne i64 %i1, -128 + %res = select i1 %cond, double %a, double %b + ret double %res +} + +; Check the next value down, which must use CGHI instead. +define double @f12(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f12: +; CHECK: cghi %r2, -129 +; CHECK-NEXT: jlh +; CHECK: ldr %f0, %f2 +; CHECK: br %r14 + %cond = icmp ne i64 %i1, -129 + %res = select i1 %cond, double %a, double %b + ret double %res +} + ; Check the low end of the CGHI range. -define double @f9(double %a, double %b, i64 %i1) { -; CHECK: f9: +define double @f13(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f13: ; CHECK: cghi %r2, -32768 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, -32768 @@ -111,10 +154,10 @@ define double @f9(double %a, double %b, i64 %i1) { } ; Check the next value down, which must use CGFI instead. -define double @f10(double %a, double %b, i64 %i1) { -; CHECK: f10: +define double @f14(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f14: ; CHECK: cgfi %r2, -32769 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, -32769 @@ -123,10 +166,10 @@ define double @f10(double %a, double %b, i64 %i1) { } ; Check the low end of the CGFI range. -define double @f11(double %a, double %b, i64 %i1) { -; CHECK: f11: +define double @f15(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f15: ; CHECK: cgfi %r2, -2147483648 -; CHECK-NEXT: j{{g?}}lh +; CHECK-NEXT: jlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, -2147483648 @@ -135,10 +178,9 @@ define double @f11(double %a, double %b, i64 %i1) { } ; Check the next value down, which must use register comparison. -define double @f12(double %a, double %b, i64 %i1) { -; CHECK: f12: -; CHECK: cgr -; CHECK-NEXT: j{{g?}}lh +define double @f16(double %a, double %b, i64 %i1) { +; CHECK-LABEL: f16: +; CHECK: cgrjlh ; CHECK: ldr %f0, %f2 ; CHECK: br %r14 %cond = icmp ne i64 %i1, -2147483649 |
