Pull to refresh

Comments 12

Хотелось бы добавить, что в статье перечислена только малая часть оптимизаций. В LLVM также есть оптимизации, которые могут целый цикл в формулу развернуть или преобразовать сложный набор инструкций в одну машинную, вроде bswap или popcnt.

Это самый простой вид оптимизаций :-) и тут он тоже немного затрагивается (InstCombine)

В gcc 9.2 похоже уже норм:


Тык
is_sorted:
    @ args = 0, pretend = 0, frame = 0
    @ frame_needed = 0, uses_anonymous_args = 0
    @ link register save eliminated.
    cmp r1, #1
    ble .L4
    movs    r2, #0
    push    {r4}
    subs    r4, r1, #1
    ldr r3, [r0]
    b   .L3
.L13:
    cmp r2, r4
    beq .L12
.L3:
    mov r1, r3
    ldr r3, [r0, #4]!
    adds    r2, r2, #1
    cmp r3, r1
    bge .L13
    movs    r0, #0
    ldr r4, [sp], #4
    bx  lr
.L12:
    movs    r0, #1
    ldr r4, [sp], #4
    bx  lr
.L4:
    movs    r0, #1
    bx  lr

Я не встречал. В принципе, реально всё это проделать самостоятельно.

Реально, но геморно. Тем более я слышал, что там с архитектурой что-то страшное.
Но по прежнему отраслевой стандарт.
Я же не спорю. Просто у него сложная и запутанная архитектура, потому что это старый проект с кучей legacy.
UFO just landed and posted this here
Sign up to leave a comment.

Articles