mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-26 08:00:49 +01:00
Optimizes this instruction from 18 down to 12 instructions. Still has some extraneous moves at the tail of the operation that don't need to exist. Before: ```asm 0x00007fffe2080908 10ffffe0 adr x0, #-0x4 (addr 0x7fffe2080904) 0x00007fffe208090c f9005f80 str x0, [x28, #184] 0x00007fffe2080910 3dc03cc4 ldr q4, [x6, #240] 0x00007fffe2080914 2f08a705 uxtl v5.8h, v24.8b 0x00007fffe2080918 6f08a706 uxtl2 v6.8h, v24.16b 0x00007fffe208091c 2f08a487 uxtl v7.8h, v4.8b 0x00007fffe2080920 6f08a484 uxtl2 v4.8h, v4.16b 0x00007fffe2080924 6e6784a5 sub v5.8h, v5.8h, v7.8h 0x00007fffe2080928 6e6484c4 sub v4.8h, v6.8h, v4.8h 0x00007fffe208092c 4e60b8a5 abs v5.8h, v5.8h 0x00007fffe2080930 4e60b884 abs v4.8h, v4.8h 0x00007fffe2080934 4e71b8a5 addv h5, v5.8h 0x00007fffe2080938 4e71b884 addv h4, v4.8h 0x00007fffe208093c 4ea51ca0 mov v0.16b, v5.16b 0x00007fffe2080940 6e180480 mov v0.d[1], v4.d[0] 0x00007fffe2080944 4ea01c18 mov v24.16b, v0.16b 0x00007fffe2080948 58000040 ldr x0, pc+8 (addr 0x7fffe2080950) 0x00007fffe208094c d63f0000 blr x0 ``` After: ```asm 0x00007fffe2080848 10ffffe0 adr x0, #-0x4 (addr 0x7fffe2080844) 0x00007fffe208084c f9005f80 str x0, [x28, #184] 0x00007fffe2080850 3dc03cc4 ldr q4, [x6, #240] 0x00007fffe2080854 2e247305 uabdl v5.8h, v24.8b, v4.8b 0x00007fffe2080858 6e247304 uabdl2 v4.8h, v24.16b, v4.16b 0x00007fffe208085c 4e71b8a5 addv h5, v5.8h 0x00007fffe2080860 4e71b884 addv h4, v4.8h 0x00007fffe2080864 4ea51ca0 mov v0.16b, v5.16b 0x00007fffe2080868 6e180480 mov v0.d[1], v4.d[0] 0x00007fffe208086c 4ea01c18 mov v24.16b, v0.16b 0x00007fffe2080870 58000040 ldr x0, pc+8 (addr 0x7fffe2080878) 0x00007fffe2080874 d63f0000 blr x0 ```