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

B

Test 1: uops

Code:

  b .+4

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 0.000

Integer unit issues: 0.001

Load/store unit issues: 0.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)schedule uop (52)schedule int uop (53)? int output thing (e9)
10043068111
10042206111
10042024111
10041902111
10041842111
10041814111
10042145111
10042156111
10051948111
10041851111

Test 2: throughput

Count: 8

Code:

  b .+4
  b .+4
  b .+4
  b .+4
  b .+4
  b .+4
  b .+4
  b .+4

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)dispatch uop (78)map int uop (7c)map int uop inputs (7f)map ldst uop inputs (80)? int output thing (e9)? ldst retires (ed)? simd retires (ee)? int retires (ef)
80204852001011011003001002002000100100
80205844271011011003001002002000100100
80204840021011011003001002002000100100
80204838941011011003001002002000100100
80204839271011011003001002002000100100
80204838361011011003001002002000100100
80204839211011011003001002002000100100
80204839391011011003001002002000100100
80204834571011011003001002002000100100
80204840081011011003001002002000100100

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)schedule uop (52)schedule int uop (53)schedule simd uop (54)schedule ldst uop (55)dispatch int uop (56)dispatch simd uop (57)dispatch ldst uop (58)int uops in schedulers (59)simd uops in schedulers (5a)ldst uops in schedulers (5b)dispatch uop (78)map int uop (7c)map ldst uop (7d)map simd uop (7e)map int uop inputs (7f)map ldst uop inputs (80)map simd uop inputs (81)? int output thing (e9)? ldst retires (ed)? simd retires (ee)? int retires (ef)
8002424038311110010003000102000200010010
8002423852011110010003000102000200010010
8002423788411110010003000102000200010010
8002523796611110010003000102000200010010
8002423793111110010003000102000200010010
8002523797811110010003000102000200010010
8002523817111110010089554054271387306735250322108810470276200010010
8002423794111110010003000102000200010010
8002423788111110010003000102000200010010
8002523803611110010003000102000200010010