New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 6 users
Status: Fixed
Owner: ----
Closed: Feb 2010
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug

Blocking:
issue 28287

Restricted
  • Only users with Commit permission may comment.



Sign in to add a comment
arm: support armv7 without NEON
Reported by a...@jwsdot.com, Dec 22 2009 Back to list
Chrome Version       : 4.0.274.0~svn20091217r34829-0ubuntu1

armv7 -> babbage3 board


What steps will reproduce the problem?
1. building chromium (fta packages) with native compiler on ubuntu lucid 
with flags like:
  target-arch=arm disable_nacl=1 v8_use_snapshot=false linux_use_tcmalloc=0  
armv7=1 arm_thumb=1 no_strict_aliasing=1 gcc_version=44 


What happens instead?
-> when running, the main process dies with SIGILL in skia + arm opts + 
neon

(freescale babbage3 has neon support afaiui)

Program received signal SIGILL, Illegal instruction.
S32A_Opaque_BlitRow32_neon (dst=0x1b59cd4, src=0x1b5bd70, count=36, 
alpha=<value optimized out>) at 
third_party/skia/src/opts/SkBlitRow_opts_arm.cpp:468
468	third_party/skia/src/opts/SkBlitRow_opts_arm.cpp: No such file or 
directory.
	in third_party/skia/src/opts/SkBlitRow_opts_arm.cpp
(gdb) bt
#0  S32A_Opaque_BlitRow32_neon (dst=0x1b59cd4, src=0x1b5bd70, count=36, 
alpha=<value optimized out>) at 
third_party/skia/src/opts/SkBlitRow_opts_arm.cpp:468
#1  0x0056ff76 in SkARGB32_Shader_Blitter::blitH (this=0xbedd60d0, x=<value 
optimized out>, y=<value optimized out>, width=180)
    at third_party/skia/src/core/SkBlitter_ARGB32.cpp:432
#2  0x0056b38e in SkBlitter::blitRect (this=0xbedd60d0, x=15, y=17, 
width=180, height=9) at third_party/skia/src/core/SkBlitter.cpp:63
#3  0x0055a1f8 in blitrect (blitter=0x1b59a94, r=<value optimized out>) at 
third_party/skia/src/core/SkScan.cpp:23
#4  0x0055a2e0 in SkScan::FillIRect (r=<value optimized out>, clip=<value 
optimized out>, blitter=0xbedd60d0) at 
third_party/skia/src/core/SkScan.cpp:38
#5  0x0054cb1e in SkDraw::drawPaint (this=0xbedd6240, paint=...) at 
third_party/skia/src/core/SkDraw.cpp:311
#6  0x0054bde6 in SkDevice::drawPaint (this=<value optimized out>, 
draw=<value optimized out>, paint=...) at 
third_party/skia/src/core/SkDevice.cpp:49
#7  0x0054a7a2 in SkCanvas::drawPaint (this=0xbedd63a0, paint=...) at 
third_party/skia/src/core/SkCanvas.cpp:1015
#8  0x0034f5f4 in gfx::Canvas::TileImageInt (this=0xbedd63a0, bitmap=<value 
optimized out>, src_x=0, src_y=0, dest_x=15, dest_y=0, w=180, h=26) at 
app/gfx/canvas.cc:247
#9  0x0034f634 in gfx::Canvas::TileImageInt (this=0x1b59a94, bitmap=..., 
x=<value optimized out>, y=<value optimized out>, w=180, h=26) at 
app/gfx/canvas.cc:225
#10 0x001ee4be in TabRendererGtk::PaintActiveTabBackground (this=0x1a67da0, 
canvas=0xbedd63a0) at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:905
#11 0x001ee6c2 in TabRendererGtk::PaintTabBackground (this=0x1a67da0, 
canvas=0xbedd63a0) at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:823
#12 0x001ef8c2 in TabRendererGtk::Paint (this=0x1a67da0, canvas=0xbedd63a0) 
at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:589
#13 0x001efd2a in TabRendererGtk::PaintTab (this=0x1a67da0, 
event=0x1a69388) at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:758
#14 0x001efdac in TabRendererGtk::OnExposeEvent (widget=<value optimized 
out>, event=0x1b5bb30, tab=0xb4) at 
chrome/browser/gtk/tabs/tab_renderer_gtk.cc:998
#15 0x4023721e in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#16 0x4023721e in ?? () from /usr/lib/libgtk-x11-2.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)


(gdb) info registers
r0             0x1b59a94	28678804
r1             0x1b5bb30	28687152
r2             0xb4	180
r3             0x1b59cd4	28679380
r4             0x24	36
r5             0x1b5bd78	28687736
r6             0x1b5bb30	28687152
r7             0x1b59a94	28678804
r8             0xb4	180
r9             0x1a	26
r10            0x1a	26
r11            0xbedd6240	3202179648
r12            0x1b5bd70	28687728
sp             0xbedd5ff0	0xbedd5ff0
lr             0x56ff77	5701495
pc             0x579224	0x579224 <S32A_Opaque_BlitRow32_neon+60>
fps            0x0	0
cpsr           0x20000030	536870960


(gdb) disassemble
Dump of assembler code for function S32A_Opaque_BlitRow32_neon:
0x005791e8 <S32A_Opaque_BlitRow32_neon+0>:	cmp	r2, #0
0x005791ea <S32A_Opaque_BlitRow32_neon+2>:	stmdb	sp!, {r4, r5, r6, 
r7, r8, r10}
0x005791ee <S32A_Opaque_BlitRow32_neon+6>:	ble.n	0x5792d2 
<S32A_Opaque_BlitRow32_neon+234>
0x005791f0 <S32A_Opaque_BlitRow32_neon+8>:	ldr	r3, [pc, #228]	; 
(0x5792d8 <S32A_Opaque_BlitRow32_neon+240>)
0x005791f2 <S32A_Opaque_BlitRow32_neon+10>:	cmp	r2, #3
0x005791f4 <S32A_Opaque_BlitRow32_neon+12>:	vld1.8	{d22}, [r3]
0x005791f8 <S32A_Opaque_BlitRow32_neon+16>:	ble.n	0x57928c 
<S32A_Opaque_BlitRow32_neon+164>
0x005791fa <S32A_Opaque_BlitRow32_neon+18>:	mov.w	r3, #255	; 
0xff
0x005791fe <S32A_Opaque_BlitRow32_neon+22>:	mov	r4, r2
0x00579200 <S32A_Opaque_BlitRow32_neon+24>:	vdup.16	q12, r3
0x00579204 <S32A_Opaque_BlitRow32_neon+28>:	mov	r12, r1
0x00579206 <S32A_Opaque_BlitRow32_neon+30>:	mov	r3, r0
0x00579208 <S32A_Opaque_BlitRow32_neon+32>:	vld1.32	{d17}, [r12]
0x0057920c <S32A_Opaque_BlitRow32_neon+36>:	add.w	r5, r12, #8
0x00579210 <S32A_Opaque_BlitRow32_neon+40>:	vtbl.8	d20, {d17}, d22
0x00579214 <S32A_Opaque_BlitRow32_neon+44>:	vld1.32	{d16}, [r5]
0x00579218 <S32A_Opaque_BlitRow32_neon+48>:	vsubw.u8	q10, q12, 
d20
0x0057921c <S32A_Opaque_BlitRow32_neon+52>:	vld1.32	{d28}, [r3]
0x00579220 <S32A_Opaque_BlitRow32_neon+56>:	vtbl.8	d18, {d16}, d22
0x00579224 <S32A_Opaque_BlitRow32_neon+60>:	vshr.u16	q3, q10, #7
0x00579228 <S32A_Opaque_BlitRow32_neon+64>:	add.w	r5, r3, #8
0x0057922c <S32A_Opaque_BlitRow32_neon+68>:	vsubw.u8	q9, q12, 
d18
0x00579230 <S32A_Opaque_BlitRow32_neon+72>:	vadd.i16	q10, q10, 
q3
0x00579234 <S32A_Opaque_BlitRow32_neon+76>:	vmovl.u8	q14, d28
0x00579238 <S32A_Opaque_BlitRow32_neon+80>:	vld1.32	{d26}, [r5]
0x0057923c <S32A_Opaque_BlitRow32_neon+84>:	vshr.u16	q15, q9, #7
0x00579240 <S32A_Opaque_BlitRow32_neon+88>:	vmul.i16	q10, q14, 
q10
0x00579244 <S32A_Opaque_BlitRow32_neon+92>:	vadd.i16	q9, q9, q15
0x00579248 <S32A_Opaque_BlitRow32_neon+96>:	vmovl.u8	q13, d26
0x0057924c <S32A_Opaque_BlitRow32_neon+100>:	vshrn.i16	d20, q10, 
#8
0x00579250 <S32A_Opaque_BlitRow32_neon+104>:	vmul.i16	q9, q13, q9
0x00579254 <S32A_Opaque_BlitRow32_neon+108>:	vadd.i8	d17, d17, d20
0x00579258 <S32A_Opaque_BlitRow32_neon+112>:	subs	r4, #4
0x0057925a <S32A_Opaque_BlitRow32_neon+114>:	vst1.32	{d17}, [r3]
0x0057925e <S32A_Opaque_BlitRow32_neon+118>:	vshrn.i16	d18, q9, #8
0x00579262 <S32A_Opaque_BlitRow32_neon+122>:	adds	r3, #16
0x00579264 <S32A_Opaque_BlitRow32_neon+124>:	cmp	r4, #3
0x00579266 <S32A_Opaque_BlitRow32_neon+126>:	vadd.i8	d16, d16, d18
0x0057926a <S32A_Opaque_BlitRow32_neon+130>:	vst1.32	{d16}, [r5]
0x0057926e <S32A_Opaque_BlitRow32_neon+134>:	add.w	r12, r12, #16
0x00579272 <S32A_Opaque_BlitRow32_neon+138>:	bgt.n	0x579208 
<S32A_Opaque_BlitRow32_neon+32>
0x00579274 <S32A_Opaque_BlitRow32_neon+140>:	subs	r2, #4
0x00579276 <S32A_Opaque_BlitRow32_neon+142>:	mov.w	r12, r2, lsr #2
0x0057927a <S32A_Opaque_BlitRow32_neon+146>:	add.w	r3, r12, #1
0x0057927e <S32A_Opaque_BlitRow32_neon+150>:	mov.w	r12, r12, lsl #2
0x00579282 <S32A_Opaque_BlitRow32_neon+154>:	lsls	r3, r3, #4
0x00579284 <S32A_Opaque_BlitRow32_neon+156>:	rsb	r2, r12, r2
0x00579288 <S32A_Opaque_BlitRow32_neon+160>:	adds	r0, r0, r3
0x0057928a <S32A_Opaque_BlitRow32_neon+162>:	adds	r1, r1, r3
0x0057928c <S32A_Opaque_BlitRow32_neon+164>:	cmp	r2, #0
0x0057928e <S32A_Opaque_BlitRow32_neon+166>:	ble.n	0x5792d2 
<S32A_Opaque_BlitRow32_neon+234>
0x00579290 <S32A_Opaque_BlitRow32_neon+168>:	ldr.w	r12, [pc, #72]	; 
0x5792dc <S32A_Opaque_BlitRow32_neon+244>
0x00579294 <S32A_Opaque_BlitRow32_neon+172>:	movs	r3, #0
0x00579296 <S32A_Opaque_BlitRow32_neon+174>:	mov	r4, r3
0x00579298 <S32A_Opaque_BlitRow32_neon+176>:	ldr.w	r12, [r12]
0x0057929c <S32A_Opaque_BlitRow32_neon+180>:	mvn.w	r8, r12
0x005792a0 <S32A_Opaque_BlitRow32_neon+184>:	ldr	r5, [r1, r3]
0x005792a2 <S32A_Opaque_BlitRow32_neon+186>:	adds	r4, #1
0x005792a4 <S32A_Opaque_BlitRow32_neon+188>:	ldr	r7, [r0, r3]
0x005792a6 <S32A_Opaque_BlitRow32_neon+190>:	lsrs	r6, r5, #24
0x005792a8 <S32A_Opaque_BlitRow32_neon+192>:	and.w	r10, r12, r7
0x005792ac <S32A_Opaque_BlitRow32_neon+196>:	rsb	r6, r6, #256	; 
0x100
0x005792b0 <S32A_Opaque_BlitRow32_neon+200>:	and.w	r7, r12, r7, lsr #8
0x005792b4 <S32A_Opaque_BlitRow32_neon+204>:	mul.w	r10, r10, r6
0x005792b8 <S32A_Opaque_BlitRow32_neon+208>:	mul.w	r6, r6, r7
0x005792bc <S32A_Opaque_BlitRow32_neon+212>:	and.w	r10, r12, r10, lsr 
#8
0x005792c0 <S32A_Opaque_BlitRow32_neon+216>:	and.w	r6, r6, r8
0x005792c4 <S32A_Opaque_BlitRow32_neon+220>:	orr.w	r6, r10, r6
0x005792c8 <S32A_Opaque_BlitRow32_neon+224>:	adds	r5, r6, r5
0x005792ca <S32A_Opaque_BlitRow32_neon+226>:	str	r5, [r0, r3]
0x005792cc <S32A_Opaque_BlitRow32_neon+228>:	adds	r3, #4
0x005792ce <S32A_Opaque_BlitRow32_neon+230>:	cmp	r4, r2
0x005792d0 <S32A_Opaque_BlitRow32_neon+232>:	bne.n	0x5792a0 
<S32A_Opaque_BlitRow32_neon+184>
0x005792d2 <S32A_Opaque_BlitRow32_neon+234>:	ldmia.w	sp!, {r4, r5, r6, 
r7, r8, r10}
0x005792d6 <S32A_Opaque_BlitRow32_neon+238>:	bx	lr
0x005792d8 <S32A_Opaque_BlitRow32_neon+240>:	lsls	r0, r6, #17
0x005792da <S32A_Opaque_BlitRow32_neon+242>:	lsls	r0, r6, #5
0x005792dc <S32A_Opaque_BlitRow32_neon+244>:	ldc2l	1, cr0, [r8], #444	
; 0x1bc
End of assembler dump.

 
Comment 1 by f...@sofaraway.org, Dec 22 2009
Labels: OS-Linux
that's with target_arch=arm disable_nacl=1 v8_use_snapshot=false linux_use_tcmalloc=0  
armv7=1 arm_thumb=1  no_strict_aliasing=1 gcc_version=44

(I just dropped no_strict_aliasing=1 gcc_version=44 - now obsolete - for the next 
builds)
Comment 2 by piman...@gmail.com, Dec 22 2009
Does the kernel enable NEON support ? I remember a question coming in to me (from a 
Freescale person ?), and the result was that NEON was turned off in the kernel, and 
that was causing the illegal instruction.
Comment 3 by asac...@gmail.com, Dec 22 2009
Yeah, now looking and config-... you seem to be right, thanks!. Are there plans to 
make neon use a runtime decision depending on hwcaps?

I wonder what the best gyp defines to use if we want to use the default toolchain 
flags in ubuntu lucid; see https://wiki.ubuntu.com/ARM/Thumb2 for what we do there. 
Would those decisions be overriden if we just say "target_arch=arm" or is that the 
right way to build it for us?

Comment 4 by pimant...@gmail.com, Dec 22 2009
Labels: -Area-Undefined Area-BuildTools
Status: Available
Summary: arm: support armv7 without NEON (was: NULL)
There's no current plans to make it a run-time decision. Almost all the ARMv7 vendors 
support NEON and I don't see a good reason not to enable it in the kernel in this 
case. And if the need comes to support ARMv7 without NEON it could be made another 
gyp flag. However if you think it's important to make it a run-time flag, please file 
another bug, and state your thinking there.

Right now when you set armv7=1, it will enable -mfloat-abi=softfp. If you set thumb=1 
it will enable -mthumb -Wa,-mimplicit-it=thumb
The only difference remaining is neon vs vfpv3-d16. Maybe adding a separate gyp flag 
?
Comment 5 Deleted
Comment 6 by a...@jwsdot.com, Dec 22 2009
(sorry for repost. had wrong user id before)...

I was told the reason why we dont have NEON in imx51/freescale kernel is that NEON 
causes CPU hangs on freescale boards - though its supposed to be supported. I will 
try 
to get more details on that.

Anyway, dove armv7 boards by marvell do not have NEON support - which is why we 
didn't 
add that by default to our lucid toolchain. I agree, that atm the new gyp flag feels 
like the best way forward ...
Comment 7 by agl@chromium.org, Dec 22 2009
Comment 8 by f...@sofaraway.org, Dec 23 2009
side note: i had to revert my change to re-add no_strict_aliasing=1 gcc_version=44 as 
without it, lots of pages started to snap on ia32 (apparently those with flash)
http://paste.ubuntu.com/344976/
Comment 9 by pimant...@gmail.com, Feb 26 2010
Status: Fixed
Fixed. NEON is still turned on by default but you can disable with arm_neon=0 in the 
GYP_DEFINES.
Labels: -Area-BuildTools bulkmove Area-Build
Chrome Version       : 4.0.274.0~svn20091217r34829-0ubuntu1

armv7 -&gt; babbage3 board


What steps will reproduce the problem?
1. building chromium (fta packages) with native compiler on ubuntu lucid 
with flags like:
  target-arch=arm disable_nacl=1 v8_use_snapshot=false linux_use_tcmalloc=0  
armv7=1 arm_thumb=1 no_strict_aliasing=1 gcc_version=44 


What happens instead?
-&gt; when running, the main process dies with SIGILL in skia + arm opts + 
neon

(freescale babbage3 has neon support afaiui)

Program received signal SIGILL, Illegal instruction.
S32A_Opaque_BlitRow32_neon (dst=0x1b59cd4, src=0x1b5bd70, count=36, 
alpha=&lt;value optimized out&gt;) at 
third_party/skia/src/opts/SkBlitRow_opts_arm.cpp:468
468	third_party/skia/src/opts/SkBlitRow_opts_arm.cpp: No such file or 
directory.
	in third_party/skia/src/opts/SkBlitRow_opts_arm.cpp
(gdb) bt
#0  S32A_Opaque_BlitRow32_neon (dst=0x1b59cd4, src=0x1b5bd70, count=36, 
alpha=&lt;value optimized out&gt;) at 
third_party/skia/src/opts/SkBlitRow_opts_arm.cpp:468
#1  0x0056ff76 in SkARGB32_Shader_Blitter::blitH (this=0xbedd60d0, x=&lt;value 
optimized out&gt;, y=&lt;value optimized out&gt;, width=180)
    at third_party/skia/src/core/SkBlitter_ARGB32.cpp:432
#2  0x0056b38e in SkBlitter::blitRect (this=0xbedd60d0, x=15, y=17, 
width=180, height=9) at third_party/skia/src/core/SkBlitter.cpp:63
#3  0x0055a1f8 in blitrect (blitter=0x1b59a94, r=&lt;value optimized out&gt;) at 
third_party/skia/src/core/SkScan.cpp:23
#4  0x0055a2e0 in SkScan::FillIRect (r=&lt;value optimized out&gt;, clip=&lt;value 
optimized out&gt;, blitter=0xbedd60d0) at 
third_party/skia/src/core/SkScan.cpp:38
#5  0x0054cb1e in SkDraw::drawPaint (this=0xbedd6240, paint=...) at 
third_party/skia/src/core/SkDraw.cpp:311
#6  0x0054bde6 in SkDevice::drawPaint (this=&lt;value optimized out&gt;, 
draw=&lt;value optimized out&gt;, paint=...) at 
third_party/skia/src/core/SkDevice.cpp:49
#7  0x0054a7a2 in SkCanvas::drawPaint (this=0xbedd63a0, paint=...) at 
third_party/skia/src/core/SkCanvas.cpp:1015
#8  0x0034f5f4 in gfx::Canvas::TileImageInt (this=0xbedd63a0, bitmap=&lt;value 
optimized out&gt;, src_x=0, src_y=0, dest_x=15, dest_y=0, w=180, h=26) at 
app/gfx/canvas.cc:247
#9  0x0034f634 in gfx::Canvas::TileImageInt (this=0x1b59a94, bitmap=..., 
x=&lt;value optimized out&gt;, y=&lt;value optimized out&gt;, w=180, h=26) at 
app/gfx/canvas.cc:225
#10 0x001ee4be in TabRendererGtk::PaintActiveTabBackground (this=0x1a67da0, 
canvas=0xbedd63a0) at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:905
#11 0x001ee6c2 in TabRendererGtk::PaintTabBackground (this=0x1a67da0, 
canvas=0xbedd63a0) at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:823
#12 0x001ef8c2 in TabRendererGtk::Paint (this=0x1a67da0, canvas=0xbedd63a0) 
at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:589
#13 0x001efd2a in TabRendererGtk::PaintTab (this=0x1a67da0, 
event=0x1a69388) at chrome/browser/gtk/tabs/tab_renderer_gtk.cc:758
#14 0x001efdac in TabRendererGtk::OnExposeEvent (widget=&lt;value optimized 
out&gt;, event=0x1b5bb30, tab=0xb4) at 
chrome/browser/gtk/tabs/tab_renderer_gtk.cc:998
#15 0x4023721e in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#16 0x4023721e in ?? () from /usr/lib/libgtk-x11-2.0.so.0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)


(gdb) info registers
r0             0x1b59a94	28678804
r1             0x1b5bb30	28687152
r2             0xb4	180
r3             0x1b59cd4	28679380
r4             0x24	36
r5             0x1b5bd78	28687736
r6             0x1b5bb30	28687152
r7             0x1b59a94	28678804
r8             0xb4	180
r9             0x1a	26
r10            0x1a	26
r11            0xbedd6240	3202179648
r12            0x1b5bd70	28687728
sp             0xbedd5ff0	0xbedd5ff0
lr             0x56ff77	5701495
pc             0x579224	0x579224 &lt;S32A_Opaque_BlitRow32_neon+60&gt;
fps            0x0	0
cpsr           0x20000030	536870960


(gdb) disassemble
Dump of assembler code for function S32A_Opaque_BlitRow32_neon:
0x005791e8 &lt;S32A_Opaque_BlitRow32_neon+0&gt;:	cmp	r2, #0
0x005791ea &lt;S32A_Opaque_BlitRow32_neon+2&gt;:	stmdb	sp!, {r4, r5, r6, 
r7, r8, r10}
0x005791ee &lt;S32A_Opaque_BlitRow32_neon+6&gt;:	ble.n	0x5792d2 
&lt;S32A_Opaque_BlitRow32_neon+234&gt;
0x005791f0 &lt;S32A_Opaque_BlitRow32_neon+8&gt;:	ldr	r3, [pc, #228]	; 
(0x5792d8 &lt;S32A_Opaque_BlitRow32_neon+240&gt;)
0x005791f2 &lt;S32A_Opaque_BlitRow32_neon+10&gt;:	cmp	r2, #3
0x005791f4 &lt;S32A_Opaque_BlitRow32_neon+12&gt;:	vld1.8	{d22}, [r3]
0x005791f8 &lt;S32A_Opaque_BlitRow32_neon+16&gt;:	ble.n	0x57928c 
&lt;S32A_Opaque_BlitRow32_neon+164&gt;
0x005791fa &lt;S32A_Opaque_BlitRow32_neon+18&gt;:	mov.w	r3, #255	; 
0xff
0x005791fe &lt;S32A_Opaque_BlitRow32_neon+22&gt;:	mov	r4, r2
0x00579200 &lt;S32A_Opaque_BlitRow32_neon+24&gt;:	vdup.16	q12, r3
0x00579204 &lt;S32A_Opaque_BlitRow32_neon+28&gt;:	mov	r12, r1
0x00579206 &lt;S32A_Opaque_BlitRow32_neon+30&gt;:	mov	r3, r0
0x00579208 &lt;S32A_Opaque_BlitRow32_neon+32&gt;:	vld1.32	{d17}, [r12]
0x0057920c &lt;S32A_Opaque_BlitRow32_neon+36&gt;:	add.w	r5, r12, #8
0x00579210 &lt;S32A_Opaque_BlitRow32_neon+40&gt;:	vtbl.8	d20, {d17}, d22
0x00579214 &lt;S32A_Opaque_BlitRow32_neon+44&gt;:	vld1.32	{d16}, [r5]
0x00579218 &lt;S32A_Opaque_BlitRow32_neon+48&gt;:	vsubw.u8	q10, q12, 
d20
0x0057921c &lt;S32A_Opaque_BlitRow32_neon+52&gt;:	vld1.32	{d28}, [r3]
0x00579220 &lt;S32A_Opaque_BlitRow32_neon+56&gt;:	vtbl.8	d18, {d16}, d22
0x00579224 &lt;S32A_Opaque_BlitRow32_neon+60&gt;:	vshr.u16	q3, q10, #7
0x00579228 &lt;S32A_Opaque_BlitRow32_neon+64&gt;:	add.w	r5, r3, #8
0x0057922c &lt;S32A_Opaque_BlitRow32_neon+68&gt;:	vsubw.u8	q9, q12, 
d18
0x00579230 &lt;S32A_Opaque_BlitRow32_neon+72&gt;:	vadd.i16	q10, q10, 
q3
0x00579234 &lt;S32A_Opaque_BlitRow32_neon+76&gt;:	vmovl.u8	q14, d28
0x00579238 &lt;S32A_Opaque_BlitRow32_neon+80&gt;:	vld1.32	{d26}, [r5]
0x0057923c &lt;S32A_Opaque_BlitRow32_neon+84&gt;:	vshr.u16	q15, q9, #7
0x00579240 &lt;S32A_Opaque_BlitRow32_neon+88&gt;:	vmul.i16	q10, q14, 
q10
0x00579244 &lt;S32A_Opaque_BlitRow32_neon+92&gt;:	vadd.i16	q9, q9, q15
0x00579248 &lt;S32A_Opaque_BlitRow32_neon+96&gt;:	vmovl.u8	q13, d26
0x0057924c &lt;S32A_Opaque_BlitRow32_neon+100&gt;:	vshrn.i16	d20, q10, 
#8
0x00579250 &lt;S32A_Opaque_BlitRow32_neon+104&gt;:	vmul.i16	q9, q13, q9
0x00579254 &lt;S32A_Opaque_BlitRow32_neon+108&gt;:	vadd.i8	d17, d17, d20
0x00579258 &lt;S32A_Opaque_BlitRow32_neon+112&gt;:	subs	r4, #4
0x0057925a &lt;S32A_Opaque_BlitRow32_neon+114&gt;:	vst1.32	{d17}, [r3]
0x0057925e &lt;S32A_Opaque_BlitRow32_neon+118&gt;:	vshrn.i16	d18, q9, #8
0x00579262 &lt;S32A_Opaque_BlitRow32_neon+122&gt;:	adds	r3, #16
0x00579264 &lt;S32A_Opaque_BlitRow32_neon+124&gt;:	cmp	r4, #3
0x00579266 &lt;S32A_Opaque_BlitRow32_neon+126&gt;:	vadd.i8	d16, d16, d18
0x0057926a &lt;S32A_Opaque_BlitRow32_neon+130&gt;:	vst1.32	{d16}, [r5]
0x0057926e &lt;S32A_Opaque_BlitRow32_neon+134&gt;:	add.w	r12, r12, #16
0x00579272 &lt;S32A_Opaque_BlitRow32_neon+138&gt;:	bgt.n	0x579208 
&lt;S32A_Opaque_BlitRow32_neon+32&gt;
0x00579274 &lt;S32A_Opaque_BlitRow32_neon+140&gt;:	subs	r2, #4
0x00579276 &lt;S32A_Opaque_BlitRow32_neon+142&gt;:	mov.w	r12, r2, lsr #2
0x0057927a &lt;S32A_Opaque_BlitRow32_neon+146&gt;:	add.w	r3, r12, #1
0x0057927e &lt;S32A_Opaque_BlitRow32_neon+150&gt;:	mov.w	r12, r12, lsl #2
0x00579282 &lt;S32A_Opaque_BlitRow32_neon+154&gt;:	lsls	r3, r3, #4
0x00579284 &lt;S32A_Opaque_BlitRow32_neon+156&gt;:	rsb	r2, r12, r2
0x00579288 &lt;S32A_Opaque_BlitRow32_neon+160&gt;:	adds	r0, r0, r3
0x0057928a &lt;S32A_Opaque_BlitRow32_neon+162&gt;:	adds	r1, r1, r3
0x0057928c &lt;S32A_Opaque_BlitRow32_neon+164&gt;:	cmp	r2, #0
0x0057928e &lt;S32A_Opaque_BlitRow32_neon+166&gt;:	ble.n	0x5792d2 
&lt;S32A_Opaque_BlitRow32_neon+234&gt;
0x00579290 &lt;S32A_Opaque_BlitRow32_neon+168&gt;:	ldr.w	r12, [pc, #72]	; 
0x5792dc &lt;S32A_Opaque_BlitRow32_neon+244&gt;
0x00579294 &lt;S32A_Opaque_BlitRow32_neon+172&gt;:	movs	r3, #0
0x00579296 &lt;S32A_Opaque_BlitRow32_neon+174&gt;:	mov	r4, r3
0x00579298 &lt;S32A_Opaque_BlitRow32_neon+176&gt;:	ldr.w	r12, [r12]
0x0057929c &lt;S32A_Opaque_BlitRow32_neon+180&gt;:	mvn.w	r8, r12
0x005792a0 &lt;S32A_Opaque_BlitRow32_neon+184&gt;:	ldr	r5, [r1, r3]
0x005792a2 &lt;S32A_Opaque_BlitRow32_neon+186&gt;:	adds	r4, #1
0x005792a4 &lt;S32A_Opaque_BlitRow32_neon+188&gt;:	ldr	r7, [r0, r3]
0x005792a6 &lt;S32A_Opaque_BlitRow32_neon+190&gt;:	lsrs	r6, r5, #24
0x005792a8 &lt;S32A_Opaque_BlitRow32_neon+192&gt;:	and.w	r10, r12, r7
0x005792ac &lt;S32A_Opaque_BlitRow32_neon+196&gt;:	rsb	r6, r6, #256	; 
0x100
0x005792b0 &lt;S32A_Opaque_BlitRow32_neon+200&gt;:	and.w	r7, r12, r7, lsr #8
0x005792b4 &lt;S32A_Opaque_BlitRow32_neon+204&gt;:	mul.w	r10, r10, r6
0x005792b8 &lt;S32A_Opaque_BlitRow32_neon+208&gt;:	mul.w	r6, r6, r7
0x005792bc &lt;S32A_Opaque_BlitRow32_neon+212&gt;:	and.w	r10, r12, r10, lsr 
#8
0x005792c0 &lt;S32A_Opaque_BlitRow32_neon+216&gt;:	and.w	r6, r6, r8
0x005792c4 &lt;S32A_Opaque_BlitRow32_neon+220&gt;:	orr.w	r6, r10, r6
0x005792c8 &lt;S32A_Opaque_BlitRow32_neon+224&gt;:	adds	r5, r6, r5
0x005792ca &lt;S32A_Opaque_BlitRow32_neon+226&gt;:	str	r5, [r0, r3]
0x005792cc &lt;S32A_Opaque_BlitRow32_neon+228&gt;:	adds	r3, #4
0x005792ce &lt;S32A_Opaque_BlitRow32_neon+230&gt;:	cmp	r4, r2
0x005792d0 &lt;S32A_Opaque_BlitRow32_neon+232&gt;:	bne.n	0x5792a0 
&lt;S32A_Opaque_BlitRow32_neon+184&gt;
0x005792d2 &lt;S32A_Opaque_BlitRow32_neon+234&gt;:	ldmia.w	sp!, {r4, r5, r6, 
r7, r8, r10}
0x005792d6 &lt;S32A_Opaque_BlitRow32_neon+238&gt;:	bx	lr
0x005792d8 &lt;S32A_Opaque_BlitRow32_neon+240&gt;:	lsls	r0, r6, #17
0x005792da &lt;S32A_Opaque_BlitRow32_neon+242&gt;:	lsls	r0, r6, #5
0x005792dc &lt;S32A_Opaque_BlitRow32_neon+244&gt;:	ldc2l	1, cr0, [r8], #444	
; 0x1bc
End of assembler dump.
Blocking: chromium:28287
Project Member Comment 12 by bugdroid1@chromium.org, Oct 13 2012
Blocking: -chromium:28287
Labels: Restrict-AddIssueComment-Commit
This issue has been closed for some time. No one will pay attention to new comments.
If you are seeing this bug or have new data, please click New Issue to start a new bug.
Project Member Comment 13 by bugdroid1@chromium.org, Mar 10 2013
Labels: -Area-Build Build
Sign in to add a comment