CellSPU
From Ellcc
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"
