annotate test/CodeGen/Thumb/pr35836.ll @ 146:3fc4d5c3e21e

set tail call flag for code segment in CGCAll
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 19:23:36 +0900
parents 3a76565eade5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
134
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
1 ; RUN: llc < %s | FileCheck %s
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
2
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
3 target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
4 target triple = "thumbv5e-none-linux-gnueabi"
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
5
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
6 ; Function Attrs: norecurse nounwind optsize
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
7 define void @f(i32,i32,i32,i32,i32* %x4p, i32* %x5p, i32* %x6p) {
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
8 if.end:
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
9 br label %while.body
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
10
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
11 while.body:
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
12 %ll.0100 = phi i64 [ 0, %if.end ], [ %shr32, %while.body ]
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
13 %add = add nuw nsw i64 %ll.0100, 0
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
14 %add3 = add nuw nsw i64 %add, 0
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
15 %shr = lshr i64 %add3, 32
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
16 %conv7 = zext i32 %0 to i64
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
17 %conv9 = zext i32 %1 to i64
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
18 %add10 = add nuw nsw i64 %conv9, %conv7
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
19 %add11 = add nuw nsw i64 %add10, %shr
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
20 %shr14 = lshr i64 %add11, 32
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
21 %conv16 = zext i32 %2 to i64
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
22 %conv18 = zext i32 %3 to i64
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
23 %add19 = add nuw nsw i64 %conv18, %conv16
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
24 %add20 = add nuw nsw i64 %add19, %shr14
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
25 %conv21 = trunc i64 %add20 to i32
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
26 store i32 %conv21, i32* %x6p, align 4
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
27 %shr23 = lshr i64 %add20, 32
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
28 %x4 = load i32, i32* %x4p, align 4
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
29 %conv25 = zext i32 %x4 to i64
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
30 %x5 = load i32, i32* %x5p, align 4
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
31 %conv27 = zext i32 %x5 to i64
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
32 %add28 = add nuw nsw i64 %conv27, %conv25
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
33 %add29 = add nuw nsw i64 %add28, %shr23
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
34 %shr32 = lshr i64 %add29, 32
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
35 br label %while.body
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
36 }
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
37 ; CHECK: adds r3, r0, r1
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
38 ; CHECK: push {r5}
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
39 ; CHECK: pop {r1}
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
40 ; CHECK: adcs r1, r5
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
41 ; CHECK: ldr r0, [sp, #12] @ 4-byte Reload
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
42 ; CHECK: ldr r2, [sp, #8] @ 4-byte Reload
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
43 ; CHECK: adds r2, r0, r2
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
44 ; CHECK: push {r5}
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
45 ; CHECK: pop {r4}
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
46 ; CHECK: adcs r4, r5
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
47 ; CHECK: adds r0, r2, r5
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
48 ; CHECK: push {r3}
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
49 ; CHECK: pop {r0}
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
50 ; CHECK: adcs r0, r4
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
51 ; CHECK: ldr r6, [sp, #4] @ 4-byte Reload
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
52 ; CHECK: str r0, [r6]
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
53 ; CHECK: ldr r0, [r7]
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
54 ; CHECK: ldr r6, [sp] @ 4-byte Reload
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
55 ; CHECK: ldr r6, [r6]
3a76565eade5 update 5.0.1
mir3636
parents:
diff changeset
56 ; CHECK: adds r0, r6, r0