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

SQRDMLSH (by element, 4S)

Test 1: uops

Code:

  sqrdmlsh v0.4s, v1.4s, v2.s[1]
  movi v0.16b, 1
  movi v1.16b, 2
  movi v2.16b, 3

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 1.000

Integer unit issues: 0.000

Load/store unit issues: 0.000

SIMD/FP unit issues: 1.000

retire uop (01)cycle (02)03mmu table walk data (08)l2 tlb miss data (0b)18191e1f3a3f4e51schedule uop (52)schedule simd uop (54)dispatch simd uop (57)ldst uops in schedulers (5b)60696d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map simd uop (7e)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst simd alu (9a)l1d cache writeback (a8)a9accfd5map dispatch bubble (d6)ddfetch restart (de)e0? simd retires (ee)f5f6f7f8fd
1004303723000000061254825100010001000398313030183037303724153289510001000300030373037111001100000073116112630100030383038303830383038
1004303722000000061254825100010001000398313030183037303724153289510001000300030373037111001100000073116112630100030383038303830383038
1004303723000060061254825100010001000398313030183037303724153289510001000300030373037111001100000073116112630100030383038303830383038
1004303722000000061254825100010001000398313030183037303724153289510001000300030373037111001100000073116112702100030383038303830383038
1004303723000000061254825100010001000398313030183037303724153289510001000300030373037111001100000073116112630100030383038303830383038
10043037220000000842548251000100010003983130301830373037241532895100010003000303730371110011000210073116112630100030383038303830383038
1004303723000000061254825100010001000398313130183037303724153289510001000300030373037111001100000073116112630100030383038303830383038
1004303722000000061254825100010001000398313030183037303724153289510001000300030373037111001100000073116112630100030383038303830383038
1004303723000000061254825100010001000398313030183037303724153289510001000300030373037111001100000073116112630100030383038303830383038
1004303722000000082254825100010001000398313030183037303724153289510001000300030373037111001100000073116112630100030383038303830383038

Test 2: Latency 1->1

Code:

  sqrdmlsh v0.4s, v1.4s, v2.s[1]
  movi v0.16b, 1
  movi v1.16b, 2
  movi v2.16b, 3

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 3.0037

retire uop (01)cycle (02)0318191e1f3a3f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)60696d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fld unit uop (a6)l1d cache writeback (a8)a9accfd0d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? simd retires (ee)? int retires (ef)f5f6f7f8fd
102043008422500240061295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710131633296340100001003003830038300383003830038
102043003722500150061295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730084211020110099100100100001000000710131633296340100001003003830038300383003830038
10204300372250024003853295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710131633296340100001003003830038300383003830038
102043003722500330161295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710131633296340100001003003830038300383003830038
102043003722500510061295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710131633296340100001003003830038300383003830038
102043003722500120061295482510100100100001001000050042773130300183003730037282653287451010020010000204300003003730037111020110099100100100001000000710141633296340100001003003830038300383003830038
1020430037224004590161295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710131633296340100001003003830038300383003830038
102043003722500240061295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710141633296340100001003003830038300383003830038
102043003722500270061295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710131644296340100001003003830038300383003830038
102043003722500240061295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000000710131633296340100001003003830038300383003830038

1000 unrolls and 10 iterations

Result (median cycles for code): 3.0037

retire uop (01)cycle (02)03mmu table walk data (08)l2 tlb miss data (0b)18191e1f3a3f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)696b6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)l1d cache writeback (a8)a9accfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? simd retires (ee)? int retires (ef)f5f6f7f8fd
10024300372250000237006129548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006402162329630010000103003830038300383003830038
1002430037225000027006129548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006402162229630010000103003830038300383003830038
10024300372250000318006129548251001010100001010000504277313300183300373003728287328767100102010000203000030037300371110021109101010000100000006403163229630010000103003830038300383003830038
100243003722500006006129548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006403163229630010000103003830038300383003830038
1002430037225000012006129548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006402162229630010000103003830038300383003830038
1002430037225000000072629548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006402162229630010000103003830038300383003830038
1002430037225000000053629548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006403162229630010000103003830038300383003830038
100243003722500000006129548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006402162229630010000103003830038300383003830038
100243003722500006006129548251001010100001010000504277313300180300373003728287328767100102010000203000030037300371110021109101010000100000006402162329630010000103003830038300383003830038
1002430037225000060034629548251001010100001010000504277313300180300373003728287328767100102010000203000030037300372110021109101010000100000006402162229630010000103003830038300383003830038

Test 3: Latency 1->2

Code:

  sqrdmlsh v0.4s, v0.4s, v1.s[1]
  movi v0.16b, 1
  movi v1.16b, 2

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 3.0037

retire uop (01)cycle (02)031e3a3f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)60696d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fld unit uop (a6)l1d cache writeback (a8)accfd5map dispatch bubble (d6)ddfetch restart (de)e0? simd retires (ee)? int retires (ef)f5f6f7f8fd
10204300372250061295482510100100100001001000050042773131300183003730037282653287451010020010000200300003003730037111020110099100100100001000037101161129634100001003003830038300383003830038
10204300372250061295482510100100100001001000050042773131300183003730037282653287451010020010000200300003003730037111020110099100100100001000007101161129634100001003003830038300383003830038
10204300862250061295482510100100100001001000050042773131300183003730037282653287451025320010000200300003003730037111020110099100100100001000037101161129634100001003003830038300383003830038
10204300372250061295482510100100100001001000050042773131300183003730037282653287451010020010000200300003003730037111020110099100100100001000037101161129634100001003003830038300383003830038
10204300372250061295482510100100100001001000050042773131300183003730037282653287451010020010000200300003003730037111020110099100100100001000067101161129634100001003003830038300383003830038
10204300372250061295482510100100100001001000050042773130300183003730037282653287451010020010000200300003003730037111020110099100100100001000037101161129634100001003003830038300383003830038
102043003722500612954825101001001000010010000500427731313001830037300372826532874510100200100002003000030037300371110201100991001001000010000817101161129634100001003003830038300383003830038
10204300372250261295482510100100100001001000050042773131300183003730037282653287451010020010000200300003003730037111020110099100100100001000007101161129634100001003003830038300383003830038
10204300372250061295482510100100100001001000050042773131300183003730037282653287451010020010000200300003003730037111020110099100100100001000037101161129634100001003003830038300383003830038
10204300372250061295482510100100100001001000050042773131300183003730037282653287451010020010000200300003003730037111020110099100100100001000037101161129634100001003003830038300383003830038

1000 unrolls and 10 iterations

Result (median cycles for code): 3.0037

retire uop (01)cycle (02)03mmu table walk data (08)09l2 tlb miss data (0b)18191e1f3f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)60696b6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)l1d cache writeback (a8)a9acc2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)ec? simd retires (ee)? int retires (ef)f5f6f7f8fd
10024300372250000000612954825100101010000101000050427731303001803003730037282873287671001020100002030000300373003711100211091010100001000000162064021622296300010000103003830038300383003830038
10024300372250000000612954825100101010000101000071427867003001803003730037282873287671001020100002030000300373003711100211091010100001000000129064021622296300010000103003830038300383003830038
10024300372250000000612954825100101010000101000050427731303001803003730037282873287671001020100002030000300373003711100211091010100001000000153064021622296300010000103003830038300383003830038
10024300372250000000612954825100101010000101000050427731303001803003730037282873287671001020100002030000300373003711100211091010100001000000135064021622296300010000103003830038300383003830038
100243003722500000006129548251001010100001010000504277313030018030037300372828732876710010201000020300003003730037111002110910101000010000000064021622296300010000103003830038300383008530038
100243003722500000300612954825100101010000101000050427731303001803003730037282873287671001020100002030000300373003711100211091010100001000000144064021622296300010000103003830038300383003830038
100243003722500000150612954825100101010000101000050427731303001803003730037282873287671001020100002030000300373003711100211091010100001000000120064021622296300010000103003830038300383003830038
10024300372250000000612954825100101010000101000050427731303001803003730037282873287671001020100002030000300373003711100211091010100001000000126064021622296300010000103003830038300383003830038
10024300372250000000612954825100101010000101000050427731303001803003730084282873287671001020100002030000300373003711100211091010100001000000174064021622296300010000103003830038300383003830038
10024300372250000000612954825100101010000101000050427731303001803003730037282873287671001020100002030000300373003711100211091010100001000000144064021622296300010000103003830038300383003830085

Test 4: Latency 1->3

Code:

  sqrdmlsh v0.4s, v1.4s, v0.s[1]
  movi v0.16b, 1
  movi v1.16b, 2

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 3.0037

retire uop (01)cycle (02)03l2 tlb miss data (0b)18191e1f3f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)696d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d tlb access (a0)ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)acc2cfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? simd retires (ee)? int retires (ef)f5f6f7f8fd
10204300372250000061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071021611296340100001003003830038300383003830038
10204300372250000061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038
10204300372250000061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038
10204300372250000061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038
10204300372250000061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038
102043003722500036061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038
10204300372250000061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038
102043003722500000726295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038
102043003722500000747295482510100100100001001000050042773133001830037300372826532877910100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830227300383003830038
1020430037225000414061295482510100100100001001000050042773133001830037300372826532874510100200100002003000030037300371110201100991001001000010000000071011611296340100001003003830038300383003830038

1000 unrolls and 10 iterations

Result (median cycles for code): 3.0037

retire uop (01)cycle (02)03l1i tlb fill (04)mmu table walk data (08)l2 tlb miss data (0b)18191e1f3a3f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)6061696d6emap stall dispatch (70)simd prf full (72)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)l1d cache writeback (a8)a9acc2branch cond mispred nonspec (c5)cfd0d2d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? simd retires (ee)? int retires (ef)f5f6f7f8fd
1002430037225000000006129548251001010100001010000504277313103001830037300372828703287671001020100002030000300373003711100211091010100001000000000640004163429630010000103003830038300383003830038
10024300372250000000061295482510010101000010100005042773131530018300373003728287032876710010201000020300003003730037111002110910101000010000001200640004164429630010000103003830038300383003830038
1002430037225000000006129548251001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000000000640003163429630010000103022730038300383003830038
1002430037225000000006129548251001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000000000640004164429630010000103003830038300383003830038
1002430037225000000006129548251001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000000000640003164429630010000103003830038300383003830038
1002430037225000000006129548251001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000000000640003163429630010000103003830038300383003830038
1002430037225000000006129548251001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000000000640004164329630010000103003830038300383003830038
1002430037225000000006129548251001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000000000640004164429630010000103003830038300383003830038
1002430226225000000006129548451001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000020000640003164329630010000103003830038300383003830038
1002430037225000000006129548251001010100001010000504277313003001830037300372828703287671001020100002030000300373003711100211091010100001000000000640004163429630010000103003830038300383003830038

Test 5: throughput

Count: 8

Code:

  movi v0.16b, 0
  sqrdmlsh v0.4s, v8.4s, v9.s[1]
  movi v1.16b, 0
  sqrdmlsh v1.4s, v8.4s, v9.s[1]
  movi v2.16b, 0
  sqrdmlsh v2.4s, v8.4s, v9.s[1]
  movi v3.16b, 0
  sqrdmlsh v3.4s, v8.4s, v9.s[1]
  movi v4.16b, 0
  sqrdmlsh v4.4s, v8.4s, v9.s[1]
  movi v5.16b, 0
  sqrdmlsh v5.4s, v8.4s, v9.s[1]
  movi v6.16b, 0
  sqrdmlsh v6.4s, v8.4s, v9.s[1]
  movi v7.16b, 0
  sqrdmlsh v7.4s, v8.4s, v9.s[1]
  movi v8.16b, 9
  movi v9.16b, 10

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)03mmu table walk data (08)1e3f51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)696d6emap rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d cache writeback (a8)accfd5map dispatch bubble (d6)ddfetch restart (de)e0? simd retires (ee)? int retires (ef)f5f6f7f8fd
16020420091150003925801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011121611200611600001002006520065200652006520065
16020420064150003925801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011111611200611600001002006520065200652006520065
160204200641500014625801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011111611200611600001002006520065200652006520065
16020420064150003925801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011111611200611600001002006520065200652006520065
160204200641500023125801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011111611200611600001002006520065200652013320065
16020420064151003925801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011121611200611600001002006520065200652006520065
16020420064150003925801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011211611200611600001002006520065200652006520065
160204200641500070425801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011211611201291600001002006520065200652006520065
160204200641500333925801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011111611200611600001002006520065200652006520065
16020420064150003925801001008000010080000500640000200452006420064322801002008000020024000020064200641116020110099100100160000100001011111611200611600001002006520065200652006520065

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03mmu table walk instruction (07)mmu table walk data (08)l2 tlb miss instruction (0a)18191e1f3a3f51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)5f60696d6emap rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acc2cfd0d2l1i cache miss demand (d3)d5map dispatch bubble (d6)d9dadbddfetch restart (de)e0? int output thing (e9)eaec? simd retires (ee)? int retires (ef)f5f6f7f8fd
16002420065150101000005125800121280000128000062640000112002720046200463228001220800002024000020046200461116002110910101600001000000000100373121724422816200472300160000102005120051200512005120051
160024200501501000000057258001212800001280000626400000120031200502005032280012208000020240000200502004611160021109101016000010000000001003731215244221514200472300160000102005120051200512005120051
160024200501501010000051258001212800001280000626400001120027200462004632280012208000020240000200462004611160021109101016000010000000001003931214202111414200472150160000102004720047200472005120051
16002420046150001000005725800121280000128000062640000012003120050200503228001220800002024000020046200461116002110910101600001000001000100373121524422159200472300160000102005120051200512005120051
1600242005015010100000299258001212800001280000626400000120031200462005032280012208000020240000200502005011160021109101016000010000000001004061216904221515200432300160000102005120051200512005120051
16002420050150102000001412580012128000012800006264000001200312005020050312280012208000020240000200502005011160021109101016000010000000001004361215244221315200472300160000102005120051200512005120051
160024200501502030000063258001212800001280000626400000120027200502005032280012208000020240000200502005011160021109101016000010000000001004162216244121414200472300160000102005120051200512005120051
160024200501501000000051258001212800001280000626400000120031200502005032280012208000020240000200502005011160021109101016000010000000001004161216244221414200472300160000102005120051200512005120051
160024200501501010000074258001212800001280000626400000120027200502004632280012208000020240000200502005011160021109101016000010000000001004162214244221313200472300160000102005120051200512005120051
160024200501500000000051258001212800001280000626400000120031200502005032280012208000020240000200502005011160021109101016000010000000001004262213244221512200472300160000102005120051200512005120051

Test 6: throughput

Count: 12

Code:

  sqrdmlsh v0.4s, v12.4s, v13.s[1]
  sqrdmlsh v1.4s, v12.4s, v13.s[1]
  sqrdmlsh v2.4s, v12.4s, v13.s[1]
  sqrdmlsh v3.4s, v12.4s, v13.s[1]
  sqrdmlsh v4.4s, v12.4s, v13.s[1]
  sqrdmlsh v5.4s, v12.4s, v13.s[1]
  sqrdmlsh v6.4s, v12.4s, v13.s[1]
  sqrdmlsh v7.4s, v12.4s, v13.s[1]
  sqrdmlsh v8.4s, v12.4s, v13.s[1]
  sqrdmlsh v9.4s, v12.4s, v13.s[1]
  sqrdmlsh v10.4s, v12.4s, v13.s[1]
  sqrdmlsh v11.4s, v12.4s, v13.s[1]
  movi v12.16b, 13
  movi v13.16b, 14

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)03mmu table walk data (08)0918191e1f373f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)60696d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)l1d cache writeback (a8)a9accfd5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? simd retires (ee)? int retires (ef)f5f6f7f8fd
1202043030223000006600136025120100100120000100120000500960000030020325813003914973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
120204300392250000240041025120100100120000100120000500960000030020317433003914973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
1202043003922500002700136025120100100120000100120000500960000030020317533003914973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
120204300392240000600726025120100100120000100120000500960000030020300393003914973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
120204300392240000720041025120100100120000100120000500960000030020317533004214973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
1202043092222500002700041025120100100120000100120000500960000030020317533004214973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
120204300392250000510041025120100100120000100120000500960000030020300393004014973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
1202043003922500002700410251201001001200001001200005009600000300203004030041149731515000120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040
12020430039224000000041025120100100120000100120000500960000030020300393003914973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403094330040
120204300392250000270041025120100100120001100120000500960000030020300393003914973314997120100200120000200360000300393003911120201100991001001200001000000007610116113003601200001003004030040300403004030040

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03mmu table walk data (08)l2 tlb miss data (0b)18191e1f373f4e51schedule uop (52)schedule int uop (53)schedule simd uop (54)dispatch int uop (56)dispatch simd uop (57)int uops in schedulers (59)ldst uops in schedulers (5b)5f60696b6d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map int uop (7c)map simd uop (7e)map int uop inputs (7f)map simd uop inputs (81)8283flush restart other nonspec (84)85inst all (8c)inst branch (8d)inst branch taken (90)inst branch cond (94)inst int alu (97)inst simd alu (9a)9fl1d tlb access (a0)l1d tlb miss (a1)ld unit uop (a6)st unit uop (a7)l1d cache writeback (a8)a9acc2cfd0d2l1i cache miss demand (d3)d5map dispatch bubble (d6)d9dadbddfetch restart (de)e0? int output thing (e9)eaebec? simd retires (ee)? int retires (ef)f5f6f7f8fd
12002430681225000000046025120010101200171012000050960000113002003003930039166773150191200102012000020360000300393092211120021109101012000010000000007522311716211773003601550120000103009030040300403009030040
120024300392250000000470251200101012000110120000509900001131091030039300911499671501912001020120000203600003175030040111200211091010120000100000000075223118162117730036015516120000103004030040300403004030040
1200243003922500001981081767025120010101200001012000050990000113002103003930922149963150191200102012000020360000300393004011120021109101012000010000100007522311516211573091901550120000103004030040300403004030040
120024300392310000001746025120011101200001012000050960000113002103004030039149963150191200102012000020360000300423175011120021109101012000010000000007522311716211753003601550120000103004030040300403004030040
12002430040224000300067025120010101200001012000050960000113002033003930039149963150201200102012000020360000300393003911120021109101012000010003000007522311516211573003701550120000103004030040300403092330923
12002430040225000000067025120010101200001012000050960000113002003003930039149963159021200102012000020360000309223003911120021109101012000010000020007522311716211773003601550120000103004030040300403004030040
1200243004022500002670046025120010101200001012000050960000113002003003930039149963150491200102012000020360000309223003911120021109101012000010003000007522311716211573091901550120000103004131751300413004030041
1200243095122510100016663405251200111012001710120000509600001130021030040300401499624150191200102012000020360000300393003911120021109101012000010000000007522311516211753003701550120000103004030040300413004030040
12002430040225000000046025120010101200521012000050960000113080603094330039150163150191200102012000020360000300403003911120021109101012000010020000007522311716211753003601550120000103004030944300403004030089
1200243003922500000264046671325120011101200001012000050960000113002003009131912149963150191200102012000020360000300393057311120021109101012000010000000007522321716211753003601550120000103004030040300403004030952