Исправление I-Love-Microsoft, (текущая версия) :
-bash-4.2$ cat test002.s
.file "test002.c"
.section ".text"
.global $array_max_f
$array_max_f:
.ignore ld_st_style
.ignore strict_delay
{
disp %ctpr1, $#__local_label_in_array_max_f__88
setwd wsz = 0x7, nfx = 0x1
setbn rsz = 0x1, rbs = 0x5, rcur = 0x0
setbp psz = 0x0
subs,1 %r1, 0x1, %g16
addd,2,sm 0x0, %dr0, %dr4
adds,3 0x0, _f32s,_lts2 0x800000, %r8
}
{
return %ctpr3
cmplesb,0 %r1, 0x0, %pred0
cmplesb,1,sm %g16, _f16s,_lts0lo 0xffff, %pred1
sxt,2,sm 0x2, %r1, %dg16
addd,3,sm 0x0, _f64,_lts1 0xff2000000000, %dr7
}
shld,1,sm %dg16, 0x2, %dr6
{
merges,0,sm 0x1, %r1, %g16, ~ %pred1
scrs,1 0x1, 0x9, %r0 ? %pred0
}
sxt,0,sm 0x6, %g16, %dr5
{
ct %ctpr1 ? ~ %pred0
ipd 3
}
nop
{
ct %ctpr3 ? %pred0
ipd 3
}
$#__local_label_in_array_max_f__88:
{
disp %ctpr1, $#__local_label_in_array_max_f__d0
setwd wsz = 0x7, nfx = 0x1
setbn rsz = 0x1, rbs = 0x5, rcur = 0x0
setbp psz = 0x0
insfd,0 %dr7, _f32s,_lts1 0x800, %dr5, %dg16
subd,1,sm %dr6, 0x4, %dg17
adds,2,sm 0x0, %r8, %r0
}
{
nop 2
return %ctpr3
rwd,0 %dg16, %lsr
subd,1,sm %dg17, 0x4, %db[2]
ldw,2,sm %dr4, %dg17, %b[3]
}
nop
$#__local_label_in_array_max_f__d0:
{
loop_mode
fcmpltsb,1,sm %r0, %b[3], %pred0
}
loop_mode
{
loop_mode
nop 1
ldw,2,sm %dr4, %db[2], %b[1]
subd,5,sm %db[2], 0x4, %db[0]
}
{
loop_mode
ct %ctpr1 ? #NOT_LOOP_END
ipd 3
abn abnf=1, abnt=1
abp abpf=1, abpt=1
alc alcf=1, alct=1
merges,2,sm %r0, %b[3], %r0, %pred0
}
{
setwd wsz = 0x7, nfx = 0x1
setbn rsz = 0x1, rbs = 0x5, rcur = 0x0
setbp psz = 0x0
adds,0,sm 0x0, %r0, %g16
}
{
ct %ctpr3
ipd 3
adds,0 0x0, %g16, %r0
}
.size $array_max_f, . - $array_max_f
.type $array_max_f, @function
.weak $elbrus_optimizing_compiler_v1.19.10_Oct_15_2014
.set $elbrus_optimizing_compiler_v1.19.10_Oct_15_2014, 0
-bash-4.2$
Выхлоп оказался во много раз длинее чем на интеле:
cat test002.s
.file "test002.c"
.text
.p2align 4,,15
.globl array_max_f
.type array_max_f, @function
array_max_f:
.LFB0:
.cfi_startproc
movslq %esi, %rax
movss .LC0(%rip), %xmm0
leaq -4(%rdi,%rax,4), %rax
jmp .L2
.p2align 4,,10
.p2align 3
.L4:
movss (%rax), %xmm1
subl $1, %esi
maxss %xmm0, %xmm1
subq $4, %rax
movaps %xmm1, %xmm0
.L2:
testl %esi, %esi
jg .L4
rep ret
.cfi_endproc
.LFE0:
.size array_max_f, .-array_max_f
.section .rodata.cst4,"aM",@progbits,4
.align 4
.LC0:
.long 8388608
.ident "GCC: (Ubuntu 4.8.2-19ubuntu1) 4.8.2"
.section .note.GNU-stack,"",@progbits
Исходная версия I-Love-Microsoft, :
-bash-4.2$ cat test002.s
.file "test002.c"
.section ".text"
.global $array_max_f
$array_max_f:
.ignore ld_st_style
.ignore strict_delay
{
disp %ctpr1, $#__local_label_in_array_max_f__88
setwd wsz = 0x7, nfx = 0x1
setbn rsz = 0x1, rbs = 0x5, rcur = 0x0
setbp psz = 0x0
subs,1 %r1, 0x1, %g16
addd,2,sm 0x0, %dr0, %dr4
adds,3 0x0, _f32s,_lts2 0x800000, %r8
}
{
return %ctpr3
cmplesb,0 %r1, 0x0, %pred0
cmplesb,1,sm %g16, _f16s,_lts0lo 0xffff, %pred1
sxt,2,sm 0x2, %r1, %dg16
addd,3,sm 0x0, _f64,_lts1 0xff2000000000, %dr7
}
shld,1,sm %dg16, 0x2, %dr6
{
merges,0,sm 0x1, %r1, %g16, ~ %pred1
scrs,1 0x1, 0x9, %r0 ? %pred0
}
sxt,0,sm 0x6, %g16, %dr5
{
ct %ctpr1 ? ~ %pred0
ipd 3
}
nop
{
ct %ctpr3 ? %pred0
ipd 3
}
$#__local_label_in_array_max_f__88:
{
disp %ctpr1, $#__local_label_in_array_max_f__d0
setwd wsz = 0x7, nfx = 0x1
setbn rsz = 0x1, rbs = 0x5, rcur = 0x0
setbp psz = 0x0
insfd,0 %dr7, _f32s,_lts1 0x800, %dr5, %dg16
subd,1,sm %dr6, 0x4, %dg17
adds,2,sm 0x0, %r8, %r0
}
{
nop 2
return %ctpr3
rwd,0 %dg16, %lsr
subd,1,sm %dg17, 0x4, %db[2]
ldw,2,sm %dr4, %dg17, %b[3]
}
nop
$#__local_label_in_array_max_f__d0:
{
loop_mode
fcmpltsb,1,sm %r0, %b[3], %pred0
}
loop_mode
{
loop_mode
nop 1
ldw,2,sm %dr4, %db[2], %b[1]
subd,5,sm %db[2], 0x4, %db[0]
}
{
loop_mode
ct %ctpr1 ? #NOT_LOOP_END
ipd 3
abn abnf=1, abnt=1
abp abpf=1, abpt=1
alc alcf=1, alct=1
merges,2,sm %r0, %b[3], %r0, %pred0
}
{
setwd wsz = 0x7, nfx = 0x1
setbn rsz = 0x1, rbs = 0x5, rcur = 0x0
setbp psz = 0x0
adds,0,sm 0x0, %r0, %g16
}
{
ct %ctpr3
ipd 3
adds,0 0x0, %g16, %r0
}
.size $array_max_f, . - $array_max_f
.type $array_max_f, @function
.weak $elbrus_optimizing_compiler_v1.19.10_Oct_15_2014
.set $elbrus_optimizing_compiler_v1.19.10_Oct_15_2014, 0
-bash-4.2$