Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: tests_lit/llvm2ice_tests/callindirect.pnacl.ll

Issue 1559243002: Suzero. X8664. NaCl Sandboxing. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fixes filetype=asm; addresses comments. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tests_lit/assembler/x86/sandboxing.ll ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ; Test of multiple indirect calls to the same target. Each call 1 ; Test of multiple indirect calls to the same target. Each call
2 ; should be to the same operand, whether it's in a register or on the 2 ; should be to the same operand, whether it's in a register or on the
3 ; stack. 3 ; stack.
4 4
5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 5 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
6 ; RUN: --target x8632 -i %s --args -O2 \ 6 ; RUN: --target x8632 -i %s --args -O2 \
7 ; RUN: | %if --need=target_X8632 --command FileCheck %s 7 ; RUN: | %if --need=target_X8632 --command FileCheck %s
8 ; RUN: %if --need=allow_dump --need=target_X8632 --command %p2i --filetype=asm \ 8 ; RUN: %if --need=allow_dump --need=target_X8632 --command %p2i --filetype=asm \
9 ; RUN: --assemble --disassemble -i %s --args -O2 \ 9 ; RUN: --assemble --disassemble -i %s --args -O2 \
10 ; RUN: | %if --need=allow_dump --need=target_X8632 --command FileCheck %s 10 ; RUN: | %if --need=allow_dump --need=target_X8632 --command FileCheck %s
11 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 11 ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \
12 ; RUN: --target x8632 -i %s --args -Om1 \ 12 ; RUN: --target x8632 -i %s --args -Om1 \
13 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s 13 ; RUN: | %if --need=target_X8632 --command FileCheck --check-prefix=OPTM1 %s
14 14
15 ; RUN: %if --need=target_X8664 --command %p2i --filetype=obj --disassemble \
16 ; RUN: --target x8664 -i %s --args -O2 \
17 ; RUN: | %if --need=target_X8664 --command FileCheck --check-prefix X8664 %s
18 ; RUN: %if --need=allow_dump --need=target_X8664 --command %p2i --filetype=asm \
19 ; RUN: --assemble --disassemble --target x8664 -i %s --args -O2 \
20 ; RUN: | %if --need=allow_dump --need=target_X8664 \
21 ; RUN: --command FileCheck --check-prefix=X8664 %s
22 ; RUN: %if --need=target_X8664 --command %p2i --filetype=obj --disassemble \
23 ; RUN: --target x8664 -i %s --args -Om1 \
24 ; RUN: | %if --need=target_X8664 \
25 ; RUN: --command FileCheck --check-prefix=X8664-OPTM1 %s
26
15 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented) 27 ; TODO(jvoung): Stop skipping unimplemented parts (via --skip-unimplemented)
16 ; once enough infrastructure is in. Also, switch to --filetype=obj 28 ; once enough infrastructure is in. Also, switch to --filetype=obj
17 ; when possible. 29 ; when possible.
18 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 30 ; RUN: %if --need=target_ARM32 --need=allow_dump \
19 ; RUN: --command %p2i --filetype=asm --assemble \ 31 ; RUN: --command %p2i --filetype=asm --assemble \
20 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \ 32 ; RUN: --disassemble --target arm32 -i %s --args -O2 --skip-unimplemented \
21 ; RUN: | %if --need=target_ARM32 --need=allow_dump \ 33 ; RUN: | %if --need=target_ARM32 --need=allow_dump \
22 ; RUN: --command FileCheck --check-prefix ARM32 %s 34 ; RUN: --command FileCheck --check-prefix ARM32 %s
23 ; RUN: %if --need=target_ARM32 --need=allow_dump \ 35 ; RUN: %if --need=target_ARM32 --need=allow_dump \
24 ; RUN: --command %p2i --filetype=asm --assemble \ 36 ; RUN: --command %p2i --filetype=asm --assemble \
(...skipping 23 matching lines...) Expand all
48 ; CHECK: call [[REGISTER]] 60 ; CHECK: call [[REGISTER]]
49 ; CHECK: call [[REGISTER]] 61 ; CHECK: call [[REGISTER]]
50 ; 62 ;
51 ; OPTM1-LABEL: CallIndirect 63 ; OPTM1-LABEL: CallIndirect
52 ; OPTM1: call [[TARGET:.+]] 64 ; OPTM1: call [[TARGET:.+]]
53 ; OPTM1: call [[TARGET]] 65 ; OPTM1: call [[TARGET]]
54 ; OPTM1: call [[TARGET]] 66 ; OPTM1: call [[TARGET]]
55 ; OPTM1: call [[TARGET]] 67 ; OPTM1: call [[TARGET]]
56 ; OPTM1: call [[TARGET]] 68 ; OPTM1: call [[TARGET]]
57 ; 69 ;
70 ; X8664-LABEL: CallIndirect
71 ; Use the first call as a barrier so we skip the movs in the function prolog.
72 ; X8664: call r{{..}}
73 ; X8664: mov e[[REG:..]],
74 ; X8664-NEXT: call r[[REG]]
75 ; X8664: mov e[[REG:..]],
76 ; X8664-NEXT: call r[[REG]]
77 ; X8664: mov e[[REG:..]],
78 ; X8664-NEXT: call r[[REG]]
79 ; X8664: call r{{..}}
80 ;
81 ; X8664-OPTM1-LABEL: CallIndirect
82 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
83 ; X8664-OPTM1: call r[[REG]]
84 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
85 ; X8664-OPTM1: call r[[REG]]
86 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
87 ; X8664-OPTM1: call r[[REG]]
88 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
89 ; X8664-OPTM1: call r[[REG]]
90 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
91 ; X8664-OPTM1: call r[[REG]]
92 ;
58 ; ARM32-LABEL: CallIndirect 93 ; ARM32-LABEL: CallIndirect
59 ; ARM32: blx [[REGISTER:r.*]] 94 ; ARM32: blx [[REGISTER:r.*]]
60 ; ARM32: blx [[REGISTER]] 95 ; ARM32: blx [[REGISTER]]
61 ; ARM32: blx [[REGISTER]] 96 ; ARM32: blx [[REGISTER]]
62 ; ARM32: blx [[REGISTER]] 97 ; ARM32: blx [[REGISTER]]
63 ; ARM32: blx [[REGISTER]] 98 ; ARM32: blx [[REGISTER]]
64 99
65 100
66 @fp_v = internal global [4 x i8] zeroinitializer, align 4 101 @fp_v = internal global [4 x i8] zeroinitializer, align 4
67 102
(...skipping 15 matching lines...) Expand all
83 ; CHECK: call [[REGISTER:[a-z]+]] 118 ; CHECK: call [[REGISTER:[a-z]+]]
84 ; CHECK: call [[REGISTER]] 119 ; CHECK: call [[REGISTER]]
85 ; CHECK: call [[REGISTER]] 120 ; CHECK: call [[REGISTER]]
86 ; 121 ;
87 ; OPTM1-LABEL: CallIndirectGlobal 122 ; OPTM1-LABEL: CallIndirectGlobal
88 ; OPTM1: call [[TARGET:.+]] 123 ; OPTM1: call [[TARGET:.+]]
89 ; OPTM1: call [[TARGET]] 124 ; OPTM1: call [[TARGET]]
90 ; OPTM1: call [[TARGET]] 125 ; OPTM1: call [[TARGET]]
91 ; OPTM1: call [[TARGET]] 126 ; OPTM1: call [[TARGET]]
92 ; 127 ;
128 ; X8664-LABEL: CallIndirectGlobal
129 ; X8664: call r[[REG]]
130 ; X8664: mov e[[REG:..]]
131 ; X8664-NEXT: call r[[REG]]
132 ; X8664: mov e[[REG:..]]
133 ; X8664-NEXT: call r[[REG]]
134 ; X8664: call r{{..}}
135 ;
136 ; X8664-OPTM1-LABEL: CallIndirectGlobal
137 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
138 ; X8664-OPTM1: call r[[REG]]
139 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
140 ; X8664-OPTM1: call r[[REG]]
141 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
142 ; X8664-OPTM1: call r[[REG]]
143 ; X8664-OPTM1: mov e[[REG:..]],DWORD PTR
144 ; X8664-OPTM1: call r[[REG]]
145 ;
93 ; ARM32-LABEL: CallIndirectGlobal 146 ; ARM32-LABEL: CallIndirectGlobal
94 ; ARM32: blx {{r.*}} 147 ; ARM32: blx {{r.*}}
95 ; ARM32: blx [[REGISTER:r[0-9]*]] 148 ; ARM32: blx [[REGISTER:r[0-9]*]]
96 ; ARM32: blx [[REGISTER]] 149 ; ARM32: blx [[REGISTER]]
97 ; ARM32: blx [[REGISTER]] 150 ; ARM32: blx [[REGISTER]]
98 151
99 ; Calling an absolute address is used for non-IRT PNaCl pexes to directly 152 ; Calling an absolute address is used for non-IRT PNaCl pexes to directly
100 ; access syscall trampolines. This is not really an indirect call, but 153 ; access syscall trampolines. This is not really an indirect call, but
101 ; there is a cast from int to pointer first. 154 ; there is a cast from int to pointer first.
102 define internal void @CallConst() { 155 define internal void @CallConst() {
103 entry: 156 entry:
104 %__1 = inttoptr i32 66496 to void ()* 157 %__1 = inttoptr i32 66496 to void ()*
105 call void %__1() 158 call void %__1()
106 call void %__1() 159 call void %__1()
107 call void %__1() 160 call void %__1()
108 ret void 161 ret void
109 } 162 }
110 163
111 ; CHECK-LABEL: CallConst 164 ; CHECK-LABEL: CallConst
112 ; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS* 165 ; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
113 ; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS* 166 ; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
114 ; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS* 167 ; CHECK: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
115 ; 168 ;
116 ; OPTM1-LABEL: CallConst 169 ; OPTM1-LABEL: CallConst
117 ; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS* 170 ; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
118 ; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS* 171 ; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
119 ; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS* 172 ; OPTM1: e8 bc 03 01 00 call {{[0-9a-f]+}} {{.*}} R_386_PC32 *ABS*
120 ; 173 ;
174 ; X8664-LABEL: CallConst
175 ; TODO(jpp): fix absolute call emission.
176 ; These are broken: the emitted code should be
177 ; e8 00 00 00 00 call {{.*}} *ABS*+0x103bc
178 ;
179 ; X8664-OPTM1-LABEL: CallConst
180 ; TODO(jpp): fix absolute call emission.
181 ; These are broken: the emitted code should be
182 ; e8 00 00 00 00 call {{.*}} *ABS*+0x103bc
183 ;
121 ; ARM32-LABEL: CallConst 184 ; ARM32-LABEL: CallConst
122 ; ARM32: movw [[REGISTER:r.*]], #960 185 ; ARM32: movw [[REGISTER:r.*]], #960
123 ; ARM32: movt [[REGISTER]], #1 186 ; ARM32: movt [[REGISTER]], #1
124 ; ARM32: blx [[REGISTER]] 187 ; ARM32: blx [[REGISTER]]
125 ; The legalization of the constant could be shared, but it isn't. 188 ; The legalization of the constant could be shared, but it isn't.
126 ; ARM32: movw [[REGISTER:r.*]], #960 189 ; ARM32: movw [[REGISTER:r.*]], #960
127 ; ARM32: blx [[REGISTER]] 190 ; ARM32: blx [[REGISTER]]
128 ; ARM32: blx [[REGISTER]] 191 ; ARM32: blx [[REGISTER]]
OLDNEW
« no previous file with comments | « tests_lit/assembler/x86/sandboxing.ll ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698