annotate test/CodeGen/Thumb2/thumb2-sxt_rot.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 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
1 ; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s %s -o - | FileCheck %s --check-prefix=CHECK-DSP
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
2 ; RUN: llc -mtriple=thumb-eabi -mcpu=cortex-m3 %s -o - | FileCheck %s --check-prefix=CHECK-NO-DSP
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
3 ; RUN: llc -mtriple=thumbv7em-eabi %s -o - | FileCheck %s -check-prefix=CHECK-DSP
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
4 ; RUN: llc -mtriple=thumbv8m.main-none-eabi %s -o - | FileCheck %s -check-prefix=CHECK-NO-DSP
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
5 ; RUN: llc -mtriple=thumbv8m.main-none-eabi -mattr=+dsp %s -o - | FileCheck %s -check-prefix=CHECK-DSP
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 define i32 @test0(i8 %A) {
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 ; CHECK-LABEL: test0:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
9 ; CHECK-DSP: sxtb r0, r0
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
10 ; CHECK-NO-DSP: sxtb r0, r0
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 %B = sext i8 %A to i32
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 ret i32 %B
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 define signext i8 @test1(i32 %A) {
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
16 ; CHECK-LABEL: test1:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
17 ; CHECK-DSP: sbfx r0, r0, #8, #8
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
18 ; CHECK-NO-DSP: sbfx r0, r0, #8, #8
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 %B = lshr i32 %A, 8
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 %C = shl i32 %A, 24
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 %D = or i32 %B, %C
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 %E = trunc i32 %D to i8
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 ret i8 %E
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 }
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 define signext i32 @test2(i32 %A, i32 %X) {
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
27 ; CHECK-LABEL: test2:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
28 ; CHECK-DSP: sxtab r0, r1, r0, ror #8
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
29 ; CHECK-NO-DSP-NOT: sxtab
0
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 %B = lshr i32 %A, 8
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 %C = shl i32 %A, 24
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 %D = or i32 %B, %C
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 %E = trunc i32 %D to i8
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 %F = sext i8 %E to i32
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 %G = add i32 %F, %X
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 ret i32 %G
95c75e76d11b LLVM 3.4
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 }
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
38
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
39 define i32 @test3(i32 %A, i32 %X) {
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
40 ; CHECK-LABEL: test3:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
41 ; CHECK-DSP: sxtah r0, r0, r1, ror #8
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
42 ; CHECK-NO-DSP-NOT: sxtah
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
43 %X.hi = lshr i32 %X, 8
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
44 %X.trunc = trunc i32 %X.hi to i16
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45 %addend = sext i16 %X.trunc to i32
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
46 %sum = add i32 %A, %addend
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47 ret i32 %sum
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
48 }
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
49
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
50 define signext i32 @test4(i32 %A, i32 %X) {
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
51 ; CHECK-LABEL: test4:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
52 ; CHECK-DSP: sxtab r0, r1, r0, ror #16
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
53 ; CHECK-NO-DSP-NOT: sxtab
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
54 %B = lshr i32 %A, 16
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
55 %C = shl i32 %A, 16
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
56 %D = or i32 %B, %C
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
57 %E = trunc i32 %D to i8
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
58 %F = sext i8 %E to i32
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
59 %G = add i32 %F, %X
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
60 ret i32 %G
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
61 }
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
62
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
63 define signext i32 @test5(i32 %A, i32 %X) {
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
64 ; CHECK-LABEL: test5:
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
65 ; CHECK-DSP: sxtah r0, r1, r0, ror #24
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
66 ; CHECK-NO-DSP-NOT: sxtah
120
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
67 %B = lshr i32 %A, 24
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
68 %C = shl i32 %A, 8
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
69 %D = or i32 %B, %C
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
70 %E = trunc i32 %D to i16
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
71 %F = sext i16 %E to i32
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
72 %G = add i32 %F, %X
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
73 ret i32 %G
1172e4bd9c6f update 4.0.0
mir3636
parents: 77
diff changeset
74 }