Halide: генерация ассемблерного кода X86

Я новичок в Галиде. Я пытаюсь скомпилировать приложение camera_pipe из исходного кода (https://github.com/halide/Halide/tree/master/apps/camera_pipe). Я успешно скомпилировал camera_pipe.cpp. Он генерирует ассемблерный код "curved.s".

# Lfunc_begin0:
    .loc    3 12 0                 
#/data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:12:0
    .cfi_startproc
#BB#0:
    pushq   %rbp
.Ltmp0:
    .cfi_def_cfa_offset 16
.Ltmp1:
    .cfi_offset %rbp, -16
    movq    %rsp, %rbp
.Ltmp2:
    .cfi_def_cfa_register %rbp
    #DEBUG_VALUE: default_malloc:user_context <- %RDI
    #DEBUG_VALUE: default_malloc:x <- %RSI
.Ltmp3:
    #DEBUG_VALUE: default_malloc:alignment <- 128
    .loc    3 15 27 prologue_end   
#/data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:15:27
    subq    $-128, %rsi
.Ltmp4:
    .loc    3 15 18 is_stmt 0       
# /data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:15:18
    movq    %rsi, %rdi
.Ltmp5:
    callq   malloc@PLT
    movq    %rax, %rcx
.Ltmp6:
    #DEBUG_VALUE: default_malloc:orig <- %RCX
    xorl    %eax, %eax
    .loc    3 16 14 is_stmt 1       
# /data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:16:14
.Ltmp7:
    testq   %rcx, %rcx
    je  .LBB0_2
.Ltmp8:
# BB#1:
    #DEBUG_VALUE: default_malloc:orig <- %RCX
    .loc    3 21 68                 
# data/nfs_home/akafi/Halide_CoreIR/src/runtime/posix_allocator.cpp:21:68
    movq    %rcx, %rax
    addq    $135, %rax

......
......

Я попытался отладить исходный код. Я обнаружил, что он "camera_pipe.cpp" называется "/Halide_CoreIR/src/CodeGen_X86.cpp".

Сгенерированная сборка не похожа на сборку X86. Тогда какова функция «CodeGen_X86.cpp»?


person Abdullah-Al Kafi    schedule 19.06.2018    source источник
comment
Это сборка x64 с некоторыми директивами ассемблера, метками и комментариями.   -  person 1201ProgramAlarm    schedule 20.06.2018


Ответы (1)


Похоже, вы строите, используя очень старое дерево Halide — в течение некоторого времени не было файла camera_pipe.cpp, сгенерированный вывод не называется curved.* и т. д.

Тем не менее, серверная часть x86 в CodeGen_X86.cpp действительно генерирует код x86. Опубликованная вами curved.s - это сборка x86_64.

person jrk    schedule 09.07.2018