]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bpf, docs: Clarify that MOVSX is only for BPF_X not BPF_K
authorDave Thaler <dthaler1968@googlemail.com>
Thu, 18 Jan 2024 23:29:54 +0000 (15:29 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 23 Jan 2024 23:10:08 +0000 (15:10 -0800)
Per discussion on the mailing list at
https://mailarchive.ietf.org/arch/msg/bpf/uQiqhURdtxV_ZQOTgjCdm-seh74/
the MOVSX operation is only defined to support register extension.

The document didn't previously state this and incorrectly implied
that one could use an immediate value.

Signed-off-by: Dave Thaler <dthaler1968@gmail.com>
Acked-by: David Vernet <void@manifault.com>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20240118232954.27206-1-dthaler1968@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Documentation/bpf/standardization/instruction-set.rst

index eb0f234a800144972b574338a98e358e1520f63e..d17a96c6254fd731688fa82cd1bd7cbbcc33f54c 100644 (file)
@@ -317,7 +317,8 @@ The ``BPF_MOVSX`` instruction does a move operation with sign extension.
 ``BPF_ALU | BPF_MOVSX`` :term:`sign extends<Sign Extend>` 8-bit and 16-bit operands into 32
 bit operands, and zeroes the remaining upper 32 bits.
 ``BPF_ALU64 | BPF_MOVSX`` :term:`sign extends<Sign Extend>` 8-bit, 16-bit, and 32-bit
-operands into 64 bit operands.
+operands into 64 bit operands.  Unlike other arithmetic instructions,
+``BPF_MOVSX`` is only defined for register source operands (``BPF_X``).
 
 Shift operations use a mask of 0x3F (63) for 64-bit operations and 0x1F (31)
 for 32-bit operations.