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

FMOV (vector, immediate, 4S)

Test 1: uops

Code:

  fmov v0.4s, #1.0

(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)031e3f51schedule uop (52)schedule simd uop (54)dispatch simd uop (57)ldst uops in schedulers (5b)696d6emap stall dispatch (70)map rewind (75)map stall (76)dispatch uop (78)map simd uop (7e)8283flush restart other nonspec (84)85inst all (8c)inst simd alu (9a)l1d cache writeback (a8)cfmap dispatch bubble (d6)e0? simd retires (ee)f5f6f7f8fd
100428826402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428820402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428826402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428823402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428830402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428839402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428820402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428830402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428820402510001000100070002692882881233146100010002882881110011000073162851000289289289289289
100428830402510001000100070002692882881233146100010002882881110011000073162851000289289289289289

Test 2: throughput

Count: 8

Code:

  fmov v0.4s, #1.0
  fmov v1.4s, #1.0
  fmov v2.4s, #1.0
  fmov v3.4s, #1.0
  fmov v4.4s, #1.0
  fmov v5.4s, #1.0
  fmov v6.4s, #1.0
  fmov v7.4s, #1.0

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

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

retire uop (01)cycle (02)03l2 tlb miss data (0b)18191e1f3f51schedule 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)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)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)? simd retires (ee)? int retires (ef)f5f6f7f8fd
80204200711611001288138258021510080094100800005005600000200192003820038997303999680100200800002002003820093118020110099100100800001000000000511021622200350800001002003920039200392003920039
80204200381610006061258010010080000100800005005600000200192003820038997303999680100200800002002003820038118020110099100100800001000000000511021622200350800001002003920039200392003920039
802042003816100012040258010010080000100800005005600000200192003820038997303999680100200800002002003820038118020110099100100800001000000000511021622200350800001002003920039200392003920039
80204200381600003040258010010080000100800005005600000200192003820038997303999680100200800002002003820038118020110099100100800001000000000512621622200350800001002003920039200392003920039
802042003816000000135258010010080000100800005005600000200192003820038997307999680100200800002002008920038118020110099100100800001000000000511021623200350800001002003920039200392003920039
802042003816100012040258010010080000100800005005600000200192003820038997303999680100200800002002003820038118020110099100100800001000000000511021622200730800001002003920039200392003920039
80204200381610000045258010010080000100800005005600000200192008720038997303999680100200800002002003820038118020110099100100800001000000000511021622200355800001002003920091200392003920039
80204200381610000040258010010080000100800005005600000200192003820038997303999680100200800002002003820038118020110099100100800001000000000511031622200350800001002003920039200392003920039
80204200381600000040458010010080000100800005005600000200192003820038997303999680100200800002002003820038118020110099100100800001000000000511021622200350800001002003920039200392003920092
802042003816100012040258010010080000100800005005600000200192003820038997303999680100200800002002003820038118020110099100100800001000000000511021623200350800001002003920039200392003920039

1000 unrolls and 10 iterations

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

retire uop (01)cycle (02)03l2 tlb miss data (0b)181e1f3f51schedule 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)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 miss (a1)ld unit uop (a6)l1d cache writeback (a8)acc2cfd0d5map dispatch bubble (d6)ddfetch restart (de)e0? int output thing (e9)? simd retires (ee)? int retires (ef)f5f6f7f8fd
800242004815500003925800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000030502002162220035080000102003920089200392003920039
800242003815500008125800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001002000502002162220035080000102003920039200392003920039
800242003815600003925800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000000502002162220035080000102003920039200392003920039
800242003815500008525800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000000502002162220035080000102003920039200392003920039
800242003815500903925800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000000502002162220035080000102003920039200392003920039
800242003815500008125800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000030502002162220035080000102003920039200392003920039
800242003815500005325800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000030502002162320035080000102003920039200392003920039
800242003815500003925800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000000502002162220035080000102003920039200392003920039
8002420038155000070425800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000000502002162220035080000102003920039200392003920039
800242003815500008125800101080000108000050560000200192003820038999631001880010208000020200382003811800211091010800001000000502002162220035080000102003920039200392003920039