Merged fixes for several bug into Linaro GCC 4.5. Both from Linaro
(Richard, Matthias and Ramana), and from CS (the shrink wrap problems).
Continued working on benchmarking the patches I've merged to 4.6. Spent
quite some time trying to figure out why EEMBC and the Spec2K weren't
working properly. I've got this sorted now.
Confirmed that the patch to discourage NEON use for integer operations
is still profitable on Cortex-A8. Posted the patch upstream.
Merged upstream GCC 4.6 into Linaro GCC 4.6.
Booked travel to Budapest for Linaro @ UDS.
Followed up on Ramana's questions about the RVCT interoperability patch.
Paul Brook helped explain what it was about, and pointed me at the
proper section in the proper ARM manual.
Continued forward porting patches to 4.6. Mostly I need to convince
myself that they still do something useful. I have posted one new patch
to upstream - the "Discourage A8 NEON" patch.
* Future Absence
Away Wednesday 16th to Friday 18th.
Away Monday 28th to Friday 1st April.
----
Upstream patched requiring review:
* Thumb2 constants:
http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00652.html
* ARM EABI half-precision functions
http://gcc.gnu.org/ml/gcc-patches/2011-02/msg00874.html
* ARM Thumb2 Spill Likely tweak
http://gcc.gnu.org/ml/gcc-patches/2011-02/msg00880.html
* NEON scheduling patch
http://gcc.gnu.org/ml/gcc-patches/2011-02/msg01431.html
* RVCT Interoperability patch
http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg00059.html
* Discourage NEON on A8
http://www.mail-archive.com/gcc-patches@gcc.gnu.org/msg00576.html
== Last week ==
* Working on Coremark ARMv6 regressions. Identified a major cause being
RTL ifcvt failing on one of the crc routines, due to combine pass
failing to optimize a particular sequence, causing the if-conversion
estimates to give up on conditional executing (too many insns). The
combine pass failed on ARMv6 and above, due to the existence of true
zero_extend insns. On ARMv5, the use of two shifts actually allowed
combine to phase reduce the shifts one by one, thus producing better
code. On ARMv6, combine produced a (xor (and ...) <mask>) which did not
match any insn. Analyzed and sent a patch upstream which should work on
such XOR cases. Patch is due for upstream commit for 4.7-stage1.
(http://gcc.gnu.org/ml/gcc-patches/2011-03/msg00609.html)
* Another situation of un-optimized uxth insns still exists; trying
to solve this by another combine patch I am currently testing, will send
upstream later.
== This week ==
* verify the improvements the above patches should have on Coremark for
ARMv6/v7.
* Work on sending them to Linaro and SG++ branches.
* Other bug issues.
== GDB ==
* Ongoing work on glibc patch to add ARM unwind tables to system
call stubs; ran into design problems that look difficult to fix.
* As an alternative, started work on a GDB patch to recognize glibc
system call assembler stubs via code-scanning; this should allow
alloc unwinding in the absence of debug info for current libc code.
* Analyzed bug #728216 (GDB fails to get a valid backtrace while
debugging a Webkit SIGSEGV) and resolved as invalid; the fault
occurs within JIT-generated code where unwinding is impossible.
== Misc ==
* Made travel arrangements for Linaro Summit in Budapest
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
RAG:
Red:
Amber:
Green: another qemu-linaro release out the door on time
Current Milestones:
| Planned | Estimate | Actual |
qemu-linaro 2011-03 | 2011-03-08 | 2011-03-08 | 2011-03-08 |
Historical Milestones:
finish virtio-system | 2010-08-27 | postponed | |
finish testing PCI patches | 2010-10-01 | 2010-10-22 | 2010-10-18 |
successful ARM qemu pull req | 2010-12-16 | 2010-12-16 | 2010-12-16 |
finish qemu-cont-integration | 2011-01-25 | 2011-01-25 | handed off |
first qemu-linaro release | 2011-02-08 | 2011-02-08 | 2011-02-08 |
== maintain-beagle-models ==
* released qemu-linaro 2011-03
* had to do a 2011-03-1 reroll of the tarball on day of release to
fix a "versatilepb model crashes on startup" bug found at last minute
* Paul Larson is working on having automated test image boots on
qemu built from git, so we can catch this much earlier in the cycle
== merge-correctness-fixes ==
* added support to risu for testing of load and store instructions
* used this to test a patch which cleans up Thumb load/store decode
and makes us UNDEF in the right places
* wrote/submitted patch to fix GE bits for signed modulo arithmetic
* wrote/submitted patch to get SMUAD/SMLAD Q bit right in an edge case
* started on a patchset which will fix various minor qemu Neon bugs
detected by test programs from the valgrind source tree
== other ==
* meetings: toolchain, standup, pdsw-tools
Current qemu patch status is tracked here:
https://wiki.linaro.org/PeterMaydell/QemuPatchStatus
Absences:
17/18 March: QEMU Users Forum, Grenoble
Holiday: 22 Apr - 2 May
9-13 May: UDS, Budapest
(maybe) ~17-19 August: QEMU/KVM strand at LinuxCon NA, Vancouver
Hi,
== libunwind ==
* the patches posted last week are now upstream
* continued to study the Exception Handling ABI for the ARM Architecture
* looked into the structure of libunwind (lib interdependencies)
* documented at: https://wiki.linaro.org/KenWerner/Sandbox/libunwind
* The work on the local unwinding appears to be quite complete. If the
generic unwind model is used the code assumes the GCC personality routine. We
should either check name of the symbol (maybe be difficult) or just call the
pers function. I'm in contact with Zach on this.
Regards
Ken
LP: #731665 is a silent bad code generation bug at least on functions
which are empty except for inline assembly:
https://bugs.launchpad.net/ubuntu/+source/gcc-4.5/+bug/731665
It was introduced in the shrink-wrap patch and is due to using an
uninitialised variable. Andrew, can you please address this urgently
either in Linaro or CSL.
-- Michael
== hard-float ==
* Updated libffi variadic patch and Sent updated libffi variadic
patch to the ffi mailing list.
== String routines ==
* Got a big endian build environment going
* Patched up memchr and strlen for big endian; turned out to be a
very small change in the end; and
tested it on qemu-armeb - note that an older version it didn't work
on, but a newer one it did; I'll assume
the newer one is correct.
* Fixed a couple of build issues in the cortex strings test harness
== Other ==
* Kicked off a SPEC2006 train run on canis using the 2011.03 compilers
I'm on holiday tomorrow (Friday) and Monday.
Dave
Hello,
* Sent the patch to support targets
that their doloop part is not decoupled from the rest of the loop's
instructions (as is the case for ARM) to @gcc-patches:
http://gcc.gnu.org/ml/gcc-patches/2011-03/msg00350.html
* Continue looking into DENbench benchmarks.
Thanks,
Revital
Hi,
* continued working on cost model tuning. I don't see much difference
running EEMBC DenBench with and without vectorization enabled (and,
therefore, also with and without cost model).
Also, I have to say, that the results are not stable and I sometimes
get 10% difference just running the same executable two times in a
row.
* the only benchmark I see consistent degradation 5% with
vectorization is DenBench aes, both with GCC trunk and gcc-linaro 4.5.
I found one of the responsible loops, if it is not vectorized I see
only 1.8% degradation. The problem there is that the loop bound is
unknown at compile time, so the vectorizer attempts to vectorize the
loop using runtime guards to verify that there are enough iterations
to vectorize. The actual number of iterations is 4, so the scalar
version of the loop is chosen at the run time, but I guess the guards
cause the degradation. I'll continue looking into this next week.
* prepared the conditional-store-sink patch (one of the patches that
helps to vectorize Telecom Viterbi) for submission to gcc-patches.
Ira
The Linaro Toolchain Working Group is pleased to announce the release
of Linaro QEMU 2011.03-1.
Linaro QEMU 2011.03-1 is the second release of qemu-linaro. Based
off upstream (trunk) qemu, it includes a number of ARM-focused
bug fixes and enhancements.
This release includes a model of the ARM Versatile Express
platform. This is still experimental but may be of use to people
who want a model supporting up to 1GB of RAM with graphics and
networking. Instructions for getting started with it are on the
wiki: https://wiki.linaro.org/PeterMaydell/QemuVersatileExpress
Other interesting changes include:
- The OMAP emulation bug which was causing hangs if Linux tried
to enable a swapfile is fixed
- The OMAP UART model has been improved; this fixes the problem where
kernels using the new omap-hsuart serial drivers stopped serial output
halfway through boot.
- As usual, various minor correctness fixes and other upstream changes
Known issues:
- The beagle and beaglexm models do not support USB, so there is no
keyboard, mouse or networking (#708703)
The only change over the shortlived 2011.03-0 is that the last
minute bug #731093 has been fixed (versatilepb models would crash
on startup.)
The source tarball is available at:
https://launchpad.net/qemu-linaro/+milestone/2011.03-1
Binary builds of this qemu-linaro release are being prepared and
will be available shortly for users of Ubuntu.
When ready, Natty packages of qemu-linaro 2011.03-1 will be in the
Ubuntu archive. Packages for users of Ubuntu 10.04 LTS and Ubuntu
10.10 will be in the linaro-maintainers tools ppa:
https://launchpad.net/~linaro-maintainers/+archive/tools/
More information on Linaro QEMU is available at:
https://launchpad.net/qemu-linaro