@@ -12478,7 +12478,7 @@ Vs <<x86-jcc-instructions,Jcc>>: https://stackoverflow.com/questions/6805692/x86
12478
12478
12479
12479
=== x86 miscellaneous instructions
12480
12480
12481
- <<intel-manual-1>> 7.3.16 "Miscellaneous Instructions"
12481
+ <<intel-manual-1>> 5.1.13 "Miscellaneous Instructions"
12482
12482
12483
12483
==== x86 NOP instruction
12484
12484
@@ -12506,6 +12506,41 @@ Generated some polemic when kernel devs wanted to use it as part of `/dev/random
12506
12506
12507
12507
RDRAND sets the carry flag when data is ready so we must loop if the carry flag isn't set.
12508
12508
12509
+ === x86 x87 FPU instructions
12510
+
12511
+ <<intel-manual-1>> 5.2 "X87 FPU INSTRUCTIONS"
12512
+
12513
+ Old floating point unit that you should likely not use anymore, prefer instead the newer <<x86-simd>> instructions.
12514
+
12515
+ === x86 SIMD
12516
+
12517
+ History:
12518
+
12519
+ * link:https://en.wikipedia.org/wiki/MMX_(instruction_set)[MMX]: MultiMedia eXtension (unofficial name). 1997. MM0-MM7 64-bit registers.
12520
+ * link:https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions[SSE]: Streaming SIMD Extensions. 1999. XMM0-XMM7 128-bit registers, XMM0-XMM15 for AMD in 64-bit mode.
12521
+ * link:https://en.wikipedia.org/wiki/SSE2[SSE2]: 2004
12522
+ * link:https://en.wikipedia.org/wiki/SSE3[SSE3]: 2006
12523
+ * link:https://en.wikipedia.org/wiki/SSE4[SSE4]: 2006
12524
+ * link:https://en.wikipedia.org/wiki/Advanced_Vector_Extensions[AVX]: Advanced Vector Extensions. 2011. YMM0–YMM15 256-bit registers in 64-bit mode. Extension of XMM.
12525
+ * AVX2:2013
12526
+ * AVX-512: 2016. 512-bit ZMM registers. Extension of YMM.
12527
+
12528
+ ==== x86 SSE2 instructions
12529
+
12530
+ <<intel-manual-1>> 5.6 "SSE2 INSTRUCTIONS"
12531
+
12532
+ ===== x86 ADDPD instruction
12533
+
12534
+ link:userland/arch/x86_64/addpd.S[]: ADDPS, ADDPD
12535
+
12536
+ Good first instruction to learn SIMD: <<simd-assembly>>
12537
+
12538
+ ===== x86 PADDQ instruction
12539
+
12540
+ link:userland/arch/x86_64/paddq.S[]: PADDQ, PADDL, PADDW, PADDB
12541
+
12542
+ Good first instruction to learn SIMD: <<simd-assembly>>
12543
+
12509
12544
=== x86 system instructions
12510
12545
12511
12546
<<intel-manual-1>> 5.20 "SYSTEM INSTRUCTIONS"
@@ -12585,33 +12620,6 @@ TODO We didn't manage to find a working ARM analogue to <<x86-rdtsc-instruction>
12585
12620
* https://stackoverflow.com/questions/31620375/arm-cortex-a7-returning-pmccntr-0-in-kernel-mode-and-illegal-instruction-in-u/31649809#31649809
12586
12621
* https://blog.regehr.org/archives/794
12587
12622
12588
- === x86 SIMD
12589
-
12590
- History:
12591
-
12592
- * link:https://en.wikipedia.org/wiki/MMX_(instruction_set)[MMX]: MultiMedia eXtension (unofficial name). 1997. MM0-MM7 64-bit registers.
12593
- * link:https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions[SSE]: Streaming SIMD Extensions. 1999. XMM0-XMM7 128-bit registers, XMM0-XMM15 for AMD in 64-bit mode.
12594
- * link:https://en.wikipedia.org/wiki/SSE2[SSE2]: 2004
12595
- * link:https://en.wikipedia.org/wiki/SSE3[SSE3]: 2006
12596
- * link:https://en.wikipedia.org/wiki/SSE4[SSE4]: 2006
12597
- * link:https://en.wikipedia.org/wiki/Advanced_Vector_Extensions[AVX]: Advanced Vector Extensions. 2011. YMM0–YMM15 256-bit registers in 64-bit mode. Extension of XMM.
12598
- * AVX2:2013
12599
- * AVX-512: 2016. 512-bit ZMM registers. Extension of YMM.
12600
-
12601
- ==== x86 SSE2
12602
-
12603
- ===== x86 ADDPD instruction
12604
-
12605
- link:userland/arch/x86_64/addpd.S[]: ADDPS, ADDPD
12606
-
12607
- Good first instruction to learn SIMD: <<simd-assembly>>
12608
-
12609
- ===== x86 PADDQ instruction
12610
-
12611
- link:userland/arch/x86_64/paddq.S[]: PADDQ, PADDL, PADDW, PADDB
12612
-
12613
- Good first instruction to learn SIMD: <<simd-assembly>>
12614
-
12615
12623
=== x86 assembly bibliography
12616
12624
12617
12625
==== x86 official bibliography
0 commit comments