annotate test/CodeGen/Mips/dext.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:
diff changeset
1 ; RUN: llc -march=mips64 -mcpu=mips64r2 -target-abi=n64 < %s -o - | FileCheck %s
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
3 define i64 @dext_add_zext(i32 signext %n) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
4 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
5 %add = add i32 %n, 1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
6 %res = zext i32 %add to i64
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
7 ret i64 %res
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
8
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
9 ; CHECK-LABEL: dext_add_zext:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
10 ; CHECK: dext $[[R0:[0-9]+]], $[[R0:[0-9]+]], 0, 32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
11
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
12 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
13
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
14 define i32 @ext_and24(i32 signext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
15 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
16 %and = and i32 %a, 16777215
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
17 ret i32 %and
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
18
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
19 ; CHECK-LABEL: ext_and24:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
20 ; CHECK: ext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 24
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
21
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
22 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
23
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
24 define i64 @dext_and32(i64 zeroext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
25 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
26 %and = and i64 %a, 4294967295
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
27 ret i64 %and
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
28
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
29 ; CHECK-LABEL: dext_and32:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
30 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
31
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
32 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
33
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
34 define i64 @dext_and35(i64 zeroext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
35 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
36 %and = and i64 %a, 34359738367
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
37 ret i64 %and
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
38
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
39 ; CHECK-LABEL: dext_and35:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
40 ; CHECK: dextm $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 35
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
41
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
42 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
43
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
44 define i64 @dext_and20(i64 zeroext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
45 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
46 %and = and i64 %a, 1048575
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
47 ret i64 %and
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
48
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
49 ; CHECK-LABEL: dext_and20:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
50 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 20
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
51
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
52 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
53
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
54 define i64 @dext_and16(i64 zeroext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
55 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
56 %and = and i64 %a, 65535
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
57 ret i64 %and
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
58
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
59 ; CHECK-LABEL: dext_and16:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
60 ; CHECK: andi $[[R0:[0-9]+]], $[[R1:[0-9]+]], 65535
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
61
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
62 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
63
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
64 define i64 @dext_lsr_and20(i64 zeroext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
65 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
66 %shr = lshr i64 %a, 5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
67 %and = and i64 %shr, 1048575
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
68 ret i64 %and
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
69
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
70 ; CHECK-LABEL: dext_lsr_and20:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
71 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 5, 20
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
72
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
73 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
74
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
75 define i64 @dext_lsr_and8(i64 zeroext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
76 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
77 %shr = lshr i64 %a, 40
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
78 %and = and i64 %shr, 255
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
79 ret i64 %and
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
80
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
81 ; CHECK-LABEL: dext_lsr_and8:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
82 ; CHECK: dextu $[[R0:[0-9]+]], $[[R1:[0-9]+]], 40, 8
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
83
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
84 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
85
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
86 define i64 @dext_zext(i32 signext %a) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
87 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
88 %conv = zext i32 %a to i64
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
89 ret i64 %conv
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
90
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
91 ; CHECK-LABEL: dext_zext:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
92 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 0, 32
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
93
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
94 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
95
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
96 define i64 @dext_and_lsr(i64 zeroext %n) {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
97 entry:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
98 %and = lshr i64 %n, 8
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
99 %shr = and i64 %and, 4095
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
100 ret i64 %shr
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
101
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
102 ; CHECK-LABEL: dext_and_lsr:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
103 ; CHECK: dext $[[R0:[0-9]+]], $[[R1:[0-9]+]], 8, 12
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
104
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
105 }