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

TBNZ (not taken)

Test 1: uops

Code:

  tbnz x0, #1, .+4

(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)map int uop inputs (7f)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)l1d cache writeback (a8)cfd5map dispatch bubble (d6)ddfetch restart (de)e0f5f6f7f8fd
1004389860352510001000100050005355351623180100010001000535535111001100007322111532536536536536536
100453530352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
1004535451352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453530352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453543352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536
100453540352510001000100050005355351623180100010001000535535111001100007312111532536536536536536

Test 2: throughput

Count: 8

Code:

  tbnz x0, #1, .+4
  tbnz x0, #1, .+4
  tbnz x0, #1, .+4
  tbnz x0, #1, .+4
  tbnz x0, #1, .+4
  tbnz x0, #1, .+4
  tbnz x0, #1, .+4
  tbnz x0, #1, .+4
  mov x0, 0

(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)031e1f3f51schedule 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 tlb miss (a1)ld unit uop (a6)l1d cache writeback (a8)acbranch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)e0? int retires (ef)f5f6f7f8fd
80204405183010049288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000001115118116400871004009140091400914009140091
80204400903000028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000001115118016400871004009140091400914009140091
80204400903010028288011080110801144005601493701040090400901334971335980114802248022440090320501180201801009910010010000001115118016400871004009140091400914009140091
80204400903000028288011080110801144005600493701040090400901334971335980114802248022440570320501180201801009910010010000001115118016400871004009140091400914009140091
80204400903010028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000001115118016400871004009140091400914009140091
80204400903000028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000001115118016400871004009140091400914009140091
80204400903000028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000001115118016400871004009140091400914009140421
802044009030000123288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000001115118016400871004009140091400914009140091
80204400903010028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010000001115118016400871004009140091400914009140091
80204400903000028288011080110801144005600493701040090400901334971335980114802248022440090320501180201801009910010010070201115118016400871004009140091400914009140091

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)031e3f51schedule uop (52)schedule int uop (53)dispatch int uop (56)int uops in schedulers (59)6061696a6d6emap 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)9fst unit uop (a7)l1d cache writeback (a8)acc2branch cond mispred nonspec (c5)cdcfd0d2d5map dispatch bubble (d6)daddfetch restart (de)e0? int retires (ef)f5f6f7f8fd
80024425733080352580010800108001040005010493696040040400401333131334980010800208002040040400401180021800109101010000000502000920361040037104004140041400414004140041
80024400403000352580010800108001040005010493696040040400401333131334980010800208002040040400401180021800109101010000000502000102009740037104004140041400414004140041
8002440040300035258001080010800104000501049369604004040040133313133498001080020800204004040040118002180010910101000000050200052007940037104004140041400414004140041
8002440040300035258001080010800104000501049369604004040040133313133498001080020800204004040040118002180010910101000000050200062007540037104004140041400414004140041
8002440040300035258001080010800104000501049369604004040040133313133498001080020800204004040040118002180010910101000000050200082005840037104004140041400414004140041
8002440040300035258001080010800104000501049369604004040040133313133498001080020800204004040040118002180010910101000000050200052005740037104004140041400414004140041
80024400403000352580010800108001040005010493696040040400401333131334980010800208002040040400401180021800109101010000000502000112006840037104004140041400414004140041
80024400403000352580010800108001040005000493696040040400401333131334980010800208002040040400401180021800109101010000000502000112027640037104004140041400414004140041
80024400403009352580010800108001040005010493696040040400401333131334980010800208002040040400401180021800109101010000000502051617909640037104004140041400414004140041
80024400403000352580010800108001040005010493696040040400401333131334980010800208002040040400401180021800109101010000000502005102004740037104004140041400414004140041