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

Side by Side Diff: tests_lit/assembler/arm32/branch-mult-fwd.ll

Issue 1414483008: Add CMP(register) and CMP(Immediate) to ARM integerated assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 5 years, 1 month 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 | « src/IceInstARM32.cpp ('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 that we correctly fix multiple forward branches. 1 ; Test that we correctly fix multiple forward branches.
2 2
3 ; Compile using standalone assembler. 3 ; Compile using standalone assembler.
4 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \ 4 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -Om1 \
5 ; RUN: | FileCheck %s --check-prefix=ASM 5 ; RUN: | FileCheck %s --check-prefix=ASM
6 6
7 ; Show bytes in assembled standalone code. 7 ; Show bytes in assembled standalone code.
8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \ 8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
9 ; RUN: --args -Om1 | FileCheck %s --check-prefix=DIS 9 ; RUN: --args -Om1 | FileCheck %s --check-prefix=DIS
10 10
11 ; Compile using integrated assembler. 11 ; Compile using integrated assembler.
12 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \ 12 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -Om1 \
13 ; RUN: | FileCheck %s --check-prefix=IASM 13 ; RUN: | FileCheck %s --check-prefix=IASM
14 14
15 ; Show bytes in assembled integrated code. 15 ; Show bytes in assembled integrated code.
16 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \ 16 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
17 ; RUN: --args -Om1 | FileCheck %s --check-prefix=DIS 17 ; RUN: --args -Om1 | FileCheck %s --check-prefix=DIS
18 18
19 ; REQUIRES: allow_dump 19 ; REQUIRES: allow_dump
20 20
21 define internal void @mult_fwd_branches(i32 %a, i32 %b) { 21 define internal void @mult_fwd_branches(i32 %a, i32 %b) {
22 ; ASM-LABEL:mult_fwd_branches: 22 ; ASM-LABEL:mult_fwd_branches:
23 ; ASM-LABEL:.Lmult_fwd_branches$__0: 23 ; ASM-LABEL:.Lmult_fwd_branches$__0:
24 24
25 ; ASM-NEXT:» sub» sp, sp, #12 25 ; ASM-NEXT: sub sp, sp, #12
26 ; ASM-NEXT:» str» r0, [sp, #8] 26 ; ASM-NEXT: str r0, [sp, #8]
27 ; ASM-NEXT:» str» r1, [sp, #4] 27 ; ASM-NEXT: str r1, [sp, #4]
28 28
29 ; DIS-LABEL:00000000 <mult_fwd_branches>: 29 ; DIS-LABEL:00000000 <mult_fwd_branches>:
30 30
31 ; DIS-NEXT: 0:» e24dd00c 31 ; DIS-NEXT: 0: e24dd00c
32 ; DIS-NEXT: 4:» e58d0008 32 ; DIS-NEXT: 4: e58d0008
33 ; DIS-NEXT: 8:» e58d1004 33 ; DIS-NEXT: 8: e58d1004
34 34
35 ; IASM-LABEL:mult_fwd_branches: 35 ; IASM-LABEL:mult_fwd_branches:
36 ; IASM-LABEL:.Lmult_fwd_branches$__0: 36 ; IASM-LABEL:.Lmult_fwd_branches$__0:
37 37
38 ; IASM-NEXT:» .byte 0xc 38 ; IASM-NEXT: .byte 0xc
39 ; IASM-NEXT:» .byte 0xd0 39 ; IASM-NEXT: .byte 0xd0
40 ; IASM-NEXT:» .byte 0x4d 40 ; IASM-NEXT: .byte 0x4d
41 ; IASM-NEXT:» .byte 0xe2 41 ; IASM-NEXT: .byte 0xe2
42 42
43 ; IASM-NEXT:» .byte 0x8 43 ; IASM-NEXT: .byte 0x8
44 ; IASM-NEXT:» .byte 0x0 44 ; IASM-NEXT: .byte 0x0
45 ; IASM-NEXT:» .byte 0x8d 45 ; IASM-NEXT: .byte 0x8d
46 ; IASM-NEXT:» .byte 0xe5 46 ; IASM-NEXT: .byte 0xe5
47 47
48 ; IASM-NEXT:» .byte 0x4 48 ; IASM-NEXT: .byte 0x4
49 ; IASM-NEXT:» .byte 0x10 49 ; IASM-NEXT: .byte 0x10
50 ; IASM-NEXT:» .byte 0x8d 50 ; IASM-NEXT: .byte 0x8d
51 ; IASM-NEXT:» .byte 0xe5 51 ; IASM-NEXT: .byte 0xe5
52 52
53 %cmp = icmp slt i32 %a, %b 53 %cmp = icmp slt i32 %a, %b
54 54
55 ; ASM-NEXT:» ldr» r0, [sp, #8] 55 ; ASM-NEXT: ldr r0, [sp, #8]
56 ; ASM-NEXT:» mov» r1, #0 56 ; ASM-NEXT: mov r1, #0
57 ; ASM-NEXT:» ldr» r2, [sp, #4] 57 ; ASM-NEXT: ldr r2, [sp, #4]
58 ; ASM-NEXT:» cmp» r0, r2 58 ; ASM-NEXT: cmp r0, r2
59 ; ASM-NEXT:» movlt» r1, #1 59 ; ASM-NEXT: movlt r1, #1
60 ; ASM-NEXT:» str» r1, [sp] 60 ; ASM-NEXT: str r1, [sp]
61 61
62 ; DIS-NEXT: c:» e59d0008 62 ; DIS-NEXT: c: e59d0008
63 ; DIS-NEXT: 10:» e3a01000 63 ; DIS-NEXT: 10: e3a01000
64 ; DIS-NEXT: 14:» e59d2004 64 ; DIS-NEXT: 14: e59d2004
65 ; DIS-NEXT: 18:» e1500002 65 ; DIS-NEXT: 18: e1500002
66 ; DIS-NEXT: 1c:» b3a01001 66 ; DIS-NEXT: 1c: b3a01001
67 ; DIS-NEXT: 20:» e58d1000 67 ; DIS-NEXT: 20: e58d1000
68 68
69 ; IASM-NEXT:» .byte 0x8 69 ; IASM-NEXT: .byte 0x8
70 ; IASM-NEXT:» .byte 0x0 70 ; IASM-NEXT: .byte 0x0
71 ; IASM-NEXT:» .byte 0x9d 71 ; IASM-NEXT: .byte 0x9d
72 ; IASM-NEXT:» .byte 0xe5 72 ; IASM-NEXT: .byte 0xe5
73 73
74 ; IASM-NEXT:» mov» r1, #0 74 ; IASM-NEXT: mov r1, #0
75 75
76 ; IASM-NEXT:» .byte 0x4 76 ; IASM-NEXT: .byte 0x4
77 ; IASM-NEXT:» .byte 0x20 77 ; IASM-NEXT: .byte 0x20
78 ; IASM-NEXT:» .byte 0x9d 78 ; IASM-NEXT: .byte 0x9d
79 ; IASM-NEXT:» .byte 0xe5 79 ; IASM-NEXT: .byte 0xe5
80 80
81 ; IASM-NEXT:» cmp» r0, r2 81 ; IASM-NEXT: .byte 0x2
82 ; IASM-NEXT:» movlt» r1, #1 82 ; IASM-NEXT: .byte 0x0
83 ; IASM-NEXT: .byte 0x50
84 ; IASM-NEXT: .byte 0xe1
83 85
84 ; IASM-NEXT:» .byte 0x0 86 ; IASM-NEXT: movlt r1, #1
85 ; IASM-NEXT:» .byte 0x10 87
86 ; IASM-NEXT:» .byte 0x8d 88 ; IASM-NEXT: .byte 0x0
87 ; IASM-NEXT:» .byte 0xe5 89 ; IASM-NEXT: .byte 0x10
90 ; IASM-NEXT: .byte 0x8d
91 ; IASM-NEXT: .byte 0xe5
88 92
89 br i1 %cmp, label %then, label %else 93 br i1 %cmp, label %then, label %else
90 94
91 ; ASM-NEXT:» ldr» r0, [sp] 95 ; ASM-NEXT: ldr r0, [sp]
92 ; ASM-NEXT:» uxtb» r0, r0 96 ; ASM-NEXT: uxtb r0, r0
93 ; ASM-NEXT:» cmp» r0, #0 97 ; ASM-NEXT: cmp r0, #0
94 ; ASM-NEXT:» bne» .Lmult_fwd_branches$then 98 ; ASM-NEXT: bne .Lmult_fwd_branches$then
95 ; ASM-NEXT:» b» .Lmult_fwd_branches$else 99 ; ASM-NEXT: b .Lmult_fwd_branches$else
96 100
97 ; DIS-NEXT: 24:» e59d0000 101 ; DIS-NEXT: 24: e59d0000
98 ; DIS-NEXT: 28:» e6ef0070 102 ; DIS-NEXT: 28: e6ef0070
99 ; DIS-NEXT: 2c:» e3500000 103 ; DIS-NEXT: 2c: e3500000
100 ; DIS-NEXT: 30:» 1a000000 104 ; DIS-NEXT: 30: 1a000000
101 ; DIS-NEXT: 34:» ea000000 105 ; DIS-NEXT: 34: ea000000
102 106
103 ; IASM-NEXT:» ldr» r0, [sp] 107 ; IASM-NEXT: ldr r0, [sp]
104 ; IASM-NEXT:» uxtb» r0, r0 108 ; IASM-NEXT: uxtb r0, r0
105 ; IASM-NEXT:» cmp» r0, #0
106 109
107 ; IASM-NEXT:» .byte 0x0 110 ; IASM-NEXT: .byte 0x0
108 ; IASM-NEXT:» .byte 0x0 111 ; IASM-NEXT: .byte 0x0
109 ; IASM-NEXT:» .byte 0x0 112 ; IASM-NEXT: .byte 0x50
110 ; IASM-NEXT:» .byte 0x1a 113 ; IASM-NEXT: .byte 0xe3
111 114
112 ; IASM-NEXT:» .byte 0x0 115 ; IASM-NEXT: .byte 0x0
113 ; IASM-NEXT:» .byte 0x0 116 ; IASM-NEXT: .byte 0x0
114 ; IASM-NEXT:» .byte 0x0 117 ; IASM-NEXT: .byte 0x0
115 ; IASM-NEXT:» .byte 0xea 118 ; IASM-NEXT: .byte 0x1a
119
120 ; IASM-NEXT: .byte 0x0
121 ; IASM-NEXT: .byte 0x0
122 ; IASM-NEXT: .byte 0x0
123 ; IASM-NEXT: .byte 0xea
116 124
117 then: 125 then:
118 ; ASM-LABEL:.Lmult_fwd_branches$then: 126 ; ASM-LABEL:.Lmult_fwd_branches$then:
119 ; IASM-LABEL:.Lmult_fwd_branches$then: 127 ; IASM-LABEL:.Lmult_fwd_branches$then:
120 128
121 br label %end 129 br label %end
122 ; ASM-NEXT:» b» .Lmult_fwd_branches$end 130 ; ASM-NEXT: b .Lmult_fwd_branches$end
123 131
124 ; DIS-NEXT: 38:» ea000000 132 ; DIS-NEXT: 38: ea000000
125 133
126 ; IASM-NEXT:» .byte 0x0 134 ; IASM-NEXT: .byte 0x0
127 ; IASM-NEXT:» .byte 0x0 135 ; IASM-NEXT: .byte 0x0
128 ; IASM-NEXT:» .byte 0x0 136 ; IASM-NEXT: .byte 0x0
129 ; IASM-NEXT:» .byte 0xea 137 ; IASM-NEXT: .byte 0xea
130 138
131 else: 139 else:
132 ; ASM-LABEL:.Lmult_fwd_branches$else: 140 ; ASM-LABEL:.Lmult_fwd_branches$else:
133 ; IASM-LABEL:.Lmult_fwd_branches$else: 141 ; IASM-LABEL:.Lmult_fwd_branches$else:
134 142
135 br label %end 143 br label %end
136 ; ASM-NEXT:» b» .Lmult_fwd_branches$end 144 ; ASM-NEXT: b .Lmult_fwd_branches$end
137 145
138 ; DIS-NEXT: 3c:» eaffffff 146 ; DIS-NEXT: 3c: eaffffff
139 147
140 ; IASM-NEXT:» .byte 0xff 148 ; IASM-NEXT: .byte 0xff
141 ; IASM-NEXT:» .byte 0xff 149 ; IASM-NEXT: .byte 0xff
142 ; IASM-NEXT:» .byte 0xff 150 ; IASM-NEXT: .byte 0xff
143 ; IASM-NEXT:» .byte 0xea 151 ; IASM-NEXT: .byte 0xea
144 152
145 153
146 end: 154 end:
147 ; ASM-LABEL:.Lmult_fwd_branches$end: 155 ; ASM-LABEL:.Lmult_fwd_branches$end:
148 ; IASM-LABEL: .Lmult_fwd_branches$end: 156 ; IASM-LABEL: .Lmult_fwd_branches$end:
149 157
150 ret void 158 ret void
151 159
152 ; ASM-NEXT:» add» sp, sp, #12 160 ; ASM-NEXT: add sp, sp, #12
153 ; ASM-NEXT:» bx» lr 161 ; ASM-NEXT: bx lr
154 162
155 ; DIS-NEXT: 40:» e28dd00c 163 ; DIS-NEXT: 40: e28dd00c
156 ; DIS-NEXT: 44:» e12fff1e 164 ; DIS-NEXT: 44: e12fff1e
157 165
158 ; IASM-NEXT:» .byte 0xc 166 ; IASM-NEXT: .byte 0xc
159 ; IASM-NEXT:» .byte 0xd0 167 ; IASM-NEXT: .byte 0xd0
160 ; IASM-NEXT:» .byte 0x8d 168 ; IASM-NEXT: .byte 0x8d
161 ; IASM-NEXT:» .byte 0xe2 169 ; IASM-NEXT: .byte 0xe2
162 170
163 ; IASM-NEXT:» .byte 0x1e 171 ; IASM-NEXT: .byte 0x1e
164 ; IASM-NEXT:» .byte 0xff 172 ; IASM-NEXT: .byte 0xff
165 ; IASM-NEXT:» .byte 0x2f 173 ; IASM-NEXT: .byte 0x2f
166 ; IASM-NEXT:» .byte 0xe1 174 ; IASM-NEXT: .byte 0xe1
167 175
168 } 176 }
OLDNEW
« no previous file with comments | « src/IceInstARM32.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698