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

MSR (NZCV)

Test 1: uops

Code:

  msr nzcv, x0
  mrs x0, nzcv

(no loop instructions)

1000 unrolls and 1 iteration

Retires: 1.000

Issues: 1.000

Integer unit issues: 1.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)dispatch int uop (56)int uops in schedulers (59)dispatch uop (78)map int uop (7c)map int uop inputs (7f)? int output thing (e9)
100450810011001100030001000100010001001
100439910011001100030001000100010001001
100439210011001100030001000100010001001
100439310011001100030001000100010001001
100439210011001100030001000100010001001
100439110011001100030001000100010001001
100439310011001100030001000100010001001
100439210011001100030001000100010001001
100439210011001100030001000100010001001
100439210011001100030001000100010001001

Test 2: throughput

Code:

  msr nzcv, x0
  mrs x0, nzcv

(fused SUBS/B.cc loop)

100 unrolls and 100 iterations

Result (median cycles for code): 0.3714

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)? int output thing (e9)? int retires (ef)
1020437341011410114101193035710119102201022010013100
1020437151011310113101183035410118102201021610012100
1020437141011310113101183035110117102201022010013100
1020437081011310113101183035710119102201022010013100
1020437111011310113101183035110117102201022010013100
1020437071011210112101163035110117102201022010013100
1020437071011210112101163047510157102601022010013100
1020437161011310113101183035410118102201022010015100
1020437201011510115101193035110117102201022010013100
1020437081011210112101173035410118102201022010013100

1000 unrolls and 10 iterations

Result (median cycles for code): 0.3659

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)? int output thing (e9)? int retires (ef)
100243824100331003310038300681002010020100201001110
100243667100211002110020300781002010020100201001110
100243664100211002110020300741002010020100201001110
100243666100211002110020300741002010020100201001110
100243666100211002110020302271005710057100201001110
100243665100211002110020300731002010020100201001110
100243659100211002110020300601002010020100201001110
100243656100211002110020300751002010020100201001110
100243663100211002110020300861002010020100201001110
100243656100211002110020300661002010020100201001110