xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/tail-call-trunc.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdeclare i32 @ret_i32()
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i8 @test_i8() {
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i8:
7*9880d681SAndroid Build Coastguard Worker; CHECK: jump ret_i32
8*9880d681SAndroid Build Coastguard Worker  %res = tail call i32 @ret_i32()
9*9880d681SAndroid Build Coastguard Worker  %val = trunc i32 %res to i8
10*9880d681SAndroid Build Coastguard Worker  ret i8 %val
11*9880d681SAndroid Build Coastguard Worker}
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerdefine i16 @test_i16() {
14*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i16:
15*9880d681SAndroid Build Coastguard Worker; CHECK: jump ret_i32
16*9880d681SAndroid Build Coastguard Worker  %res = tail call i32 @ret_i32()
17*9880d681SAndroid Build Coastguard Worker  %val = trunc i32 %res to i16
18*9880d681SAndroid Build Coastguard Worker  ret i16 %val
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdeclare i64 @ret_i64()
22*9880d681SAndroid Build Coastguard Workerdefine i32 @test_i32() {
23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_i32:
24*9880d681SAndroid Build Coastguard Worker; CHECK: call ret_i64
25*9880d681SAndroid Build Coastguard Worker  %res = tail call i64 @ret_i64()
26*9880d681SAndroid Build Coastguard Worker  %val = trunc i64 %res to i32
27*9880d681SAndroid Build Coastguard Worker  ret i32 42
28*9880d681SAndroid Build Coastguard Worker}
29