diff options
Diffstat (limited to 'test/CodeGen/Hexagon')
-rw-r--r-- | test/CodeGen/Hexagon/tail-call-trunc.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/CodeGen/Hexagon/tail-call-trunc.ll b/test/CodeGen/Hexagon/tail-call-trunc.ll new file mode 100644 index 0000000..98214c7 --- /dev/null +++ b/test/CodeGen/Hexagon/tail-call-trunc.ll @@ -0,0 +1,28 @@ +; RUN: llc -march=hexagon < %s | FileCheck %s + +declare i32 @ret_i32() + +define i8 @test_i8() { +; CHECK-LABEL: test_i8: +; CHECK: jump ret_i32 + %res = tail call i32 @ret_i32() + %val = trunc i32 %res to i8 + ret i8 %val +} + +define i16 @test_i16() { +; CHECK-LABEL: test_i16: +; CHECK: jump ret_i32 + %res = tail call i32 @ret_i32() + %val = trunc i32 %res to i16 + ret i16 %val +} + +declare i64 @ret_i64() +define i32 @test_i32() { +; CHECK-LABEL: test_i32: +; CHECK: call ret_i64 + %res = tail call i64 @ret_i64() + %val = trunc i64 %res to i32 + ret i32 42 +} |