diff options
author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-06-27 09:38:48 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-06-27 09:38:48 +0000 |
commit | a57e13b670ac4f40befe6b0e50bb7e91eec3b481 (patch) | |
tree | 19738a4a649f83fa0d368b5d5b9edf145740e9ac /llvm/test/CodeGen/SystemZ/int-const-02.ll | |
parent | 815d3232a77c1a67a8b95386066aea526257f32d (diff) | |
download | bcm5719-llvm-a57e13b670ac4f40befe6b0e50bb7e91eec3b481.tar.gz bcm5719-llvm-a57e13b670ac4f40befe6b0e50bb7e91eec3b481.zip |
[SystemZ] Allow immediate moves to be rematerialized
llvm-svn: 185068
Diffstat (limited to 'llvm/test/CodeGen/SystemZ/int-const-02.ll')
-rw-r--r-- | llvm/test/CodeGen/SystemZ/int-const-02.ll | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/int-const-02.ll b/llvm/test/CodeGen/SystemZ/int-const-02.ll index b345e3f2a2a..ba143c772d4 100644 --- a/llvm/test/CodeGen/SystemZ/int-const-02.ll +++ b/llvm/test/CodeGen/SystemZ/int-const-02.ll @@ -2,6 +2,8 @@ ; ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +declare void @foo(i64, i64, i64, i64) + ; Check 0. define i64 @f1() { ; CHECK: f1: @@ -249,3 +251,35 @@ define i64 @f30() { ; CHECK-NEXT: br %r14 ret i64 -2147483649 } + +; Check that constant loads are rematerialized. +define i64 @f31() { +; CHECK: f31: +; CHECK-DAG: lghi %r2, 42 +; CHECK-DAG: lgfi %r3, 65537 +; CHECK-DAG: llilf %r4, 2147483649 +; CHECK-DAG: llihf %r5, 65537 +; CHECK: brasl %r14, foo@PLT +; CHECK-DAG: llill %r2, 32768 +; CHECK-DAG: llilh %r3, 1 +; CHECK-DAG: llihl %r4, 1 +; CHECK-DAG: llihh %r5, 1 +; CHECK: brasl %r14, foo@PLT +; CHECK-DAG: lghi %r2, 42 +; CHECK-DAG: lgfi %r3, 65537 +; CHECK-DAG: llilf %r4, 2147483649 +; CHECK-DAG: llihf %r5, 65537 +; CHECK: brasl %r14, foo@PLT +; CHECK-DAG: llill %r2, 32768 +; CHECK-DAG: llilh %r3, 1 +; CHECK-DAG: llihl %r4, 1 +; CHECK-DAG: llihh %r5, 1 +; CHECK: brasl %r14, foo@PLT +; CHECK: lghi %r2, 42 +; CHECK: br %r14 + call void @foo(i64 42, i64 65537, i64 2147483649, i64 281479271677952) + call void @foo(i64 32768, i64 65536, i64 4294967296, i64 281474976710656) + call void @foo(i64 42, i64 65537, i64 2147483649, i64 281479271677952) + call void @foo(i64 32768, i64 65536, i64 4294967296, i64 281474976710656) + ret i64 42 +} |