lightning
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lightning] Lightning Itanium port


From: Paulo César Pereira de Andrade
Subject: [Lightning] Lightning Itanium port
Date: Sat, 27 Apr 2013 18:18:15 -0300

  Hi,

  Just a minor heads up. I am almost done with an Itanium lightning
port, so that there will be only one architecture in the gcc build farm [1]
missing a port (hppa).
  An aarch64 port would be the hot thing to do, but it is still too hot :-)
so, I will wait a bit more.
  This is being done to also check for possible extra issues in
lightning, before making an official release of the rework intended
for "lightning 2.0".

  Sample output:
---%<---
address@hidden:~/lightning-2.0/check$ cat hello.tst
.data   32
hello:
.c      "Hello world!\n"

.code
        prolog
        prepare
                pushargi hello
                ellipsis
        finishi @printf
        ret
        epilog

address@hidden:~/lightning-2.0/check$ ./lightning -v hello.tst
 0x2000000000794000     [MIB]       break.m 0xf28
 0x2000000000794006                 break.i 0x200
 0x200000000079400c                 break.b 0x0
 0x2000000000794010     [MII]       alloc r41=ar.pfs,14,12,0
 0x2000000000794016                 nop.i 0x0
 0x200000000079401c                 nop.i 0x0
 0x2000000000794020     [MII]       mov r42=r12
 0x2000000000794026                 mov r40=b0
 0x200000000079402c                 nop.i 0x0
 0x2000000000794030     [MII]       mov r43=r1
 0x2000000000794036                 mov r3=96;;
 0x200000000079403c                 sub r4=r12,r3
 0x2000000000794040     [MMI]       mov r3=96;;
 0x2000000000794046                 nop.m 0x0
 0x200000000079404c                 sub r12=r12,r3
 0x2000000000794050     [MLX]       nop.m 0x0
 0x2000000000794056                 movl r44=0x6000000000039e30
 0x2000000000794060     [MLX]       nop.m 0x0
 0x2000000000794066                 movl r3=0x200000000004e7c0;;
 0x2000000000794070     [MMI]       ld8 r9=[r3],8;;
 0x2000000000794076                 nop.m 0x0
 0x200000000079407c                 mov b6=r9
 0x2000000000794080     [MBB]       ld8 r1=[r3]
 0x2000000000794086                 br.call.sptk.many b0=b6
 0x200000000079408c                 nop.b 0x0;;
 0x2000000000794090     [MII]       mov r1=r43
 0x2000000000794096                 mov.i ar.pfs=r41
 0x200000000079409c                 mov b0=r40
 0x20000000007940a0     [MMI]       mov r12=r42;;
 0x20000000007940a6                 nop.m 0x0
 0x20000000007940ac                 adds r4=96,r12
 0x20000000007940b0     [BBB]       br.ret.sptk.many b0
 0x20000000007940b6                 nop.b 0x0
 0x20000000007940bc                 nop.b 0x0
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hello world!
address@hidden:~/lightning-2.0/check$
---%<---

  It has some significant overhead, as most other ports, e.g.
it always "alloc's" income registers, even when there are
no arguments, does not properly check&optimize leaf
functions, neither reorder instructions to reduce code
size, but has a simple buffer for inserting stops to
break instruction groups when a register/predicate is
written and read (or modified more than once) in an
instruction group.  But overall the overhead is not too
high, and should at least match equivalent "gcc -O0"
code generation performance/size.

  As of the writing of this email, the only test cases
failing are the ones testing stack arguments for functions
with too many arguments (what should be a very uncommon
usage of lightning, and only "stub" logic was added to
handle it so far, most likely only need to update the stack
offset calculation):
[...]
FAIL: varargs
FAIL: stack
[...]
FAIL: ccall
[...]
# TOTAL: 42
# PASS:  39
# SKIP:  0
# XFAIL: 0
# FAIL:  3
# XPASS: 0
# ERROR: 0


  As usual, if you want to play with the current code, check:

http://savannah.gnu.org/git/?group=lightning

Thanks,
Paulo

[1] http://gcc.gnu.org/wiki/CompileFarm



reply via email to

[Prev in Thread] Current Thread [Next in Thread]