| 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
,
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.
,
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?
,
Dec 22 2009
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 ?
,
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 ...
,
Dec 22 2009
,
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/
,
Feb 26 2010
Fixed. NEON is still turned on by default but you can disable with arm_neon=0 in the GYP_DEFINES.
,
Mar 19 2011
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.
,
Jul 31 2012
,
Oct 13 2012
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.
,
Mar 10 2013
|
||||||||
| ► Sign in to add a comment | ||||||||