diff options
Diffstat (limited to 'llvm/test/CodeGen/SystemZ/int-const-01.ll')
-rw-r--r-- | llvm/test/CodeGen/SystemZ/int-const-01.ll | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/SystemZ/int-const-01.ll b/llvm/test/CodeGen/SystemZ/int-const-01.ll index a580154e6b5..e714e9d1934 100644 --- a/llvm/test/CodeGen/SystemZ/int-const-01.ll +++ b/llvm/test/CodeGen/SystemZ/int-const-01.ll @@ -2,6 +2,8 @@ ; ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s +declare void @foo(i32, i32, i32, i32) + ; Check 0. define i32 @f1() { ; CHECK: f1: @@ -89,3 +91,23 @@ define i32 @f11() { ; CHECK: br %r14 ret i32 -1 } + +; Check that constant loads are rematerialized. +define i32 @f12() { +; CHECK: f12: +; CHECK-DAG: lhi %r2, 42 +; CHECK-DAG: llill %r3, 32768 +; CHECK-DAG: llilh %r4, 1 +; CHECK-DAG: iilf %r5, 65537 +; CHECK: brasl %r14, foo@PLT +; CHECK-DAG: lhi %r2, 42 +; CHECK-DAG: llill %r3, 32768 +; CHECK-DAG: llilh %r4, 1 +; CHECK-DAG: iilf %r5, 65537 +; CHECK: brasl %r14, foo@PLT +; CHECK: lhi %r2, 42 +; CHECK: br %r14 + call void @foo(i32 42, i32 32768, i32 65536, i32 65537) + call void @foo(i32 42, i32 32768, i32 65536, i32 65537) + ret i32 42 +} |