Были ли встроенные вызовы компилятора std :: frexp? - PullRequest
0 голосов
/ 10 сентября 2018

Проводник компилятора говорит, что программа вызывает frexp в цикле.

Означает ли это, что компилятор не встроил код для frexp?

Код был скомпилирован с g++ -Ofast -march=native

Код в проводнике компилятора

Тест (c ++):

#include <Eigen/Eigen>
using namespace Eigen;
void log2_extract_mantissa(ArrayXXf& x) {
    // rip mantissa out of floats and store the result as int in-place.
    std::int32_t* int_data = reinterpret_cast<std::int32_t*>(x.data());
    for(Index i = 0; i < x.size(); ++i) {
        std::frexp(x.data()[i], int_data + i);
    }
}

Монтаж:

...
.L3:
        vmovss  xmm0, DWORD PTR [rax+rbx*4]
        lea     rdi, [r12+rbx*4]
        call    frexpf
        mov     rax, QWORD PTR [rbp+16]
        inc     rbx
        imul    rax, QWORD PTR [rbp+8]
        cmp     rbx, rax
        jl      .L7
...

1 Ответ

0 голосов
/ 10 сентября 2018

Нет, это не так.

call frexpf - это вызов функции для frexpf.

...