[Support] Recycler: Implement move constructor (#120555)
[llvm-project.git] / llvm / test / CodeGen / ARM / machine-outliner-return-1.ll
blob30d2c151b5176efb5bb9cddc363b5cf139d3b3fa
1 ; RUN: llc --verify-machineinstrs %s -o - | FileCheck %s
3 target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
4 target triple = "thumbv7m-unknown-unknown-eabi"
6 declare dso_local i32 @h0(i32, i32) local_unnamed_addr #1
8 define dso_local i32 @f(i32 %a, i32 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
9 entry:
10   %add = add nsw i32 %a, 1
11   %sub = add nsw i32 %b, -1
12   %call = tail call i32 @h0(i32 %add, i32 %sub) #0
13   %add1 = add nsw i32 %c, %b
14   %mul = shl nsw i32 %call, 1
15   %add2 = add nsw i32 %mul, %add1
16   %sub3 = sub nsw i32 %c, %d
17   %mul4 = mul nsw i32 %add2, %sub3
18   %sub5 = sub nsw i32 %call, %add1
19   %div = sdiv i32 %mul4, %sub5
20   %add6 = add nsw i32 %d, %c
21   %mul7 = mul nsw i32 %div, %add6
22   %add8 = add nsw i32 %mul7, 1
23   ret i32 %add8
25 ; CHECK-LABEL: f:
26 ; CHECK:       bl   h0
27 ; CHECK-NEXT:  bl   OUTLINED_FUNCTION_0
28 ; CHECK-NEXT:  adds r0, #1
29 ; CHECK-NEXT:  pop  {r4, r5, r6, pc}
32 define dso_local i32 @g(i32 %a, i32 %b, i32 %c, i32 %d) local_unnamed_addr #0 {
33 entry:
34   %sub = add nsw i32 %a, -1
35   %add = add nsw i32 %b, 1
36   %call = tail call i32 @h0(i32 %sub, i32 %add) #0
37   %add1 = add nsw i32 %c, %b
38   %mul = shl nsw i32 %call, 1
39   %add2 = add nsw i32 %mul, %add1
40   %sub3 = sub nsw i32 %c, %d
41   %mul4 = mul nsw i32 %add2, %sub3
42   %sub5 = sub nsw i32 %call, %add1
43   %div = sdiv i32 %mul4, %sub5
44   %add6 = add nsw i32 %d, %c
45   %mul7 = mul nsw i32 %div, %add6
46   %add8 = add nsw i32 %mul7, 2
47   ret i32 %add8
49 ; CHECK-LABEL: g:
50 ; CHECK:       bl   h0
51 ; CHECK-NEXT:  bl   OUTLINED_FUNCTION_0
52 ; CHECK-NEXT:  adds r0, #2
53 ; CHECK-NEXT:  pop  {r4, r5, r6, pc}
56 attributes #0 = { minsize nounwind optsize }
57 attributes #1 = { minsize optsize }