PowerPC

From Ellcc

Jump to: navigation, search

Assembly generated by sieve.c:

./powerpc-elf-ecc -v -O5 -S test/sieve.c
        .text


        .global main
        .type   main, @function
        .align  2
main:
eh_func_begin1:
        mflr 0
        stw 0, 4(1)
label1:
        stwu 1, -48(1)
label2:
        stw 26, 44(1)
        stw 27, 40(1)
        stw 28, 36(1)
        stw 29, 32(1)
        stw 30, 28(1)
        mfcr 0
        stw 0, 24(1)
        lis 3, str@ha
        la 3, str@l(3)
        li 30, 0
        bl puts
        b BB1_11        # body2.outer
BB1_1:  # next
        lis 30, .str1@ha
        lis 29, .str2@ha
        lis 28, .str3@ha
        creqv 8, 8, 8
        la 3, .str1@l(30)
        cror 6, 8, 8
        bl printf
        lis 30, .str4@ha
        la 3, .str2@l(29)
        la 4, .str3@l(28)
        cror 6, 8, 8
        bl printf
        lis 29, .str5@ha
        lis 28, .str6@ha
        la 3, .str4@l(30)
        li 4, 44
        cror 6, 8, 8
        bl printf
        lis 30, .str7@ha
        lis 27, .str8@ha
        la 3, .str5@l(29)
        la 4, .str6@l(28)
        cror 6, 8, 8
        bl printf
        lis 29, .str9@ha
        la 3, .str7@l(30)
        la 4, .str8@l(27)
        cror 6, 8, 8
        bl printf
        lis 30, .str10@ha
        la 3, .str9@l(29)
        li 29, 0
        mr 4, 29
        cror 6, 8, 8
        bl printf
        lis 28, .str11@ha
        la 3, .str10@l(30)
        li 4, 1
        cror 6, 8, 8
        bl printf
        lis 30, .str12@ha
        lis 27, .str13@ha
        la 3, .str11@l(28)
        mr 4, 29
        cror 6, 8, 8
        bl printf
        lis 28, .str14@ha
        lis 26, .str15@ha
        la 3, .str12@l(30)
        la 4, .str13@l(27)
        cror 6, 8, 8
        bl printf
        la 3, .str14@l(28)
        la 4, .str15@l(26)
        cror 6, 8, 8
        bl printf
        mr 3, 29
        lwz 0, 24(1)
        mtcrf 128, 0
        lwz 30, 28(1)
        lwz 29, 32(1)
        lwz 28, 36(1)
        lwz 27, 40(1)
        lwz 26, 44(1)
        addi 1, 1, 48
        lwz 0, 4(1)
        mtlr 0
        blr
BB1_2:  # body2
        li 5, 1
        addi 6, 4, 1
        stbx 5, 3, 4
        cmplwi 0, 6, 8191
        mr 4, 6
        bne 0, BB1_2    # body2
BB1_3:  # body6.preheader
        lis 3, flags@ha
        la 3, flags@l(3)
        li 5, 0
        li 6, 3
        mr 7, 6
        mr 4, 5
BB1_4:  # body6
        lbzx 8, 3, 5
        cmplwi 0, 8, 0
        beq 0, BB1_9    # next9
BB1_5:  # ifTrue
        cmpwi 0, 6, 8190
        bgt 0, BB1_8    # next12
BB1_6:  # bb.nph
        lis 8, flags@ha
        la 8, flags@l(8)
        mr 9, 6
BB1_7:  # body11
        li 10, 0
        add 11, 7, 9
        stbx 10, 8, 9
        cmpwi 0, 11, 8191
        mr 9, 11
        blt 0, BB1_7    # body11
BB1_8:  # next12
        addi 4, 4, 1
BB1_9:  # next9
        addi 5, 5, 1
        addi 6, 6, 3
        addi 7, 7, 2
        cmplwi 0, 5, 8191
        bne 0, BB1_4    # body6
BB1_10: # next8
        addi 30, 30, 1
        cmplwi 0, 30, 10000
        beq 0, BB1_1    # next
BB1_11: # body2.outer
        lis 3, flags@ha
        la 3, flags@l(3)
        li 4, 0
        b BB1_2 # body2
        .size   main,.-main
eh_func_end1:
        .global flags
        .type flags, @object
        .section        ".sbss","aw",@nobits
flags:
        .zero 8191
                # 'flags'
        .section        .rodata
.str1:                          # '.str1'
        .asciz  "%d primes\n"

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

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

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

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

.str6:                          # '.str6'
        .asciz  "Jul 13 2008"

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

.str8:                          # '.str8'
        .asciz  "05:31:25"

.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"

.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 13 2008"

        .align  4
str:                            # 'str'
        .asciz  "10000 iterations"

        .section        .eh_frame,"aw",@progbits
EH_frame0:
section_eh_frame:
eh_frame_common:
        .long   eh_frame_common_end-eh_frame_common_begin
eh_frame_common_begin:
        .long   0x0
        .byte   0x1
        .asciz  "zR"
        .uleb128        1
        .sleb128        -4
        .byte   0x41
        .uleb128        1
        .byte   0x1b
        .byte   0xc
        .uleb128        1
        .uleb128        0
        .align  2
eh_frame_common_end:

main.eh:
        .long   eh_frame_end1-eh_frame_begin1
eh_frame_begin1:
        .long   eh_frame_begin1-eh_frame_common
        .long   eh_func_begin1-.
        .long   eh_func_end1-eh_func_begin1
        .uleb128        0
        .byte   0x4
        .long   label1-eh_func_begin1
        .byte   0xe
        .uleb128        48
        .byte   0x9a
        .uleb128        1
        .byte   0x9b
        .uleb128        2
        .byte   0x9c
        .uleb128        3
        .byte   0x9d
        .uleb128        4
        .byte   0x9e
        .uleb128        5
        .byte   0x80
        .uleb128        6
        .byte   0x11
        .uleb128        65
        .sleb128        -1
        .byte   0x4
        .long   label2-label1
        .byte   0xd
        .uleb128        1
        .align  2
eh_frame_end1:
Personal tools