https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100855

--- Comment #4 from Nadav Halahmi <nadavhalahmi560 at gmail dot com> ---
(In reply to Richard Biener from comment #3)
> Might be interesting to see whether ifort does any expression simplification
> here.  Can you share the produced assembly?

gfortran pow.f90 -O3 -fno-tree-vectorize -S -o gnu.s:

        .file   "pow.f90"
        .text
        .section        .rodata.str1.1,"aMS",@progbits,1
.LC5:
        .string "pow.f90"
.LC6:
        .string "(\"Time = \",f6.3,\" seconds.\")"
        .text
        .p2align 4
        .type   MAIN__, @function
MAIN__:
.LFB0:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        xorl    %eax, %eax
        movl    $10000, %ebp
        pushq   %rbx
        .cfi_def_cfa_offset 24
        .cfi_offset 3, -24
        subq    $568, %rsp
        .cfi_def_cfa_offset 592
        leaq    20(%rsp), %rdi
        call    _gfortran_cpu_time_4
        pxor    %xmm4, %xmm4
        movss   .LC1(%rip), %xmm2
        movss   %xmm4, 8(%rsp)
.L4:
        movss   .LC2(%rip), %xmm0
        movl    $1, %ebx
        jmp     .L3
        .p2align 4,,10
        .p2align 3
.L8:
        movss   .LC3(%rip), %xmm1
        pxor    %xmm0, %xmm0
        movss   %xmm2, 12(%rsp)
        cvtsi2ssl       %ebx, %xmm0
        mulss   %xmm2, %xmm1
        addss   .LC4(%rip), %xmm1
        call    powf
        movss   12(%rsp), %xmm2
.L3:
        addss   8(%rsp), %xmm0
        addl    $1, %ebx
        mulss   .LC3(%rip), %xmm2
        movss   %xmm0, 8(%rsp)
        cmpl    $10001, %ebx
        jne     .L8
        subl    $1, %ebp
        jne     .L4
        leaq    16(%rsp), %rdi
        xorl    %eax, %eax
        movss   %xmm0, 24(%rsp)
        call    _gfortran_cpu_time_4
        leaq    32(%rsp), %rdi
        movabsq $25769803904, %rax
        movq    $.LC5, 40(%rsp)
        movq    %rax, 32(%rsp)
        movl    $21, 48(%rsp)
        call    _gfortran_st_write
        leaq    24(%rsp), %rsi
        movl    $4, %edx
        leaq    32(%rsp), %rdi
        call    _gfortran_transfer_real_write
        leaq    32(%rsp), %rdi
        call    _gfortran_st_write_done
        leaq    32(%rsp), %rdi
        movabsq $25769807872, %rax
        movq    $.LC5, 40(%rsp)
        movq    %rax, 32(%rsp)
        movl    $22, 48(%rsp)
        movq    $.LC6, 112(%rsp)
        movq    $28, 120(%rsp)
        call    _gfortran_st_write
        movss   16(%rsp), %xmm0
        subss   20(%rsp), %xmm0
        leaq    28(%rsp), %rsi
        leaq    32(%rsp), %rdi
        movl    $4, %edx
        movss   %xmm0, 28(%rsp)
        call    _gfortran_transfer_real_write
        leaq    32(%rsp), %rdi
        call    _gfortran_st_write_done
        addq    $568, %rsp
        .cfi_def_cfa_offset 24
        popq    %rbx
        .cfi_def_cfa_offset 16
        popq    %rbp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE0:
        .size   MAIN__, .-MAIN__
        .section        .text.startup,"ax",@progbits
        .p2align 4
        .globl  main
        .type   main, @function
main:
.LFB1:
        .cfi_startproc
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        call    _gfortran_set_args
        movl    $options.2.0, %esi
        movl    $7, %edi
        call    _gfortran_set_options
        call    MAIN__
        xorl    %eax, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE1:
        .size   main, .-main
        .section        .rodata
        .align 16
        .type   options.2.0, @object
        .size   options.2.0, 28
options.2.0:
        .long   2116
        .long   4095
        .long   0
        .long   1
        .long   1
        .long   0
        .long   31
        .section        .rodata.cst4,"aM",@progbits,4
        .align 4
.LC1:
        .long   1073741824
        .align 4
.LC2:
        .long   1065353216
        .align 4
.LC3:
        .long   1056964608
        .align 4
.LC4:
        .long   1028443341
        .ident  "GCC: (GNU) 11.1.0"
        .section        .note.GNU-stack,"",@progbits

Reply via email to