Apple Microarchitecture Research by Dougall Johnson

M1/A14 P-core (Firestorm): Overview | Base Instructions | SIMD and FP Instructions
M1/A14 E-core (Icestorm):  Overview | Base Instructions | SIMD and FP Instructions

ADRP

Test 1: uops

Code:

  .word 0x90000020

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 1.000

Integer unit issues: 1.000

Load/store unit issues: 0.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)031e3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)8283flush restart other nonspec (84)85inst all (8c)inst int alu (97)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
10045354035251000100010005000535535370338810001000535901110011000732211152910001000536536536536536
10045354035251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354635251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354035251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354035251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354056251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354935251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354035251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354035251000100010005000535535370338810001000535901110011000731211152910001000536536536536536
10045354035251000100010005000535535370338810001000535901110011000731211152910001000536536536536536

Test 2: throughput

Count: 8

Code:

  .word 0x90000020
  .word 0x90000021
  .word 0x90000022
  .word 0x90000023
  .word 0x90000024
  .word 0x90000025
  .word 0x90000026
  .word 0x90000027

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code divided by count): 0.5011

retire uop (01)cycle (02)033f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)696a6b6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map int uop inputs (7f)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)9fl1d cache writeback (a8)acbranch mispred nonspec (cb)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
802044011430135258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421454007980000801004008640086400864008640086
802044008530035258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000305110321444007980000801004008640086400864008640086
802044008530035258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421444007980000801004008640086400864012240086
80204400853004989258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421454007980000801004008640086400864008640086
802044008530035258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421444007980000801004008640086400864008640129
802044008530135258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421444007980000801004008640086400864008640086
8020440085300700258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421434007980000801004008640086400864008640086
802044008530035258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421444007980000801004008640086400864008640086
802044008530035258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421444007980000801004008640086400864008640086
802044008530135258010080100801004005004937005040085400853002033003880100802002004008590118020110099100801001000005110421444007980000801004008640086400864008640086

1000 unrolls and 10 iterations

Result (median cycles for code divided by count): 0.5005

retire uop (01)cycle (02)03mmu table walk instruction (07)l2 tlb miss instruction (0a)1e3a3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)60696a6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map int uop inputs (7f)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)9fl1d cache writeback (a8)acc2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? int retires (ef)f5f6f7f8fd
80024400563001101412580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100005022420344003580000800104004140041400414004140041
800244004030011012312580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100605022420444003580000800104004140041400414004140041
80024400402991101412580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100625022320344003580000800104004140041400414004140041
80024400403001101412580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100005022420334003580000800104004140041400414004140041
80024400402991101942580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100005022420434003580000800104004140041400414004140041
80024400402991101412580010800108001040005004936960400404004029998330016800108002020400409011800211091080010102005022420444003580000800104004140041400414004140041
80024400403001101412580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100005022420444003580000800104004140041400414004140041
80024400403001101412580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100005022420434003580000800104004140041400414004140041
80024400403001101412580010800108001040005004936960400404004029998330016800108002020400409011800211091080010100005022320344003580000800104004140041400414004140041
80024400403001101412580010800108001040005014936960400404004029998330016800108002020400409011800211091080010100305022420444003580000800104004140041400414004140041