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

STRH (register, sxtw)

Test 1: uops

Code:

  strh w0, [x6, w7, sxtw]
  mov x0, 0
  mov x7, 8

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 1.000

Integer unit issues: 0.000

Load/store unit issues: 1.000

SIMD/FP unit issues: 0.000

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)l2 tlb miss data (0b)1e1f223a3f46494f51schedule uop (52)schedule ldst uop (55)dispatch ldst uop (58)simd uops in schedulers (5a)6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map ldst uop (7d)map ldst uop inputs (80)8283flush restart other nonspec (84)85inst all (8c)inst int store (96)inst ldst (9b)l1d tlb access (a0)l1d tlb miss (a1)l1d cache miss st (a2)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)f5f6f7f8fd
100555141100140153716150251000100010002290856155936334101000100030005595521110011000100010151400210140118100216014073116115441000554553551562559
10045584111021015451616525100010001000228365575473603411100010003000548553111001100010001016153600101600141002143614173116115441000560560553548551
10045615110019015331616225100010001000226925595473703405100010003000558547111001100010001015153601101601161002163614273116115551000559548548559553
1004551411002101535161652510001000100023197559550360341810001000300055854711100110001000101514000101601141002163614173116115561000561560560560548
10045524101021115321616225100010001000227195475473713418100010003000558552111001100010001014163601101600191002143614273116115441000553548548559558
1004559411061901544016025100010001000232205595473713419100010003000558551111001100010001015143601101601141002163614173116115441000561560559548548
10045524111019015441616225100010001000227185585473723405100010003000559552111001100010001014163601101600141000143514073116115561000548550559549559
100454751110191154501632510001000100022693558551372340810001000300055955211100110001000101515360010140114100216014273116115441000559559553553553
10045604111014015321616525100010001000232475475503723418100010003000559547111001100010001016153602101400151002143614173116115471000553554552548562
10045474111014115361601251000100010002324655855137234071000100030005595521110011000100010141600210160016100216014073116115491000560548553553552

Test 2: throughput

Count: 8

Code:

  strh w0, [x6, w7, sxtw]
  strh w0, [x6, w7, sxtw]
  strh w0, [x6, w7, sxtw]
  strh w0, [x6, w7, sxtw]
  strh w0, [x6, w7, sxtw]
  strh w0, [x6, w7, sxtw]
  strh w0, [x6, w7, sxtw]
  strh w0, [x6, w7, sxtw]
  mov x7, 8

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)03l1i tlb fill (04)l1d tlb fill (05)mmu table walk data (08)09l2 tlb miss data (0b)18191e1f2223243a3f46494f51schedule uop (52)schedule int uop (53)schedule ldst uop (55)dispatch int uop (56)dispatch ldst uop (58)int uops in schedulers (59)simd uops in schedulers (5a)60696a6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map ldst uop (7d)map int uop inputs (7f)map ldst uop inputs (80)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int store (96)inst int alu (97)inst ldst (9b)9fl1d tlb access (a0)l1d tlb miss (a1)l1d cache miss st (a2)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2branch cond mispred nonspec (c5)branch mispred nonspec (cb)cdcfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? ldst retires (ed)? int retires (ef)f5f6f7f8fd
802054004730001011000140001400391616225801001008000010080006500183971814936972400544004729971729999801062008001620024004840054320001180201100991008000010080000100800141544008001601921800021444141111511801602400480800001004004840055400644004840056
8020440047299010100001410014003701612580100100800001008000650018400351493696740052400472997073000680107200800162002400484005132006118020110099100800001008000010080016154400800161117800021444141111511801600400440800001004005540048400554004840055
80204400473000111100017000140037161612580100100800001008000650018427371493697240054400522998272999980107200800162002400484004732000118020110099100800001008000010080015154300800161216800001644141111511801600400440800001004019140335400534005540053
8020440047299011110001910014003901622580100100800001008001250018399920493697440052400532996262299948011220080022200240066400513200711802011009910080000100800001008001515001800163021800021444140222512812311400510800001004004840055400484005640053
802044005430001001000190001400371616425801001008000010080013500183999214936984400544004729964102998780112200800222002400664004732017118020110099100800001008000010080014154400800160019800021643140222512812321400510800001004005340048400544005540053
802044005430001101000151001400391616625802201008000010080012500183999214936974406034005429964103000480112200800222002400664005432000118020110099100800001008000010080015144401800161116800021644140222512812311400510800001004005440048400554006540053
802044005430001111000170001400371616225801001008000010080012500183989704936974400544004729957102999480112200800222002400664004732007118020110099100800001008000010080015154400800161118800001444140222512812311400440800001004005540048400644005540048
80204400473000101100020100140039161612580100100800001008000050018398351493696840054400472995662999880100200800002002410894005432001118020110099100800001008000010080015154401800141120800021644142111512022424400600800001004004840053400564004840055
802044004730001101000181001400360012580100100800001008000050018491651493696740047400542995662999380100200800002002400004005440326118020110099100800001008000010080016144400800160117800021644141111512022422400440800001004004840055400534005540053
8020440054300010000001410014004800225801001008000010080000500183993014936984400544005429956629998801002008000020024000040054320071180201100991008000010080000100800141600080014001480002160142111519122422400440800001004004840055400554006440048

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03l1d tlb fill (05)mmu table walk data (08)09l2 tlb miss data (0b)191e1f2223243a3f46494f51schedule uop (52)schedule int uop (53)schedule ldst uop (55)dispatch int uop (56)dispatch ldst uop (58)int uops in schedulers (59)simd uops in schedulers (5a)5f60696a6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map ldst uop (7d)map int uop inputs (7f)map ldst uop inputs (80)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int store (96)inst int alu (97)inst ldst (9b)9fl1d tlb access (a0)l1d tlb miss (a1)l1d cache miss st (a2)a4ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acafbcl1d cache miss st nonspec (c0)l1d tlb miss nonspec (c1)c2branch cond mispred nonspec (c5)cfd5map dispatch bubble (d6)ddfetch restart (de)e0? ldst retires (ed)? int retires (ef)f5f6f7f8fd
80025400543001100001810014003716160258001010800001080000501839956014936974400544005429990330027800102080000202400004005240053118002110910800001080000108001515430180014021780002144414105020161612124005180000104005340055400524004840052
800244006330010010618100140038161672580010108000010800005018399340149369744005440054299893300328001020800002024000040052400471180021109108000010800001080015140008001600178000216014105020131612134004480000104005540048400554004840055
80024400473001111001810014003916162258001010800001080000501840487014936974400474005429989330032801282080000202400004005440064118002110910800001080000108001515440280014002080000164414205020131613134005180000104005340055400544005540054
80024400523001111002110014003916161258001010800001080000501840028014936972400524004729987330034800102080000202400004005440047118002110910800001080000108001514440180016011680002164414005020121613124005080000104004840055400494005540064
80024400543001010001410014003916165258001010800001080000501840004014936972400544005229987330034800102080000202400004005440054118002110910800001080000108001616440280016001480002164414105020121612124005080000104005540048400644005540064
8002440054300101106191001400371604258001010800001080000501839956014936983400544004829998330034800102080000202400004005440054118002110910800001080000108001616440380016011680002164414105020121613124005180000104005340048400554006440055
80024400523001111001710014004816160258001010800001080000501839934014937529400544005429982330032800102080000202400004005240054118002110910800001080000108001615440080016002080002144414205020121613134004480000104005540052400554004840048
8002440054300101100181001400390162258001010800001080000501840052014936973400524005329989330044800102080000202400004006440051118002110910800001080000108001516440180016021880002164414005020141613114005180000104004840055400484005540054
80024400523001111001500014003916162258001010800001080000501839956014936974400544005429990330033800102080000202400004005340047118002110910800001080000108001516440180016001780002164414105020141612134005180000104005540064400554005340055
800244004730011110017100040036000258001010800001080000501840004014936971400644004729987330034800102080000202400004005440054118002110910800001080000108001414440180014011780000164414005020121614144005180000104005540048400534005540053