RDRAND (R32)
Summary:
"Read Random Number"
Reference:
https://www.felixcloutier.com/x86/rdrand
Extension:
RDRAND
Category:
RDRAND
ISA-Set:
RDRAND
CPL:
3
iform:
RDRAND_GPRv
iclass:
RDRAND
ASM:
RDRAND
Operands
Operand 1 (w): Register (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D, R9D, R10D, R11D, R12D, R13D, R14D, R15D)
Operand 2 (w, suppressed): Flags (AF: w, CF: w, OF: w, PF: w, SF: w, ZF: w)
Available performance data
Arrow Lake-P
Arrow Lake-E
Meteor Lake-P
Meteor Lake-E
Emerald Rapids
Alder Lake-P
Alder Lake-E
Rocket Lake
Tiger Lake
Ice Lake
Cascade Lake
Cannon Lake
Skylake-X
Coffee Lake
Kaby Lake
Skylake
Broadwell
Haswell
Ivy Bridge
Tremont
Goldmont Plus
Goldmont
Airmont
AMD Zen 5
AMD Zen 4
AMD Zen 3
AMD Zen 2
AMD Zen+
Arrow Lake-P
Measurements
Throughput
Computed from the port usage: 2.67
Measured (loop):
1579.55
Measured (unrolled):
1572.47
Number of μops
Executed: 9
Retire slots: 13
Decoded (MITE): 1
Microcode Sequencer (MS): 14
Requires the complex decoder (8 other instructions can be decoded with simple decoders in the same cycle)
Port usage:
13*ALU+1*JMP+1*LD+1*SHIFT+1*SLOW
Arrow Lake-E
Measurements
Throughput
Measured (loop):
1566.33
Measured (unrolled):
1473.57
Number of μops
Executed: 13
Microcode Sequencer (MS): 13
Requires the complex decoder
Meteor Lake-P
Measurements
Throughput
Computed from the port usage: 7.00
Measured (loop):
1841.98
Measured (unrolled):
1841.47
Number of μops
Executed: 21
Retire slots: 24
Decoded (MITE): 0
Microcode Sequencer (MS): 21
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
2*p0+3*p0156B+2*p056+5*p06+7*p1+3*p15+1*p23A+2*p5
Meteor Lake-E
Measurements
Throughput
Measured (loop):
1457.15
Measured (unrolled):
1443.30
Number of μops
Executed: 12
Microcode Sequencer (MS): 11
Requires the complex decoder
Emerald Rapids
Measurements
Throughput
Computed from the port usage: 7.00
Measured (loop):
118.12
Measured (unrolled):
113.63
Number of μops
Executed: 21
Retire slots: 24
Decoded (MITE): 0
Microcode Sequencer (MS): 24
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
2*p0+3*p0156B+2*p056+5*p06+7*p1+3*p15+1*p23A+2*p5
Alder Lake-P
Measurements
Throughput
Computed from the port usage: 7.00
Measured (loop):
1379.67
Measured (unrolled):
1347.40
Number of μops
Executed: 21
Retire slots: 24
Decoded (MITE): 0
Microcode Sequencer (MS): 24
Requires the complex decoder (6 other instructions can be decoded with simple decoders in the same cycle)
Port usage:
2*p0+4*p0156B+2*p056+5*p06+7*p1+2*p15+1*p23A+2*p5
Alder Lake-E
Measurements
Throughput
Measured (loop):
1394.57
Measured (unrolled):
1224.52
Number of μops
Executed: 19
Microcode Sequencer (MS): 18
Requires the complex decoder
Rocket Lake
Measurements
Throughput
Computed from the port usage: 7.75
Measured (loop):
1425.47
Measured (unrolled):
1425.35
Number of μops
Executed: 32
Retire slots: 34
Decoded (MITE): 0
Microcode Sequencer (MS): 34
Requires the complex decoder (4 other instructions can be decoded with simple decoders in the same cycle)
Port usage:
2*p0+4*p015+4*p0156+11*p06+7*p1+3*p5+1*p78
Tiger Lake
Measurements
Throughput
Computed from the port usage: 14.25
Measured (loop):
13599.08
Measured (unrolled):
13825.83
Number of μops
Executed: 80
Retire slots: 64
Decoded (MITE): 0
Microcode Sequencer (MS): 91
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
4*p0+5*p015+2*p0156+24*p06+13*p1+1*p23+9*p49+9*p5+12*p78
Ice Lake
Measurements
Throughput
Computed from the port usage: 18.00
Measured (loop):
1548.83
Measured (unrolled):
1548.80
Number of μops
Executed: 56
Retire slots: 54
Decoded (MITE): 0
Microcode Sequencer (MS): 62
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
9*p0+1*p01+17*p06+18*p1+10*p5+1*p78
Cascade Lake
Measurements
Throughput
Computed from the port usage: 4.00
Measured (loop):
582.45
Measured (unrolled):
608.35
Number of μops
Executed: 16
Retire slots: 16
Decoded (MITE): 0
Microcode Sequencer (MS): 16
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
3*p015+1*p0156+8*p06+2*p1+1*p23
Cannon Lake
Measurements
Throughput
Computed from the port usage: 2.75
Measured (loop):
908.63
Measured (unrolled):
905.77
Number of μops
Executed: 12
Retire slots: 14
Decoded (MITE): 0
Microcode Sequencer (MS): 14
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
1*p015+3*p0156+5*p06+2*p1+1*p23
Skylake-X
Measurements
Throughput
Computed from the port usage: 4.50
Measured (loop):
574.10
Measured (unrolled):
573.93
Number of μops
Executed: 16
Retire slots: 16
Decoded (MITE): 0
Microcode Sequencer (MS): 16
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
3*p015+1*p0156+9*p06+2*p1+1*p23
Coffee Lake
Measurements
Throughput
Computed from the port usage: 1871.50
Measured (loop):
5717.48
Measured (unrolled):
5720.27
Number of μops
Executed: 8459
Retire slots: 8416
Decoded (MITE): 0
Microcode Sequencer (MS): 8535
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
1805*p0+1*p01+2*p015+2*p05+1938*p06+1783*p1+1162*p23+12*p237+17*p4+1742*p5
Kaby Lake
Measurements
Throughput
Computed from the port usage: 3202.00
Measured (loop):
7243.13
Measured (unrolled):
7391.15
Number of μops
Executed: 14407
Retire slots: 14350
Decoded (MITE): 0
Microcode Sequencer (MS): 14526
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
3113*p0+3291*p06+3003*p1+8*p15+1997*p23+17*p4+2979*p5
Skylake
Measurements
Throughput
Computed from the port usage: 2460.50
Measured (loop):
6161.40
Measured (unrolled):
6160.05
Number of μops
Executed: 11108
Retire slots: 11045
Decoded (MITE): 0
Microcode Sequencer (MS): 11215
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
2383*p0+2*p01+2*p015+2538*p06+2329*p1+1533*p23+10*p237+18*p4+2294*p5
Broadwell
Measurements
Throughput
Computed from the port usage: 20.00
Measured (loop):
9223372036854775808.00
Measured (unrolled):
2087.07
Number of μops
Executed: 75
Retire slots: 58
Decoded (MITE): 0
Microcode Sequencer (MS): 103
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
3*p0+35*p06+20*p1+7*p4+15*p5
IACA 2.3
Throughput
Computed from the port usage: 1.00
IACA:
8.57
Number of μops:
5
Port usage:
3*p0156+1*p06+1*p23
IACA 3.0
Throughput
Computed from the port usage: 1.00
IACA:
0.97
Number of μops:
5
Port usage:
3*p0156+1*p06+1*p23
Haswell
Measurements
Throughput
Computed from the port usage: 20.00
Measured (loop):
9223372036854775808.00
Measured (unrolled):
2379.28
Number of μops
Executed: 73
Retire slots: 58
Decoded (MITE): 0
Microcode Sequencer (MS): 98
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
4*p0+36*p06+18*p1+7*p4+15*p5
Ivy Bridge
Measurements
Throughput
Computed from the port usage: 4.00
Measured (loop):
9223372036854775808.00
Measured (unrolled):
110.33
Number of μops
Executed: 13
Retire slots: 13
Decoded (MITE): 0
Microcode Sequencer (MS): 13
Requires the complex decoder (no other instruction can be decoded with simple decoders in the same cycle)
Port usage:
7*p015+1*p05+2*p1+1*p23+2*p5
Tremont
Measurements
Throughput
Measured (loop):
9223372036854775808.00
Measured (unrolled):
3548.63
Number of μops
Executed: 58
Microcode Sequencer (MS): 58
Requires the complex decoder
Goldmont Plus
Measurements
Throughput
Measured (loop):
9223372036854775808.00
Measured (unrolled):
1938.12
Number of μops
Executed: 16
Microcode Sequencer (MS): 16
Requires the complex decoder
Goldmont
Measurements
Throughput
Measured (loop):
9223372036854775808.00
Measured (unrolled):
3208.67
Number of μops
Executed: 17
Microcode Sequencer (MS): 17
Requires the complex decoder
Airmont
Measurements
Throughput
Measured (loop):
9223372036854775808.00
Measured (unrolled):
1345.47
Number of μops
Executed: 15
Microcode Sequencer (MS): 15
Requires the complex decoder
AMD Zen 5
Measurements
Throughput
Computed from the port usage: 7.50
Measured (loop):
67.40
Measured (unrolled):
67.00
Number of μops
Executed: 56
Port usage:
14*FP01+8*FP03+8*FP12+2*FP45
Documentation
Latency: NA
Throughput: NA
Number of μops: ucode
Port usage: ucode
AMD Zen 4
Measurements
Throughput
Computed from the port usage: 7.33
Measured (loop):
65.33
Measured (unrolled):
65.00
Number of μops
Executed: 58
Port usage:
14*FP01+8*FP12+1*FP23+2*FP45
Documentation
Latency: variable
Throughput: variable
Number of μops: ucode
AMD Zen 3
Measurements
Throughput
Computed from the port usage: 7.00
Measured (loop):
72.27
Measured (unrolled):
72.00
Number of μops
Executed: 55
Port usage:
7*FP01+7*FP03+7*FP1+1*FP12+1*FP23+2*FP45
Documentation
Latency: variable
Throughput: variable
Number of μops: ucode
AMD Zen 2
Measurements
Throughput
Measured (loop):
1806.80
Measured (unrolled):
1805.00
Number of μops
Executed: 11
Documentation
Latency: variable
Throughput: variable
Number of μops: ucode
AMD Zen+
Measurements
Throughput
Measured (loop):
1289.85
Measured (unrolled):
1290.72
Number of μops
Executed: 13
Documentation
Latency: variable
Throughput: variable
Number of μops: ucode