CellSPU

From Ellcc

Jump to: navigation, search

Assembly generated by sieve.c:

./spu-elf-ecc -v -O1 -S test/sieve.c

Note that optimization levels greater than -O1 fail.

        .text


        .align  3
        .global main
        .type   main, @function
main:
        stqd    $lr, 16($sp)
        stqd    $sp, -288($sp)
        ai      $sp, $sp, -288
        stqd    $120, 272($sp)
        stqd    $121, 256($sp)
        stqd    $122, 240($sp)
        stqd    $123, 224($sp)
        stqd    $124, 208($sp)
        stqd    $125, 192($sp)
        stqd    $126, 176($sp)
        stqd    $127, 160($sp)
        lqd     $5, 0($sp)
        cwd     $6, 0($sp)
        cwd     $7, 16($sp)
        cwd     $8, 32($sp)
        shufb   $3, $3, $5, $6
        il      $5, 0
        stqd    $3, 0($sp)
        lqd     $6, 16($sp)
        ila     $3, .str
        cwd     $127, 112($sp)
        il      $126, 1
        shufb   $4, $4, $6, $7
        stqd    $4, 16($sp)
        lqd     $4, 32($sp)
        shufb   $4, $5, $4, $8
        stqd    $4, 32($sp)
        brasl   $lr, printf
        lqd     $3, 112($sp)
        shufb   $3, $126, $3, $127
        stqd    $3, 112($sp)
.LBB1_1:        # test
        lqd     $3, 112($sp)
        ai      $4, $sp, 112
        il      $5, 10000
        rotqby  $3, $3, $4
        cgt     $3, $3, $5
        brnz    $3,.LBB1_4      # next-.
.LBB1_2:        # body
        lqd     $3, 96($sp)
        cwd     $4, 96($sp)
        il      $5, 0
        cwd     $6, 48($sp)
        shufb   $3, $5, $3, $4
        stqd    $3, 96($sp)
        lqd     $3, 48($sp)
        shufb   $3, $5, $3, $6
        stqd    $3, 48($sp)
        br      .LBB1_5 # test1-.
.LBB1_3:        # continue
        lqd     $3, 112($sp)
        ai      $4, $sp, 112
        cwd     $5, 112($sp)
        rotqby  $3, $3, $4
        lqd     $4, 112($sp)
        ai      $3, $3, 1
        shufb   $3, $3, $4, $5
        stqd    $3, 112($sp)
        br      .LBB1_1 # test-.
.LBB1_4:        # next
        lqd     $4, 96($sp)
        ai      $5, $sp, 96
        ila     $3, .str1
        ila     $127, .str2
        ila     $126, .str3
        il      $125, 44
        rotqby  $4, $4, $5
        ila     $124, .str4
        ila     $123, .str5
        ila     $122, .str6
        ila     $121, .str7
        ila     $120, .str8
        brasl   $lr, printf
        ori     $3, $127, 0
        ori     $4, $126, 0
        brasl   $lr, printf
        ori     $3, $124, 0
        ori     $4, $125, 0
        brasl   $lr, printf
        ori     $3, $123, 0
        ori     $4, $122, 0
        brasl   $lr, printf
        ori     $3, $121, 0
        ori     $4, $120, 0
        brasl   $lr, printf
        il      $127, 0
        ila     $3, .str9
        ori     $4, $127, 0
        brasl   $lr, printf
        il      $4, 1
        ila     $3, .str10
        brasl   $lr, printf
        ila     $3, .str11
        ori     $4, $127, 0
        brasl   $lr, printf
        ila     $3, .str12
        ila     $4, .str13
        brasl   $lr, printf
        ila     $3, .str14
        ila     $4, .str15
        brasl   $lr, printf
        br      .LBB1_19        # return-.
.LBB1_5:        # test1
        lqd     $3, 48($sp)
        ai      $4, $sp, 48
        il      $5, 8190
        rotqby  $3, $3, $4
        cgt     $3, $3, $5
        brnz    $3,.LBB1_8      # next4-.
.LBB1_6:        # body2
        lqd     $3, 48($sp)
        ai      $4, $sp, 48
        ila     $5, flags
        ilh     $6, 257
        rotqby  $3, $3, $4
        lqx     $4, $5, $3
        cbx     $7, $5, $3
        shufb   $4, $6, $4, $7
        stqx    $4, $5, $3
.LBB1_7:        # continue3
        lqd     $3, 48($sp)
        ai      $4, $sp, 48
        cwd     $5, 48($sp)
        rotqby  $3, $3, $4
        lqd     $4, 48($sp)
        ai      $3, $3, 1
        shufb   $3, $3, $4, $5
        stqd    $3, 48($sp)
        br      .LBB1_5 # test1-.
.LBB1_8:        # next4
        lqd     $3, 48($sp)
        cwd     $4, 48($sp)
        il      $5, 0
        shufb   $3, $5, $3, $4
        stqd    $3, 48($sp)
.LBB1_9:        # test5
        lqd     $3, 48($sp)
        ai      $4, $sp, 48
        il      $5, 8190
        rotqby  $3, $3, $4
        cgt     $3, $3, $5
        brnz    $3,.LBB1_12     # next8-.
.LBB1_10:       # body6
        lqd     $3, 48($sp)
        ai      $4, $sp, 48
        ila     $5, flags
        rotqby  $3, $3, $4
        lqx     $4, $5, $3
        a       $3, $5, $3
        ai      $3, $3, 13
        rotqby  $3, $4, $3
        ceqbi   $3, $3, 0
        xorbi   $3, $3, 255
        andhi   $3, $3, 255
        brhnz   $3,.LBB1_13     # ifTrue-.
        br      .LBB1_14        # ifFalse-.
.LBB1_11:       # continue7
        lqd     $3, 48($sp)
        ai      $4, $sp, 48
        cwd     $5, 48($sp)
        rotqby  $3, $3, $4
        lqd     $4, 48($sp)
        ai      $3, $3, 1
        shufb   $3, $3, $4, $5
        stqd    $3, 48($sp)
        br      .LBB1_9 # test5-.
.LBB1_12:       # next8
        br      .LBB1_3 # continue-.
.LBB1_13:       # ifTrue
        lqd     $3, 48($sp)
        ai      $4, $sp, 48
        cwd     $5, 64($sp)
        cwd     $6, 80($sp)
        rotqby  $3, $3, $4
        lqd     $7, 64($sp)
        a       $3, $3, $3
        ai      $3, $3, 3
        shufb   $5, $3, $7, $5
        stqd    $5, 64($sp)
        lqd     $5, 48($sp)
        rotqby  $4, $5, $4
        lqd     $5, 80($sp)
        a       $3, $4, $3
        shufb   $3, $3, $5, $6
        stqd    $3, 80($sp)
        br      .LBB1_16        # continue10-.
.LBB1_14:       # ifFalse
.LBB1_15:       # next9
        br      .LBB1_11        # continue7-.
.LBB1_16:       # continue10
        lqd     $3, 80($sp)
        ai      $4, $sp, 80
        il      $5, 8190
        rotqby  $3, $3, $4
        cgt     $3, $3, $5
        brnz    $3,.LBB1_18     # next12-.
.LBB1_17:       # body11
        lqd     $3, 80($sp)
        ai      $4, $sp, 80
        ila     $5, flags
        ilh     $6, 0
        ai      $7, $sp, 64
        cwd     $8, 80($sp)
        rotqby  $3, $3, $4
        lqx     $9, $5, $3
        cbx     $10, $5, $3
        shufb   $6, $6, $9, $10
        stqx    $6, $5, $3
        lqd     $3, 80($sp)
        lqd     $5, 64($sp)
        rotqby  $3, $3, $4
        rotqby  $4, $5, $7
        lqd     $5, 80($sp)
        a       $3, $3, $4
        shufb   $3, $3, $5, $8
        stqd    $3, 80($sp)
        br      .LBB1_16        # continue10-.
.LBB1_18:       # next12
        lqd     $3, 96($sp)
        ai      $4, $sp, 96
        cwd     $5, 96($sp)
        rotqby  $3, $3, $4
        lqd     $4, 96($sp)
        ai      $3, $3, 1
        shufb   $3, $3, $4, $5
        stqd    $3, 96($sp)
        br      .LBB1_15        # next9-.
.LBB1_19:       # return
        lqd     $3, 32($sp)
        ai      $4, $sp, 32
        rotqby  $3, $3, $4
        lqd     $127, 160($sp)
        lqd     $126, 176($sp)
        lqd     $125, 192($sp)
        lqd     $124, 208($sp)
        lqd     $123, 224($sp)
        lqd     $122, 240($sp)
        lqd     $121, 256($sp)
        lqd     $120, 272($sp)
        lqd     $lr, 304($sp)
        ai      $sp, $sp, 288
        bi      $lr
        .size   main,.-main
        .section        .bss
        .global flags
        .align  4
        .type   flags, @object
        .size   flags, 8191
flags:
        .zero   8191            # 'flags'
        .cstring
        .align  4
.str:                           # '.str'
        .asciz  "10000 iterations\n"

        .align  4
.str1:                          # '.str1'
        .asciz  "%d primes\n"

        .align  4
.str2:                          # '.str2'
        .asciz  "__FILE__ = %s\n"

        .align  4
.str3:                          # '.str3'
        .asciz  "test/sieve.c"

        .align  4
.str4:                          # '.str4'
        .asciz  "__LINE__ = %d\n"

        .align  4
.str5:                          # '.str5'
        .asciz  "__DATE__ = %s\n"

        .align  4
.str6:                          # '.str6'
        .asciz  "Jul 12 2008"

        .align  4
.str7:                          # '.str7'
        .asciz  "__TIME__ = %s\n"

        .align  4
.str8:                          # '.str8'
        .asciz  "05:56:10"

        .align  4
.str9:                          # '.str9'
        .asciz  "__ELLCC__ = %d\n"

        .align  4
.str10:                         # '.str10'
        .asciz  "__ELLCC_MINOR__ = %d\n"

        .align  4
.str11:                         # '.str11'
        .asciz  "__ELLCC_PATCHLEVEL__ = %d\n"

        .align  4
.str12:                         # '.str12'
        .asciz  "__ELLCC_VERSION_STRING__ = %s\n"

        .align  4
.str13:                         # '.str13'
        .asciz  "0.1.0"

        .align  4
.str14:                         # '.str14'
        .asciz  "__ELLCC_VERSIONG__ = %s\n"

        .align  4
.str15:                         # '.str15'
        .asciz  "0.1.0 ALPHA Jul 11 2008"


        .ident  "(llvm 2.2+) STI CBEA Cell SPU backend"
Personal tools