€•Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ7/translations/zh_CN/bpf/standardization/instruction-set”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/zh_TW/bpf/standardization/instruction-set”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/it_IT/bpf/standardization/instruction-set”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ja_JP/bpf/standardization/instruction-set”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/ko_KR/bpf/standardization/instruction-set”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/pt_BR/bpf/standardization/instruction-set”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ7/translations/sp_SP/bpf/standardization/instruction-set”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒtopic”“”)�”}”(hŒ Contents ”h]”(hŒtitle”“”)�”}”(hŒContents”h]”hŒContents”…”�”}”(hh½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»hh·h³ŒQ/var/lib/git/docbuild/linux/Documentation/bpf/standardization/instruction-set.rst”h´KubhŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hhh]”(hŒ paragraph”“”)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”(hŒ generated”“”)�”}”(hhh]”hŒ1   ”…”�”}”(hhâh²hh³Nh´Nubah}”(h]”h ]”Œsectnum”ah"]”h$]”h&]”uh1hàh³Nh´NhhÝubhŒ&BPF Instruction Set Architecture (ISA)”…”�”}”(hhÝh²hh³Nh´Nubeh}”(h]”Œid13”ah ]”h"]”h$]”h&]”Œrefid”Œ$bpf-instruction-set-architecture-isa”uh1hÛhhØubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhhÓubhÍ)�”}”(hhh]”(hÒ)�”}”(hhh]”(h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.1   ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj ubhŒDocumentation conventions”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”Œid14”ah ]”h"]”h$]”h&]”Œrefid”Œdocumentation-conventions”uh1hÛhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjubhÍ)�”}”(hhh]”(hÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.1.1   ”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj8ubhŒTypes”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”Œid15”ah ]”h"]”h$]”h&]”Œrefid”Œtypes”uh1hÛhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj/ubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.1.2   ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjgubhŒ Functions”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”Œid16”ah ]”h"]”h$]”h&]”Œrefid”Œ functions”uh1hÛhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj/ubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.1.3   ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj–ubhŒ Definitions”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”Œid17”ah ]”h"]”h$]”h&]”Œrefid”Œ definitions”uh1hÛhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj/ubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.1.4   ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjÅubhŒConformance groups”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”Œid18”ah ]”h"]”h$]”h&]”Œrefid”Œconformance-groups”uh1hÛhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj/ubeh}”(h]”h ]”Œauto-toc”ah"]”h$]”h&]”uh1hÌhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubhÒ)�”}”(hhh]”(h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.2   ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjubhŒInstruction encoding”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”Œid19”ah ]”h"]”h$]”h&]”Œrefid”Œinstruction-encoding”uh1hÛhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjûubhÍ)�”}”(hhh]”(hÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.2.1   ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj-ubhŒBasic instruction encoding”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”Œid20”ah ]”h"]”h$]”h&]”Œrefid”Œbasic-instruction-encoding”uh1hÛhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj$ubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.2.2   ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj\ubhŒWide instruction encoding”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”Œid21”ah ]”h"]”h$]”h&]”Œrefid”Œwide-instruction-encoding”uh1hÛhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj$ubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.2.3   ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj‹ubhŒInstruction classes”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”Œid22”ah ]”h"]”h$]”h&]”Œrefid”Œinstruction-classes”uh1hÛhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj$ubeh}”(h]”h ]”jñah"]”h$]”h&]”uh1hÌhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubhÒ)�”}”(hhh]”(h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.3   ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjÆubhŒ Arithmetic and jump instructions”…”�”}”(hjÆh²hh³Nh´Nubeh}”(h]”Œid23”ah ]”h"]”h$]”h&]”Œrefid”Œ arithmetic-and-jump-instructions”uh1hÛhjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjÀubhÍ)�”}”(hhh]”(hÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.3.1   ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjòubhŒArithmetic instructions”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”Œid24”ah ]”h"]”h$]”h&]”Œrefid”Œarithmetic-instructions”uh1hÛhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjéubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.3.2   ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj!ubhŒByte swap instructions”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”Œid25”ah ]”h"]”h$]”h&]”Œrefid”Œbyte-swap-instructions”uh1hÛhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjéubhÒ)�”}”(hhh]”(h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.3.3   ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjPubhŒJump instructions”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”Œid26”ah ]”h"]”h$]”h&]”Œrefid”Œjump-instructions”uh1hÛhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjJubhÍ)�”}”(hhh]”(hÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.3.3.1   ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj|ubhŒHelper functions”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”Œid27”ah ]”h"]”h$]”h&]”Œrefid”Œhelper-functions”uh1hÛhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjsubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.3.3.2   ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj«ubhŒProgram-local functions”…”�”}”(hj«h²hh³Nh´Nubeh}”(h]”Œid28”ah ]”h"]”h$]”h&]”Œrefid”Œprogram-local-functions”uh1hÛhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjsubeh}”(h]”h ]”jñah"]”h$]”h&]”uh1hÌhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjéubeh}”(h]”h ]”jñah"]”h$]”h&]”uh1hÌhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubhÒ)�”}”(hhh]”(h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4   ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjòubhŒLoad and store instructions”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”Œid29”ah ]”h"]”h$]”h&]”Œrefid”Œload-and-store-instructions”uh1hÛhjïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjìubhÍ)�”}”(hhh]”(hÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4.1   ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjubhŒ!Regular load and store operations”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”Œid30”ah ]”h"]”h$]”h&]”Œrefid”Œ!regular-load-and-store-operations”uh1hÛhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4.2   ”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjMubhŒSign-extension load operations”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”Œid31”ah ]”h"]”h$]”h&]”Œrefid”Œsign-extension-load-operations”uh1hÛhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4.3   ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj|ubhŒAtomic operations”…”�”}”(hj|h²hh³Nh´Nubeh}”(h]”Œid32”ah ]”h"]”h$]”h&]”Œrefid”Œatomic-operations”uh1hÛhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubhÒ)�”}”(hhh]”(h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4.4   ”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj«ubhŒ64-bit immediate instructions”…”�”}”(hj«h²hh³Nh´Nubeh}”(h]”Œid33”ah ]”h"]”h$]”h&]”Œrefid”Œbit-immediate-instructions”uh1hÛhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj¥ubhÍ)�”}”(hhh]”(hÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4.4.1   ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´Nhj×ubhŒMaps”…”�”}”(hj×h²hh³Nh´Nubeh}”(h]”Œid34”ah ]”h"]”h$]”h&]”Œrefid”Œmaps”uh1hÛhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjÎubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4.4.2   ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjubhŒPlatform Variables”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”Œid35”ah ]”h"]”h$]”h&]”Œrefid”Œplatform-variables”uh1hÛhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjÎubeh}”(h]”h ]”jñah"]”h$]”h&]”uh1hÌhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubhÒ)�”}”(hhh]”h×)�”}”(hhh]”hÜ)�”}”(hhh]”(há)�”}”(hhh]”hŒ 1.4.5   ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàh³Nh´NhjAubhŒ%Legacy BPF Packet access instructions”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”Œid36”ah ]”h"]”h$]”h&]”Œrefid”Œ%legacy-bpf-packet-access-instructions”uh1hÛhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubeh}”(h]”h ]”jñah"]”h$]”h&]”uh1hÌhjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjubeh}”(h]”h ]”jñah"]”h$]”h&]”uh1hÌhhÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÑhhÎubah}”(h]”h ]”jñah"]”h$]”h&]”uh1hÌhh·h²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1hµh³hËh´Khhh²hubhŒsection”“”)�”}”(hhh]”(h¼)�”}”(hŒ&BPF Instruction Set Architecture (ISA)”h]”(há)�”}”(hhh]”hŒ1   ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj–h²hh³Nh´NubhŒ&BPF Instruction Set Architecture (ISA)”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œauto”KŒrefid”höuh1h»hj“h²hh³hËh´Kubh×)�”}”(hŒøeBPF, also commonly referred to as BPF, is a technology with origins in the Linux kernel that can run untrusted programs in a privileged context such as an operating system kernel. This document specifies the BPF instruction set architecture (ISA).”h]”hŒøeBPF, also commonly referred to as BPF, is a technology with origins in the Linux kernel that can run untrusted programs in a privileged context such as an operating system kernel. This document specifies the BPF instruction set architecture (ISA).”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Khj“h²hubh×)�”}”(hXsAs a historical note, BPF originally stood for Berkeley Packet Filter, but now that it can do so much more than packet filtering, the acronym no longer makes sense. BPF is now considered a standalone term that does not stand for anything. The original BPF is sometimes referred to as cBPF (classic BPF) to distinguish it from the now widely deployed eBPF (extended BPF).”h]”hXsAs a historical note, BPF originally stood for Berkeley Packet Filter, but now that it can do so much more than packet filtering, the acronym no longer makes sense. BPF is now considered a standalone term that does not stand for anything. The original BPF is sometimes referred to as cBPF (classic BPF) to distinguish it from the now widely deployed eBPF (extended BPF).”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Khj“h²hubj’)�”}”(hhh]”(h¼)�”}”(hŒDocumentation conventions”h]”(há)�”}”(hhh]”hŒ 1.1   ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhjÒh²hh³Nh´NubhŒDocumentation conventions”…”�”}”(hjÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²j"uh1h»hjÏh²hh³hËh´Kubh×)�”}”(hXlThe key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 ``_ ``_ when, and only when, they appear in all capitals, as shown here.”h]”(hŒþThe key words “MUSTâ€�, “MUST NOTâ€�, “REQUIREDâ€�, “SHALLâ€�, “SHALL NOTâ€�, “SHOULDâ€�, “SHOULD NOTâ€�, “RECOMMENDEDâ€�, “NOT RECOMMENDEDâ€�, “MAYâ€�, and “OPTIONALâ€� in this document are to be interpreted as described in BCP 14 ”…”�”}”(hjíh²hh³Nh´NubhÜ)�”}”(hŒ,``_”h]”hŒ'https://www.rfc-editor.org/info/rfc2119”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ'https://www.rfc-editor.org/info/rfc2119”Œrefuri”juh1hÛhjíubhŒtarget”“”)�”}”(hŒ)”h]”h}”(h]”Œ%https-www-rfc-editor-org-info-rfc2119”ah ]”h"]”Œ'https://www.rfc-editor.org/info/rfc2119”ah$]”h&]”Œrefuri”juh1jŒ referenced”KhjíubhŒ ”…”�”}”(hjíh²hh³Nh´NubhÜ)�”}”(hŒ,``_”h]”hŒ'https://www.rfc-editor.org/info/rfc8174”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ'https://www.rfc-editor.org/info/rfc8174”jj)uh1hÛhjíubj)�”}”(hŒ)”h]”h}”(h]”Œ%https-www-rfc-editor-org-info-rfc8174”ah ]”h"]”Œ'https://www.rfc-editor.org/info/rfc8174”ah$]”h&]”Œrefuri”j)uh1jjKhjíubhŒA when, and only when, they appear in all capitals, as shown here.”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KhjÏh²hubh×)�”}”(hX<For brevity and consistency, this document refers to families of types using a shorthand syntax and refers to several expository, mnemonic functions when describing the semantics of instructions. The range of valid values for those types and the semantics of those functions are defined in the following subsections.”h]”hX<For brevity and consistency, this document refers to families of types using a shorthand syntax and refers to several expository, mnemonic functions when describing the semantics of instructions. The range of valid values for those types and the semantics of those functions are defined in the following subsections.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KhjÏh²hubj’)�”}”(hhh]”(h¼)�”}”(hŒTypes”h]”(há)�”}”(hhh]”hŒ 1.1.1   ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhjRh²hh³Nh´NubhŒTypes”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jNuh1h»hjOh²hh³hËh´K&ubh×)�”}”(hŒ„This document refers to integer types with the notation `SN` to specify a type's signedness (`S`) and bit width (`N`), respectively.”h]”(hŒ8This document refers to integer types with the notation ”…”�”}”(hjmh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ`SN`”h]”hŒSN”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjmubhŒ# to specify a type’s signedness (”…”�”}”(hjmh²hh³Nh´Nubjv)�”}”(hŒ`S`”h]”hŒS”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjmubhŒ) and bit width (”…”�”}”(hjmh²hh³Nh´Nubjv)�”}”(hŒ`N`”h]”hŒN”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhjmubhŒ), respectively.”…”�”}”(hjmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K'hjOh²hubhŒtable”“”)�”}”(hhh]”(h¼)�”}”(hŒMeaning of signedness notation”h]”hŒMeaning of signedness notation”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´K*hjµubhŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjÈubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jËhjÈubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”h×)�”}”(hŒS”h]”hŒS”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K-hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjèubjì)�”}”(hhh]”h×)�”}”(hŒMeaning”h]”hŒMeaning”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K-hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjÈubhŒtbody”“”)�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒu”h]”hŒu”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K/hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj,ubjì)�”}”(hhh]”h×)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K/hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj)ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒs”h]”hŒs”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K0hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjcubjì)�”}”(hhh]”h×)�”}”(hŒsigned”h]”hŒsigned”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K0hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hjÈubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhjµubeh}”(h]”Œid1”ah ]”h"]”h$]”h&]”uh1j³hjOh²hh³hËh´Nubj´)�”}”(hhh]”(h¼)�”}”(hŒMeaning of bit-width notation”h]”hŒMeaning of bit-width notation”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´K3hj®ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj¿ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jËhj¿ubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒN”h]”hŒN”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K6hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÙubjì)�”}”(hhh]”h×)�”}”(hŒ Bit width”h]”hŒ Bit width”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K6hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¿ubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ8”h]”hŒ8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ8 bits”h]”hŒ8 bits”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K8hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ16”h]”hŒ16”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K9hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjPubjì)�”}”(hhh]”h×)�”}”(hŒ16 bits”h]”hŒ16 bits”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K9hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ32”h]”hŒ32”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K:hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj‡ubjì)�”}”(hhh]”h×)�”}”(hŒ32 bits”h]”hŒ32 bits”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K:hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ64”h]”hŒ64”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K;hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¾ubjì)�”}”(hhh]”h×)�”}”(hŒ64 bits”h]”hŒ64 bits”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K;hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ128”h]”hŒ128”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K`_) byte order.”h]”h×)�”}”(hŒ be16: Takes an unsigned 16-bit number and converts it between host byte order and big-endian (`IEN137 `_) byte order.”h]”(hŒ^be16: Takes an unsigned 16-bit number and converts it between host byte order and big-endian (”…”�”}”(hj¬ h²hh³Nh´NubhÜ)�”}”(hŒ5`IEN137 `_”h]”hŒIEN137”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒIEN137”jŒ)https://www.rfc-editor.org/ien/ien137.txt”uh1hÛhj¬ ubj)�”}”(hŒ, ”h]”h}”(h]”Œien137”ah ]”h"]”Œien137”ah$]”h&]”Œrefuri”jÄ uh1jjKhj¬ ubhŒ ) byte order.”…”�”}”(hj¬ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KJhj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒhbe32: Takes an unsigned 32-bit number and converts it between host byte order and big-endian byte order.”h]”h×)�”}”(hŒhbe32: Takes an unsigned 32-bit number and converts it between host byte order and big-endian byte order.”h]”hŒhbe32: Takes an unsigned 32-bit number and converts it between host byte order and big-endian byte order.”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KMhjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒhbe64: Takes an unsigned 64-bit number and converts it between host byte order and big-endian byte order.”h]”h×)�”}”(hŒhbe64: Takes an unsigned 64-bit number and converts it between host byte order and big-endian byte order.”h]”hŒhbe64: Takes an unsigned 64-bit number and converts it between host byte order and big-endian byte order.”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KOhjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒ¢bswap16: Takes an unsigned 16-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”h]”h×)�”}”(hŒ¢bswap16: Takes an unsigned 16-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”h]”hŒ¢bswap16: Takes an unsigned 16-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KQhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒ¢bswap32: Takes an unsigned 32-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”h]”h×)�”}”(hŒ¢bswap32: Takes an unsigned 32-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”h]”hŒ¢bswap32: Takes an unsigned 32-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KThj* ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒ¢bswap64: Takes an unsigned 64-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”h]”h×)�”}”(hŒ¢bswap64: Takes an unsigned 64-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”h]”hŒ¢bswap64: Takes an unsigned 64-bit number in either big- or little-endian format and returns the equivalent number with the same bit width but opposite endianness.”…”�”}”(hjF h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KWhjB ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒkle16: Takes an unsigned 16-bit number and converts it between host byte order and little-endian byte order.”h]”h×)�”}”(hŒkle16: Takes an unsigned 16-bit number and converts it between host byte order and little-endian byte order.”h]”hŒkle16: Takes an unsigned 16-bit number and converts it between host byte order and little-endian byte order.”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´KZhjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒkle32: Takes an unsigned 32-bit number and converts it between host byte order and little-endian byte order.”h]”h×)�”}”(hŒkle32: Takes an unsigned 32-bit number and converts it between host byte order and little-endian byte order.”h]”hŒkle32: Takes an unsigned 32-bit number and converts it between host byte order and little-endian byte order.”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K\hjr ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´NubhÒ)�”}”(hŒlle64: Takes an unsigned 64-bit number and converts it between host byte order and little-endian byte order. ”h]”h×)�”}”(hŒkle64: Takes an unsigned 64-bit number and converts it between host byte order and little-endian byte order.”h]”hŒkle64: Takes an unsigned 64-bit number and converts it between host byte order and little-endian byte order.”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´K^hjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj¥ h²hh³hËh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1hÌh³hËh´KJhjy h²hubeh}”(h]”jƒah ]”h"]”Œ functions”ah$]”h&]”uh1j‘hjÏh²hh³hËh´KDubj’)�”}”(hhh]”(h¼)�”}”(hŒ Definitions”h]”(há)�”}”(hhh]”hŒ 1.1.3   ”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj´ h²hh³Nh´NubhŒ Definitions”…”�”}”(hj´ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²j¬uh1h»hj± h²hh³hËh´KbubhŒglossary”“”)�”}”(hhh]”hŒdefinition_list”“”)�”}”(hhh]”hŒdefinition_list_item”“”)�”}”(hhh]”(hŒterm”“”)�”}”(hŒ Sign Extend”h]”(hŒ Sign Extend”…”�”}”(hjà h²hh³Nh´NubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ Sign Extend”Œterm-Sign-Extend”Œmain”Nt”auh1jè h³hËh´Kehjà ubeh}”(h]”j÷ ah ]”h"]”h$]”h&]”uh1jÞ h³hËh´KehjÛ ubhŒ definition”“”)�”}”(hhh]”(h×)�”}”(hŒSTo `sign extend an` ``X`` `-bit number, A, to a` ``Y`` `-bit number, B ,` means to”h]”(hŒTo ”…”�”}”(hj h²hh³Nh´Nubjv)�”}”(hŒ`sign extend an`”h]”hŒsign extend an”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj ubhŒ ”…”�”}”(hj h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``X``”h]”hŒX”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ ”…”�”}”hj sbjv)�”}”(hŒ`-bit number, A, to a`”h]”hŒ-bit number, A, to a”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj ubhŒ ”…”�”}”hj sbj )�”}”(hŒ``Y``”h]”hŒY”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ubhŒ ”…”�”}”hj sbjv)�”}”(hŒ`-bit number, B ,`”h]”hŒ-bit number, B ,”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juhj ubhŒ means to”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Kghj ubhŒenumerated_list”“”)�”}”(hhh]”(hÒ)�”}”(hŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒLoad and store instructions”j²juh1hÛhj:ja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj|ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒST”h]”hŒST”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubjì)�”}”(hhh]”h×)�”}”(hŒ0x2”h]”hŒ0x2”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubjì)�”}”(hhh]”h×)�”}”(hŒstore from immediate operations”h]”hŒstore from immediate operations”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubjì)�”}”(hhh]”h×)�”}”(hŒ`Load and store instructions`_”h]”hÜ)�”}”(hj¬h]”hŒLoad and store instructions”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒLoad and store instructions”j²juh1hÛhjªja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj|ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒSTX”h]”hŒSTX”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubjì)�”}”(hhh]”h×)�”}”(hŒ0x3”h]”hŒ0x3”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubjì)�”}”(hhh]”h×)�”}”(hŒstore from register operations”h]”hŒstore from register operations”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubjì)�”}”(hhh]”h×)�”}”(hŒ`Load and store instructions`_”h]”hÜ)�”}”(hjh]”hŒLoad and store instructions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒLoad and store instructions”j²juh1hÛhjja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj|ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒALU”h]”hŒALU”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hŒ0x4”h]”hŒ0x4”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hŒ32-bit arithmetic operations”h]”hŒ32-bit arithmetic operations”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hŒ#`Arithmetic and jump instructions`_”h]”hÜ)�”}”(hjŒh]”hŒ Arithmetic and jump instructions”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ Arithmetic and jump instructions”j²jâuh1hÛhjŠja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj|ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJMP”h]”hŒJMP”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubjì)�”}”(hhh]”h×)�”}”(hŒ0x5”h]”hŒ0x5”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubjì)�”}”(hhh]”h×)�”}”(hŒ64-bit jump operations”h]”hŒ64-bit jump operations”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubjì)�”}”(hhh]”h×)�”}”(hŒ#`Arithmetic and jump instructions`_”h]”hÜ)�”}”(hjüh]”hŒ Arithmetic and jump instructions”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ Arithmetic and jump instructions”j²jâuh1hÛhjúja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj|ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJMP32”h]”hŒJMP32”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ0x6”h]”hŒ0x6”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ32-bit jump operations”h]”hŒ32-bit jump operations”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ#`Arithmetic and jump instructions`_”h]”hÜ)�”}”(hjlh]”hŒ Arithmetic and jump instructions”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ Arithmetic and jump instructions”j²jâuh1hÛhjjja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubeh}”(h]”h ]”h"]”h$]”h&]”u•h1jæhj|ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒALU64”h]”hŒALU64”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj�ubjì)�”}”(hhh]”h×)�”}”(hŒ0x7”h]”hŒ0x7”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj�ubjì)�”}”(hhh]”h×)�”}”(hŒ64-bit arithmetic operations”h]”hŒ64-bit arithmetic operations”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj�ubjì)�”}”(hhh]”h×)�”}”(hŒ#`Arithmetic and jump instructions`_”h]”hÜ)�”}”(hjÜh]”hŒ Arithmetic and jump instructions”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ Arithmetic and jump instructions”j²jâuh1hÛhjÚja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hjãubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhjÒubeh}”(h]”Œid3”ah ]”h"]”h$]”h&]”uh1j³hj¦h²hh³hËh´Nubeh}”(h]”j§ah ]”h"]”Œinstruction classes”ah$]”h&]”uh1j‘hjä h²hh³hËh´M jKubeh}”(h]”jah ]”h"]”Œinstruction encoding”ah$]”h&]”uh1j‘hj“h²hh³hËh´K–jKubj’)�”}”(hhh]”(h¼)�”}”(hŒ Arithmetic and jump instructions”h]”(há)�”}”(hhh]”hŒ 1.3   ”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj$h²hh³Nh´NubhŒ Arithmetic and jump instructions”…”�”}”(hj$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jÜuh1h»hj!h²hh³hËh´M ubh×)�”}”(hŒˆFor arithmetic and jump instructions (``ALU``, ``ALU64``, ``JMP`` and ``JMP32``), the 8-bit 'opcode' field is divided into three parts::”h]”(hŒ&For arithmetic and jump instructions (”…”�”}”(hj?h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?ubhŒ, ”…”�”}”(hj?h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?ubhŒ, ”…”�”}”hj?sbj )�”}”(hŒ``JMP``”h]”hŒJMP”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?ubhŒ and ”…”�”}”(hj?h²hh³Nh´Nubj )�”}”(hŒ ``JMP32``”h]”hŒJMP32”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?ubhŒ<), the 8-bit ‘opcode’ field is divided into three parts:”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M"hj!h²hubjž )�”}”(hŒ5+-+-+-+-+-+-+-+-+ | code |s|class| +-+-+-+-+-+-+-+-+”h]”hŒ5+-+-+-+-+-+-+-+-+ | code |s|class| +-+-+-+-+-+-+-+-+”…”�”}”hj•sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M%hj!h²hubjÕ )�”}”(hhh]”(jÚ )�”}”(hŒG**code** the operation code, whose meaning varies by instruction class ”h]”(jß )�”}”(hŒ**code**”h]”jŽ)�”}”(hj¬h]”hŒcode”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞ h³hËh´M*hj¦ubj )�”}”(hhh]”h×)�”}”(hŒ=the operation code, whose meaning varies by instruction class”h]”hŒ=the operation code, whose meaning varies by instruction class”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M*hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙ h³hËh´M*hj£ubjÚ )�”}”(hXÔ**s (source)** the source operand location, which unless otherwise specified is one of: .. table:: Source operand location ====== ===== ============================================== source value description ====== ===== ============================================== K 0 use 32-bit 'imm' value as source operand X 1 use 'src_reg' register value as source operand ====== ===== ============================================== ”h]”(jß )�”}”(hŒ**s (source)**”h]”jŽ)�”}”(hjäh]”hŒ s (source)”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞ h³hËh´M6hjÞubj )�”}”(hhh]”(h×)�”}”(hŒHthe source operand location, which unless otherwise specified is one of:”h]”hŒHthe source operand location, which unless otherwise specified is one of:”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M-hjùubj´)�”}”(hhh]”(h¼)�”}”(hŒSource operand location”h]”hŒSource operand location”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´M/hj ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K.uh1jËhjubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒsource”h]”hŒsource”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M2hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M2hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M2hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒK”h]”hŒK”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M4hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj–ubjì)�”}”(hhh]”h×)�”}”(hŒ0”h]”hŒ0”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M4hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj–ubjì)�”}”(hhh]”h×)�”}”(hŒ(use 32-bit 'imm' value as source operand”h]”hŒ,use 32-bit ‘imm’ value as source operand”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M4hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj“ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒX”h]”hŒX”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M5hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjäubjì)�”}”(hhh]”h×)�”}”(hŒ1”h]”hŒ1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M5hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjäubjì)�”}”(hhh]”h×)�”}”(hŒ.use 'src_reg' register value as source operand”h]”hŒ2use ‘src_reg’ register value as source operand”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M5hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhj ubeh}”(h]”Œid4”ah ]”h"]”h$]”h&]”uh1j³hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙ h³hËh´M6hj£h²hubjÚ )�”}”(hŒI**instruction class** the instruction class (see `Instruction classes`_) ”h]”(jß )�”}”(hŒ**instruction class**”h]”jŽ)�”}”(hjXh]”hŒinstruction class”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞ h³hËh´M9hjRubj )�”}”(hhh]”h×)�”}”(hŒ2the instruction class (see `Instruction classes`_)”h]”(hŒthe instruction class (see ”…”�”}”(hjph²hh³Nh´NubhÜ)�”}”(hŒ`Instruction classes`_”h]”hŒInstruction classes”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒInstruction classes”j²j§uh1hÛhjpja KubhŒ)”…”�”}”(hjph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M9hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙ h³hËh´M9hj£h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÔ hj!h²hh³hËh´Nubj’)�”}”(hhh]”(h¼)�”}”(hŒArithmetic instructions”h]”(há)�”}”(hhh]”hŒ 1.3.1   ”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj§h²hh³Nh´NubhŒArithmetic instructions”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²juh1h»hj¤h²hh³hËh´M<ubh×)�”}”(hX^``ALU`` uses 32-bit wide operands while ``ALU64`` uses 64-bit wide operands for otherwise identical operations. ``ALU64`` instructions belong to the base64 conformance group unless noted otherwise. The 'code' field encodes the operation as below, where 'src' refers to the the source operand and 'dst' refers to the value of the destination register.”h]”(j )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂubhŒ! uses 32-bit wide operands while ”…”�”}”(hjÂh²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂubhŒ? uses 64-bit wide operands for otherwise identical operations. ”…”�”}”(hjÂh²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂubhŒñ instructions belong to the base64 conformance group unless noted otherwise. The ‘code’ field encodes the operation as below, where ‘src’ refers to the the source operand and ‘dst’ refers to the value of the destination register.”…”�”}”(hjÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M>hj¤h²hubj´)�”}”(hhh]”(h¼)�”}”(hŒArithmetic instructions”h]”hŒArithmetic instructions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´MEhjubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”KSuh1jËhjubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒname”h]”hŒname”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MHhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjAubjì)�”}”(hhh]”h×)�”}”(hŒcode”h]”hŒcode”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MHhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjAubjì)�”}”(hhh]”h×)�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MHhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjAubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MHhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒADD”h]”hŒADD”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MJhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubjì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MJhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MJhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubjì)�”}”(hhh]”h×)�”}”(hŒ dst += src”h]”hŒ dst += src”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MJhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒSUB”h]”hŒSUB”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MKhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ0x1”h]”hŒ0x1”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MKhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MKhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ dst -= src”h]”hŒ dst -= src”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MKhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒMUL”h]”hŒMUL”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MLhjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjwubjì)�”}”(hhh]”h×)�”}”(hŒ0x2”h]”hŒ0x2”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MLhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjwubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MLhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjwubjì)�”}”(hhh]”h×)�”}”(hŒ dst \*= src”h]”hŒ dst *= src”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MLhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒDIV”h]”hŒDIV”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MMhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÛubjì)�”}”(hhh]”h×)�”}”(hŒ0x3”h]”hŒ0x3”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MMhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÛubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MMhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÛubjì)�”}”(hhh]”h×)�”}”(hŒ"dst = (src != 0) ? (dst / src) : 0”h]”hŒ"dst = (src != 0) ? (dst / src) : 0”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MMhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒSDIV”h]”hŒSDIV”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MNhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hŒ0x3”h]”hŒ0x3”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MNhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hjh]”hŒ1”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MNhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubjì)�”}”(hhh]”h×)�”}”(hŒSdst = (src == 0) ? 0 : ((src == -1 && dst == LLONG_MIN) ? LLONG_MIN : (dst s/ src))”h]”hŒSdst = (src == 0) ? 0 : ((src == -1 && dst == LLONG_MIN) ? LLONG_MIN : (dst s/ src))”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MNhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒOR”h]”hŒOR”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MOhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj£ubjì)�”}”(hhh]”h×)�”}”(hŒ0x4”h]”hŒ0x4”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MOhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj£ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MOhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj£ubjì)�”}”(hhh]”h×)�”}”(hŒ dst \|= src”h]”hŒ dst |= src”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MOhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒAND”h]”hŒAND”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MPhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ0x5”h]”hŒ0x5”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MPhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MPhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubjì)�”}”(hhh]”h×)�”}”(hŒ dst &= src”h]”hŒ dst &= src”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MPhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒLSH”h]”hŒLSH”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MQhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjkubjì)�”}”(hhh]”h×)�”}”(hŒ0x6”h]”hŒ0x6”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MQhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjkubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MQhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjkubjì)�”}”(hhh]”h×)�”}”(hŒdst <<= (src & mask)”h]”hŒdst <<= (src & mask)”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MQhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒRSH”h]”hŒRSH”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubjì)�”}”(hhh]”h×)�”}”(hŒ0x7”h]”hŒ0x7”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubjì)�”}”(hhh]”h×)�”}”(hŒdst >>= (src & mask)”h]”hŒdst >>= (src & mask)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒNEG”h]”hŒNEG”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MShj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj3ubjì)�”}”(hhh]”h×)�”}”(hŒ0x8”h]”hŒ0x8”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MShjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj3ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MShjdubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj3ubjì)�”}”(hhh]”h×)�”}”(hŒ dst = -dst”h]”hŒ dst = -dst”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MShjzubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒMOD”h]”hŒMOD”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj—ubjì)�”}”(hhh]”h×)�”}”(hŒ0x9”h]”hŒ0x9”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj—ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj—ubjì)�”}”(hhh]”h×)�”}”(hŒ$dst = (src != 0) ? (dst % src) : dst”h]”hŒ$dst = (src != 0) ? (dst % src) : dst”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒSMOD”h]”hŒSMOD”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjûubjì)�”}”(hhh]”h×)�”}”(hŒ0x9”h]”hŒ0x9”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjûubjì)�”}”(hhh]”h×)�”}”(hjh]”hŒ1”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjûubjì)�”}”(hhh]”h×)�”}”(hŒLdst = (src == 0) ? dst : ((src == -1 && dst == LLONG_MIN) ? 0: (dst s% src))”h]”hŒLdst = (src == 0) ? dst : ((src == -1 && dst == LLONG_MIN) ? 0: (dst s% src))”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒXOR”h]”hŒXOR”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubjì)�”}”(hhh]”h×)�”}”(hŒ0xa”h]”hŒ0xa”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubjì)�”}”(hhh]”h×)�”}”(hŒ dst ^= src”h]”hŒ dst ^= src”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒMOV”h]”hŒMOV”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÃubjì)�”}”(hhh]”h×)�”}”(hŒ0xb”h]”hŒ0xb”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÃubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÃubjì)�”}”(hhh]”h×)�”}”(hŒ dst = src”h]”hŒ dst = src”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒMOVSX”h]”hŒMOVSX”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhj* ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj' ubjì)�”}”(hhh]”h×)�”}”(hŒ0xb”h]”hŒ0xb”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhjA ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj' ubjì)�”}”(hhh]”h×)�”}”(hŒ8/16/32”h]”hŒ8/16/32”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj' ubjì)�”}”(hhh]”h×)�”}”(hŒdst = (s8,s16,s32)src”h]”hŒdst = (s8,s16,s32)src”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhjo ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj' ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒARSH”h]”hŒARSH”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ ubjì)�”}”(hhh]”h×)�”}”(hŒ0xc”h]”hŒ0xc”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhj½ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ ubjì)�”}”(hhh]”h×)�”}”(hŒ8:term:`sign extending` dst >>= (src & mask)”h]”(h)�”}”(hŒ#:term:`sign extending`”h]”hŒinline”“”)�”}”(hjÜ h]”hŒsign extending”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-term”eh"]”h$]”h&]”uh1jÞ hjÚ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ#bpf/standardization/instruction-set”Œ refdomain”jë Œreftype”Œterm”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ Sign Extend”uh1hh³hËh´MZhjÖ ubhŒ dst >>= (src & mask)”…”�”}”(hjÖ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhjÓ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒEND”h]”hŒEND”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MZhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj!ubjì)�”}”(hhh]”h×)�”}”(hŒ0xd”h]”hŒ0xd”…”�”}”(hj2!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MZhj/!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj!ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjI!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MZhjF!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj!ubjì)�”}”(hhh]”h×)�”}”(hŒ:byte swap operations (see `Byte swap instructions`_ below)”h]”(hŒbyte swap operations (see ”…”�”}”(hj_!h²hh³Nh´NubhÜ)�”}”(hŒ`Byte swap instructions`_”h]”hŒByte swap instructions”…”�”}”(hjg!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒByte swap instructions”j²j=uh1hÛhj_!ja KubhŒ below)”…”�”}”(hj_!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MZhj\!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hjubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhjubeh}”(h]”Œid5”ah ]”h"]”h$]”h&]”uh1j³hj¤h²hh³hËh´Nubh×)�”}”(hXåUnderflow and overflow are allowed during arithmetic operations, meaning the 64-bit or 32-bit value will wrap. If BPF program execution would result in division by zero, the destination register is instead set to zero. Otherwise, for ``ALU64``, if execution would result in ``LLONG_MIN`` divided by -1, the destination register is instead set to ``LLONG_MIN``. For ``ALU``, if execution would result in ``INT_MIN`` divided by -1, the destination register is instead set to ``INT_MIN``.”h]”(hŒêUnderflow and overflow are allowed during arithmetic operations, meaning the 64-bit or 32-bit value will wrap. If BPF program execution would result in division by zero, the destination register is instead set to zero. Otherwise, for ”…”�”}”(hj¡!h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hj©!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡!ubhŒ, if execution would result in ”…”�”}”(hj¡!h²hh³Nh´Nubj )�”}”(hŒ ``LLONG_MIN``”h]”hŒ LLONG_MIN”…”�”}”(hj»!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡!ubhŒ; divided by -1, the destination register is instead set to ”…”�”}”(hj¡!h²hh³Nh´Nubj )�”}”(hŒ ``LLONG_MIN``”h]”hŒ LLONG_MIN”…”�”}”(hjÍ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡!ubhŒ. For ”…”�”}”(hj¡!h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hjß!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡!ubhŒ, if execution would result in ”…”�”}”hj¡!sbj )�”}”(hŒ ``INT_MIN``”h]”hŒINT_MIN”…”�”}”(hjñ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡!ubhŒ; divided by -1, the destination register is instead set to ”…”�”}”(hj¡!h²hh³Nh´Nubj )�”}”(hŒ ``INT_MIN``”h]”hŒINT_MIN”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡!ubhŒ.”…”�”}”(hj¡!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M]hj¤h²hubh×)�”}”(hX©If execution would result in modulo by zero, for ``ALU64`` the value of the destination register is unchanged whereas for ``ALU`` the upper 32 bits of the destination register are zeroed. Otherwise, for ``ALU64``, if execution would resuslt in ``LLONG_MIN`` modulo -1, the destination register is instead set to 0. For ``ALU``, if execution would result in ``INT_MIN`` modulo -1, the destination register is instead set to 0.”h]”(hŒ1If execution would result in modulo by zero, for ”…”�”}”(hj"h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hj#"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ubhŒ@ the value of the destination register is unchanged whereas for ”…”�”}”(hj"h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hj5"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ubhŒJ the upper 32 bits of the destination register are zeroed. Otherwise, for ”…”�”}”(hj"h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hjG"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ubhŒ , if execution would resuslt in ”…”�”}”(hj"h²hh³Nh´Nubj )�”}”(hŒ ``LLONG_MIN``”h]”hŒ LLONG_MIN”…”�”}”(hjY"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ubhŒ> modulo -1, the destination register is instead set to 0. For ”…”�”}”(hj"h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hjk"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ubhŒ, if execution would result in ”…”�”}”(hj"h²hh³Nh´Nubj )�”}”(hŒ ``INT_MIN``”h]”hŒINT_MIN”…”�”}”(hj}"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj"ubhŒ9 modulo -1, the destination register is instead set to 0.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mehj¤h²hubh×)�”}”(hŒ[``{ADD, X, ALU}``, where 'code' = ``ADD``, 'source' = ``X``, and 'class' = ``ALU``, means::”h]”(j )�”}”(hŒ``{ADD, X, ALU}``”h]”hŒ {ADD, X, ALU}”…”�”}”(hj™"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj•"ubhŒ, where ‘code’ = ”…”�”}”(hj•"h²hh³Nh´Nubj )�”}”(hŒ``ADD``”h]”hŒADD”…”�”}”(hj«"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj•"ubhŒ, ‘source’ = ”…”�”}”(hj•"h²hh³Nh´Nubj )�”}”(hŒ``X``”h]”hŒX”…”�”}”(hj½"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj•"ubhŒ, and ‘class’ = ”…”�”}”(hj•"h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hjÏ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj•"ubhŒ, means:”…”�”}”(hj•"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mlhj¤h²hubjž )�”}”(hŒ#dst = (u32) ((u32) dst + (u32) src)”h]”hŒ#dst = (u32) ((u32) dst + (u32) src)”…”�”}”hjç"sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mnhj¤h²hubh×)�”}”(hŒ:where '(u32)' indicates that the upper 32 bits are zeroed.”h]”hŒ>where ‘(u32)’ indicates that the upper 32 bits are zeroed.”…”�”}”(hjõ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mphj¤h²hubh×)�”}”(hŒ``{ADD, X, ALU64}`` means::”h]”(j )�”}”(hŒ``{ADD, X, ALU64}``”h]”hŒ{ADD, X, ALU64}”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj#ubhŒ means:”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mrhj¤h²hubjž )�”}”(hŒdst = dst + src”h]”hŒdst = dst + src”…”�”}”hj#sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mthj¤h²hubh×)�”}”(hŒ``{XOR, K, ALU}`` means::”h]”(j )�”}”(hŒ``{XOR, K, ALU}``”h]”hŒ {XOR, K, ALU}”…”�”}”(hj1#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj-#ubhŒ means:”…”�”}”(hj-#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mvhj¤h²hubjž )�”}”(hŒdst = (u32) dst ^ (u32) imm”h]”hŒdst = (u32) dst ^ (u32) imm”…”�”}”hjI#sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mxhj¤h²hubh×)�”}”(hŒ``{XOR, K, ALU64}`` means::”h]”(j )�”}”(hŒ``{XOR, K, ALU64}``”h]”hŒ{XOR, K, ALU64}”…”�”}”(hj[#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW#ubhŒ means:”…”�”}”(hjW#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mzhj¤h²hubjž )�”}”(hŒdst = dst ^ imm”h]”hŒdst = dst ^ imm”…”�”}”hjs#sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M|hj¤h²hubh×)�”}”(hŒ�Note that most arithmetic instructions have 'offset' set to 0. Only three instructions (``SDIV``, ``SMOD``, ``MOVSX``) have a non-zero 'offset'.”h]”(hŒ\Note that most arithmetic instructions have ‘offset’ set to 0. Only three instructions (”…”�”}”(hj�#h²hh³Nh´Nubj )�”}”(hŒ``SDIV``”h]”hŒSDIV”…”�”}”(hj‰#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�#ubhŒ, ”…”�”}”(hj�#h²hh³Nh´Nubj )�”}”(hŒ``SMOD``”h]”hŒSMOD”…”�”}”(hj›#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�#ubhŒ, ”…”�”}”hj�#sbj )�”}”(hŒ ``MOVSX``”h]”hŒMOVSX”…”�”}”(hj­#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�#ubhŒ) have a non-zero ‘offset’.”…”�”}”(hj�#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M~hj¤h²hubh×)�”}”(hX&Division, multiplication, and modulo operations for ``ALU`` are part of the "divmul32" conformance group, and division, multiplication, and modulo operations for ``ALU64`` are part of the "divmul64" conformance group. The division and modulo operations support both unsigned and signed flavors.”h]”(hŒ4Division, multiplication, and modulo operations for ”…”�”}”(hjÅ#h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hjÍ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅ#ubhŒk are part of the “divmul32â€� conformance group, and division, multiplication, and modulo operations for ”…”�”}”(hjÅ#h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hjß#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÅ#ubhŒ are part of the “divmul64â€� conformance group. The division and modulo operations support both unsigned and signed flavors.”…”�”}”(hjÅ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M�hj¤h²hubh×)�”}”(hŒòFor unsigned operations (``DIV`` and ``MOD``), for ``ALU``, 'imm' is interpreted as a 32-bit unsigned value. For ``ALU64``, 'imm' is first :term:`sign extended` from 32 to 64 bits, and then interpreted as a 64-bit unsigned value.”h]”(hŒFor unsigned operations (”…”�”}”(hj÷#h²hh³Nh´Nubj )�”}”(hŒ``DIV``”h]”hŒDIV”…”�”}”(hjÿ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷#ubhŒ and ”…”�”}”(hj÷#h²hh³Nh´Nubj )�”}”(hŒ``MOD``”h]”hŒMOD”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷#ubhŒ), for ”…”�”}”(hj÷#h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hj#$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷#ubhŒ;, ‘imm’ is interpreted as a 32-bit unsigned value. For ”…”�”}”(hj÷#h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hj5$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj÷#ubhŒ, ‘imm’ is first ”…”�”}”(hj÷#h²hh³Nh´Nubh)�”}”(hŒ":term:`sign extended`”h]”jß )�”}”(hjI$h]”hŒ sign extended”…”�”}”(hjK$h²hh³Nh´Nubah}”(h]”h ]”(jê Œstd”Œstd-term”eh"]”h$]”h&]”uh1jÞ hjG$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j÷ Œ refdomain”jU$Œreftype”Œterm”Œ refexplicit”ˆŒrefwarn”ˆjý Œ Sign Extend”uh1hh³hËh´M‡hj÷#ubhŒE from 32 to 64 bits, and then interpreted as a 64-bit unsigned value.”…”�”}”(hj÷#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M‡hj¤h²hubh×)�”}”(hŒîFor signed operations (``SDIV`` and ``SMOD``), for ``ALU``, 'imm' is interpreted as a 32-bit signed value. For ``ALU64``, 'imm' is first :term:`sign extended` from 32 to 64 bits, and then interpreted as a 64-bit signed value.”h]”(hŒFor signed operations (”…”�”}”(hjq$h²hh³Nh´Nubj )�”}”(hŒ``SDIV``”h]”hŒSDIV”…”�”}”(hjy$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq$ubhŒ and ”…”�”}”(hjq$h²hh³Nh´Nubj )�”}”(hŒ``SMOD``”h]”hŒSMOD”…”�”}”(hj‹$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq$ubhŒ), for ”…”�”}”(hjq$h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq$ubhŒ9, ‘imm’ is interpreted as a 32-bit signed value. For ”…”�”}”(hjq$h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hj¯$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq$ubhŒ, ‘imm’ is first ”…”�”}”(hjq$h²hh³Nh´Nubh)�”}”(hŒ":term:`sign extended`”h]”jß )�”}”(hjÃ$h]”hŒ sign extended”…”�”}”(hjÅ$h²hh³Nh´Nubah}”(h]”h ]”(jê Œstd”Œstd-term”eh"]”h$]”h&]”uh1jÞ hjÁ$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j÷ Œ refdomain”jÏ$Œreftype”Œterm”Œ refexplicit”ˆŒrefwarn”ˆjý Œ Sign Extend”uh1hh³hËh´MŒhjq$ubhŒC from 32 to 64 bits, and then interpreted as a 64-bit signed value.”…”�”}”(hjq$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MŒhj¤h²hubh×)�”}”(hX[Note that there are varying definitions of the signed modulo operation when the dividend or divisor are negative, where implementations often vary by language such that Python, Ruby, etc. differ from C, Go, Java, etc. This specification requires that signed modulo MUST use truncated division (where -13 % 3 == -1) as implemented in C, Go, etc.::”h]”hXZNote that there are varying definitions of the signed modulo operation when the dividend or divisor are negative, where implementations often vary by language such that Python, Ruby, etc. differ from C, Go, Java, etc. This specification requires that signed modulo MUST use truncated division (where -13 % 3 == -1) as implemented in C, Go, etc.:”…”�”}”(hjë$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M‘hj¤h²hubjž )�”}”(hŒa % n = a - n * trunc(a / n)”h]”hŒa % n = a - n * trunc(a / n)”…”�”}”hjù$sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M—hj¤h²hubh×)�”}”(hXªThe ``MOVSX`` instruction does a move operation with sign extension. ``{MOVSX, X, ALU}`` :term:`sign extends` 8-bit and 16-bit operands into 32-bit operands, and zeroes the remaining upper 32 bits. ``{MOVSX, X, ALU64}`` :term:`sign extends` 8-bit, 16-bit, and 32-bit operands into 64-bit operands. Unlike other arithmetic instructions, ``MOVSX`` is only defined for register source operands (``X``).”h]”(hŒThe ”…”�”}”(hj%h²hh³Nh´Nubj )�”}”(hŒ ``MOVSX``”h]”hŒMOVSX”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubhŒ8 instruction does a move operation with sign extension. ”…”�”}”(hj%h²hh³Nh´Nubj )�”}”(hŒ``{MOVSX, X, ALU}``”h]”hŒ{MOVSX, X, ALU}”…”�”}”(hj!%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubhŒ ”…”�”}”(hj%h²hh³Nh´Nubh)�”}”(hŒ!:term:`sign extends`”h]”jß )�”}”(hj5%h]”hŒ sign extends”…”�”}”(hj7%h²hh³Nh´Nubah}”(h]”h ]”(jê Œstd”Œstd-term”eh"]”h$]”h&]”uh1jÞ hj3%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j÷ Œ refdomain”jA%Œreftype”Œterm”Œ refexplicit”ˆŒrefwarn”ˆjý Œ Sign Extend”uh1hh³hËh´M™hj%ubhŒY 8-bit and 16-bit operands into 32-bit operands, and zeroes the remaining upper 32 bits. ”…”�”}”(hj%h²hh³Nh´Nubj )�”}”(hŒ``{MOVSX, X, ALU64}``”h]”hŒ{MOVSX, X, ALU64}”…”�”}”(hjW%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubhŒ ”…”�”}”hj%sbh)�”}”(hŒ!:term:`sign extends`”h]”jß )�”}”(hjk%h]”hŒ sign extends”…”�”}”(hjm%h²hh³Nh´Nubah}”(h]”h ]”(jê Œstd”Œstd-term”eh"]”h$]”h&]”uh1jÞ hji%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j÷ Œ refdomain”jw%Œreftype”Œterm”Œ refexplicit”ˆŒrefwarn”ˆjý Œ Sign Extend”uh1hh³hËh´M™hj%ubhŒa 8-bit, 16-bit, and 32-bit operands into 64-bit operands. Unlike other arithmetic instructions, ”…”�”}”(hj%h²hh³Nh´Nubj )�”}”(hŒ ``MOVSX``”h]”hŒMOVSX”…”�”}”(hj�%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubhŒ/ is only defined for register source operands (”…”�”}”(hj%h²hh³Nh´Nubj )�”}”(hŒ``X``”h]”hŒX”…”�”}”(hjŸ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%ubhŒ).”…”�”}”(hj%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M™hj¤h²hubh×)�”}”(hŒ``{MOV, K, ALU64}`` means::”h]”(j )�”}”(hŒ``{MOV, K, ALU64}``”h]”hŒ{MOV, K, ALU64}”…”�”}”(hj»%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·%ubhŒ means:”…”�”}”(hj·%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M hj¤h²hubjž )�”}”(hŒdst = (s64)imm”h]”hŒdst = (s64)imm”…”�”}”hjÓ%sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M¢hj¤h²hubh×)�”}”(hŒ``{MOV, X, ALU}`` means::”h]”(j )�”}”(hŒ``{MOV, X, ALU}``”h]”hŒ {MOV, X, ALU}”…”�”}”(hjå%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjá%ubhŒ means:”…”�”}”(hjá%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¤hj¤h²hubjž )�”}”(hŒdst = (u32)src”h]”hŒdst = (u32)src”…”�”}”hjý%sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M¦hj¤h²hubh×)�”}”(hŒ+``{MOVSX, X, ALU}`` with 'offset' 8 means::”h]”(j )�”}”(hŒ``{MOVSX, X, ALU}``”h]”hŒ{MOVSX, X, ALU}”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj &ubhŒ with ‘offset’ 8 means:”…”�”}”(hj &h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¨hj¤h²hubjž )�”}”(hŒdst = (u32)(s32)(s8)src”h]”hŒdst = (u32)(s32)(s8)src”…”�”}”hj'&sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mªhj¤h²hubh×)�”}”(hŒMThe ``NEG`` instruction is only defined when the source bit is clear (``K``).”h]”(hŒThe ”…”�”}”(hj5&h²hh³Nh´Nubj )�”}”(hŒ``NEG``”h]”hŒNEG”…”�”}”(hj=&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5&ubhŒ; instruction is only defined when the source bit is clear (”…”�”}”(hj5&h²hh³Nh´Nubj )�”}”(hŒ``K``”h]”hŒK”…”�”}”(hjO&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5&ubhŒ).”…”�”}”(hj5&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M­hj¤h²hubh×)�”}”(hŒcShift operations use a mask of 0x3F (63) for 64-bit operations and 0x1F (31) for 32-bit operations.”h]”hŒcShift operations use a mask of 0x3F (63) for 64-bit operations and 0x1F (31) for 32-bit operations.”…”�”}”(hjg&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M°hj¤h²hubeh}”(h]”jah ]”h"]”Œarithmetic instructions”ah$]”h&]”uh1j‘hj!h²hh³hËh´M<ubj’)�”}”(hhh]”(h¼)�”}”(hŒByte swap instructions”h]”(há)�”}”(hhh]”hŒ 1.3.2   ”…”�”}”(hjƒ&h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj&h²hh³Nh´NubhŒByte swap instructions”…”�”}”(hj&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²j7uh1h»hj|&h²hh³hËh´M´ubh×)�”}”(hŒpThe byte swap instructions use instruction classes of ``ALU`` and ``ALU64`` and a 4-bit 'code' field of ``END``.”h]”(hŒ6The byte swap instructions use instruction classes of ”…”�”}”(hjš&h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hj¢&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš&ubhŒ and ”…”�”}”(hjš&h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hj´&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš&ubhŒ! and a 4-bit ‘code’ field of ”…”�”}”(hjš&h²hh³Nh´Nubj )�”}”(hŒ``END``”h]”hŒEND”…”�”}”(hjÆ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš&ubhŒ.”…”�”}”(hjš&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¶hj|&h²hubh×)�”}”(hŒ�The byte swap instructions operate on the destination register only and do not use a separate source register or immediate value.”h]”hŒ�The byte swap instructions operate on the destination register only and do not use a separate source register or immediate value.”…”�”}”(hjÞ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¹hj|&h²hubh×)�”}”(hŒÜFor ``ALU``, the 1-bit source operand field in the opcode is used to select what byte order the operation converts from or to. For ``ALU64``, the 1-bit source operand field in the opcode is reserved and MUST be set to 0.”h]”(hŒFor ”…”�”}”(hjì&h²hh³Nh´Nubj )�”}”(hŒ``ALU``”h]”hŒALU”…”�”}”(hjô&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjì&ubhŒx, the 1-bit source operand field in the opcode is used to select what byte order the operation converts from or to. For ”…”�”}”(hjì&h²hh³Nh´Nubj )�”}”(hŒ ``ALU64``”h]”hŒALU64”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjì&ubhŒP, the 1-bit source operand field in the opcode is reserved and MUST be set to 0.”…”�”}”(hjì&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¼hj|&h²hubj´)�”}”(hhh]”(h¼)�”}”(hŒByte swap instructions”h]”hŒByte swap instructions”…”�”}”(hj!'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´MÁhj'ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj/'ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj/'ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj/'ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K1uh1jËhj/'ubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒclass”h]”hŒclass”…”�”}”(hjc'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÄhj`'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj]'ubjì)�”}”(hhh]”h×)�”}”(hŒsource”h]”hŒsource”…”�”}”(hjz'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÄhjw'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj]'ubjì)�”}”(hhh]”h×)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj‘'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÄhjŽ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj]'ubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hj¨'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÄhj¥'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj]'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjZ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj/'ubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒALU”h]”hŒALU”…”�”}”(hjÑ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÆhjÎ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjË'ubjì)�”}”(hhh]”h×)�”}”(hŒLE”h]”hŒLE”…”�”}”(hjè'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÆhjå'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjË'ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjÿ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÆhjü'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjË'ubjì)�”}”(hhh]”h×)�”}”(hŒ1convert between host byte order and little endian”h]”hŒ1convert between host byte order and little endian”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÆhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjË'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÈ'ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒALU”h]”hŒALU”…”�”}”(hj5(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÇhj2(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj/(ubjì)�”}”(hhh]”h×)�”}”(hŒBE”h]”hŒBE”…”�”}”(hjL(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÇhjI(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj/(ubjì)�”}”(hhh]”h×)�”}”(hjh]”hŒ1”…”�”}”(hjc(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÇhj`(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj/(ubjì)�”}”(hhh]”h×)�”}”(hŒ.convert between host byte order and big endian”h]”hŒ.convert between host byte order and big endian”…”�”}”(hjy(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÇhjv(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj/(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÈ'ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒALU64”h]”hŒALU64”…”�”}”(hj™(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÈhj–(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj“(ubjì)�”}”(hhh]”h×)�”}”(hŒReserved”h]”hŒReserved”…”�”}”(hj°(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÈhj­(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj“(ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjÇ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÈhjÄ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj“(ubjì)�”}”(hhh]”h×)�”}”(hŒdo byte swap unconditionally”h]”hŒdo byte swap unconditionally”…”�”}”(hjÝ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÈhjÚ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj“(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÈ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hj/'ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhj'ubeh}”(h]”Œid6”ah ]”h"]”h$]”h&]”uh1j³hj|&h²hh³hËh´Nubh×)�”}”(hŒëThe 'imm' field encodes the width of the swap operations. The following widths are supported: 16, 32 and 64. Width 64 operations belong to the base64 conformance group and other swap operations belong to the base32 conformance group.”h]”hŒïThe ‘imm’ field encodes the width of the swap operations. The following widths are supported: 16, 32 and 64. Width 64 operations belong to the base64 conformance group and other swap operations belong to the base32 conformance group.”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MËhj|&h²hubh×)�”}”(hŒ Examples:”h]”hŒ Examples:”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÐhj|&h²hubh×)�”}”(hŒ0``{END, LE, ALU}`` with 'imm' = 16/32/64 means::”h]”(j )�”}”(hŒ``{END, LE, ALU}``”h]”hŒ{END, LE, ALU}”…”�”}”(hj+)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj')ubhŒ! with ‘imm’ = 16/32/64 means:”…”�”}”(hj')h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÒhj|&h²hubjž )�”}”(hŒ/dst = le16(dst) dst = le32(dst) dst = le64(dst)”h]”hŒ/dst = le16(dst) dst = le32(dst) dst = le64(dst)”…”�”}”hjC)sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´MÔhj|&h²hubh×)�”}”(hŒ0``{END, BE, ALU}`` with 'imm' = 16/32/64 means::”h]”(j )�”}”(hŒ``{END, BE, ALU}``”h]”hŒ{END, BE, ALU}”…”�”}”(hjU)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjQ)ubhŒ! with ‘imm’ = 16/32/64 means:”…”�”}”(hjQ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MØhj|&h²hubjž )�”}”(hŒ/dst = be16(dst) dst = be32(dst) dst = be64(dst)”h]”hŒ/dst = be16(dst) dst = be32(dst) dst = be64(dst)”…”�”}”hjm)sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´MÚhj|&h²hubh×)�”}”(hŒ2``{END, TO, ALU64}`` with 'imm' = 16/32/64 means::”h]”(j )�”}”(hŒ``{END, TO, ALU64}``”h]”hŒ{END, TO, ALU64}”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj{)ubhŒ! with ‘imm’ = 16/32/64 means:”…”�”}”(hj{)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÞhj|&h²hubjž )�”}”(hŒ8dst = bswap16(dst) dst = bswap32(dst) dst = bswap64(dst)”h]”hŒ8dst = bswap16(dst) dst = bswap32(dst) dst = bswap64(dst)”…”�”}”hj—)sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Màhj|&h²hubeh}”(h]”j=ah ]”h"]”Œbyte swap instructions”ah$]”h&]”uh1j‘hj!h²hh³hËh´M´jKubj’)�”}”(hhh]”(h¼)�”}”(hŒJump instructions”h]”(há)�”}”(hhh]”hŒ 1.3.3   ”…”�”}”(hj³)h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj¯)h²hh³Nh´NubhŒJump instructions”…”�”}”(hj¯)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jfuh1h»hj¬)h²hh³hËh´Måubh×)�”}”(hX``JMP32`` uses 32-bit wide operands and indicates the base32 conformance group, while ``JMP`` uses 64-bit wide operands for otherwise identical operations, and indicates the base64 conformance group unless otherwise specified. The 'code' field encodes the operation as below:”h]”(j )�”}”(hŒ ``JMP32``”h]”hŒJMP32”…”�”}”(hjÎ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊ)ubhŒM uses 32-bit wide operands and indicates the base32 conformance group, while ”…”�”}”(hjÊ)h²hh³Nh´Nubj )�”}”(hŒ``JMP``”h]”hŒJMP”…”�”}”(hjà)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÊ)ubhŒº uses 64-bit wide operands for otherwise identical operations, and indicates the base64 conformance group unless otherwise specified. The ‘code’ field encodes the operation as below:”…”�”}”(hjÊ)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mçhj¬)h²hubj´)�”}”(hhh]”(h¼)�”}”(hŒJump instructions”h]”hŒJump instructions”…”�”}”(hjû)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´Míhjø)ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj *ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj *ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj *ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K!uh1jËhj *ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K3uh1jËhj *ubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒcode”h]”hŒcode”…”�”}”(hjG*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MðhjD*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjA*ubjì)�”}”(hhh]”h×)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj^*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mðhj[*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjA*ubjì)�”}”(hhh]”h×)�”}”(hŒsrc_reg”h]”hŒsrc_reg”…”�”}”(hju*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mðhjr*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjA*ubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hjŒ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mðhj‰*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjA*ubjì)�”}”(hhh]”h×)�”}”(hŒnotes”h]”hŒnotes”…”�”}”(hj£*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mðhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjA*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj>*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj *ubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJA”h]”hŒJA”…”�”}”(hjÌ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MòhjÉ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÆ*ubjì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjã*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mòhjà*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÆ*ubjì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjú*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mòhj÷*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÆ*ubjì)�”}”(hhh]”h×)�”}”(hŒ PC += offset”h]”hŒ PC += offset”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mòhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÆ*ubjì)�”}”(hhh]”h×)�”}”(hŒ{JA, K, JMP} only”h]”hŒ{JA, K, JMP} only”…”�”}”(hj(+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mòhj%+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÆ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJA”h]”hŒJA”…”�”}”(hjH+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MóhjE+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjB+ubjì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hj_+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Móhj\+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjB+ubjì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjv+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Móhjs+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjB+ubjì)�”}”(hhh]”h×)�”}”(hŒ PC += imm”h]”hŒ PC += imm”…”�”}”(hj�+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MóhjŠ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjB+ubjì)�”}”(hhh]”h×)�”}”(hŒ{JA, K, JMP32} only”h]”hŒ{JA, K, JMP32} only”…”�”}”(hj¤+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Móhj¡+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjB+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJEQ”h]”hŒJEQ”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MôhjÁ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¾+ubjì)�”}”(hhh]”h×)�”}”(hŒ0x1”h]”hŒ0x1”…”�”}”(hjÛ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MôhjØ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¾+ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjò+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Môhjï+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¾+ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst == src”h]”hŒPC += offset if dst == src”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Môhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¾+ubjì)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¾+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJGT”h]”hŒJGT”…”�”}”(hj2,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mõhj/,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj,,ubjì)�”}”(hhh]”h×)�”}”(hŒ0x2”h]”hŒ0x2”…”�”}”(hjI,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MõhjF,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj,,ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hj`,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mõhj],ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj,,ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst > src”h]”hŒPC += offset if dst > src”…”�”}”(hjw,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mõhjt,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj,,ubjì)�”}”(hhh]”h×)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjŽ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mõhj‹,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj,,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJGE”h]”hŒJGE”…”�”}”(hj®,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Möhj«,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨,ubjì)�”}”(hhh]”h×)�”}”(hŒ0x3”h]”hŒ0x3”…”�”}”(hjÅ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MöhjÂ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨,ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjÜ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MöhjÙ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨,ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst >= src”h]”hŒPC += offset if dst >= src”…”�”}”(hjó,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Möhjð,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨,ubjì)�”}”(hhh]”h×)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Möhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJSET”h]”hŒJSET”…”�”}”(hj*-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M÷hj'-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj$-ubjì)�”}”(hhh]”h×)�”}”(hŒ0x4”h]”hŒ0x4”…”�”}”(hjA-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M÷hj>-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj$-ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjX-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M÷hjU-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj$-ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst & src”h]”hŒPC += offset if dst & src”…”�”}”(hjo-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M÷hjl-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj$-ubjì)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jëhj$-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJNE”h]”hŒJNE”…”�”}”(hj˜-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Møhj•-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj’-ubjì)�”}”(hhh]”h×)�”}”(hŒ0x5”h]”hŒ0x5”…”�”}”(hj¯-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Møhj¬-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj’-ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjÆ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MøhjÃ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj’-ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst != src”h]”hŒPC += offset if dst != src”…”�”}”(hjÝ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MøhjÚ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj’-ubjì)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1jëhj’-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJSGT”h]”hŒJSGT”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mùhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj.ubjì)�”}”(hhh]”h×)�”}”(hŒ0x6”h]”hŒ0x6”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mùhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj.ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hj4.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mùhj1.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj.ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst > src”h]”hŒPC += offset if dst > src”…”�”}”(hjK.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MùhjH.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj.ubjì)�”}”(hhh]”h×)�”}”(hŒsigned”h]”hŒsigned”…”�”}”(hjb.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mùhj_.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJSGE”h]”hŒJSGE”…”�”}”(hj‚.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Múhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj|.ubjì)�”}”(hhh]”h×)�”}”(hŒ0x7”h]”hŒ0x7”…”�”}”(hj™.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Múhj–.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj|.ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hj°.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Múhj­.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj|.ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst >= src”h]”hŒPC += offset if dst >= src”…”�”}”(hjÇ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MúhjÄ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj|.ubjì)�”}”(hhh]”h×)�”}”(hŒsigned”h]”hŒsigned”…”�”}”(hjÞ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MúhjÛ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj|.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒCALL”h]”hŒCALL”…”�”}”(hjþ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mûhjû.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjø.ubjì)�”}”(hhh]”h×)�”}”(hŒ0x8”h]”hŒ0x8”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mûhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjø.ubjì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hj,/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mûhj)/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjø.ubjì)�”}”(hhh]”h×)�”}”(hŒ!call helper function by static ID”h]”hŒ!call helper function by static ID”…”�”}”(hjC/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mûhj@/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjø.ubjì)�”}”(hhh]”h×)�”}”(hŒ,{CALL, K, JMP} only, see `Helper functions`_”h]”(hŒ{CALL, K, JMP} only, see ”…”�”}”(hjZ/h²hh³Nh´NubhÜ)�”}”(hŒ`Helper functions`_”h]”hŒHelper functions”…”�”}”(hjb/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒHelper functions”j²j˜uh1hÛhjZ/ja Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MûhjW/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjø.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒCALL”h]”hŒCALL”…”�”}”(hjŠ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mühj‡/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj„/ubjì)�”}”(hhh]”h×)�”}”(hŒ0x8”h]”hŒ0x8”…”�”}”(hj¡/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mühjž/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj„/ubjì)�”}”(hhh]”h×)�”}”(hŒ0x1”h]”hŒ0x1”…”�”}”(hj¸/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mühjµ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj„/ubjì)�”}”(hhh]”h×)�”}”(hŒcall PC += imm”h]”hŒcall PC += imm”…”�”}”(hjÏ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MühjÌ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj„/ubjì)�”}”(hhh]”h×)�”}”(hŒ3{CALL, K, JMP} only, see `Program-local functions`_”h]”(hŒ{CALL, K, JMP} only, see ”…”�”}”(hjæ/h²hh³Nh´NubhÜ)�”}”(hŒ`Program-local functions`_”h]”hŒProgram-local functions”…”�”}”(hjî/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒProgram-local functions”j²jÇuh1hÛhjæ/ja Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mühjã/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj„/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒCALL”h]”hŒCALL”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mýhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj0ubjì)�”}”(hhh]”h×)�”}”(hŒ0x8”h]”hŒ0x8”…”�”}”(hj-0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mýhj*0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj0ubjì)�”}”(hhh]”h×)�”}”(hŒ0x2”h]”hŒ0x2”…”�”}”(hjD0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MýhjA0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj0ubjì)�”}”(hhh]”h×)�”}”(hŒcall helper function by BTF ID”h]”hŒcall helper function by BTF ID”…”�”}”(hj[0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MýhjX0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj0ubjì)�”}”(hhh]”h×)�”}”(hŒ,{CALL, K, JMP} only, see `Helper functions`_”h]”(hŒ{CALL, K, JMP} only, see ”…”�”}”(hjr0h²hh³Nh´NubhÜ)�”}”(hŒ`Helper functions`_”h]”hŒHelper functions”…”�”}”(hjz0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒHelper functions”j²j˜uh1hÛhjr0ja Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mýhjo0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒEXIT”h]”hŒEXIT”…”�”}”(hj¢0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MþhjŸ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjœ0ubjì)�”}”(hhh]”h×)�”}”(hŒ0x9”h]”hŒ0x9”…”�”}”(hj¹0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mþhj¶0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjœ0ubjì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjÐ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MþhjÍ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjœ0ubjì)�”}”(hhh]”h×)�”}”(hŒreturn”h]”hŒreturn”…”�”}”(hjç0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mþhjä0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjœ0ubjì)�”}”(hhh]”h×)�”}”(hŒ{CALL, K, JMP} only”h]”hŒ{CALL, K, JMP} only”…”�”}”(hjþ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mþhjû0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjœ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJLT”h]”hŒJLT”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mÿhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj1ubjì)�”}”(hhh]”h×)�”}”(hŒ0xa”h]”hŒ0xa”…”�”}”(hj51h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mÿhj21ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj1ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjL1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÿhjI1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj1ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst < src”h]”hŒPC += offset if dst < src”…”�”}”(hjc1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mÿhj`1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj1ubjì)�”}”(hhh]”h×)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjz1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mÿhjw1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJLE”h]”hŒJLE”…”�”}”(hjš1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj—1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj”1ubjì)�”}”(hhh]”h×)�”}”(hŒ0xb”h]”hŒ0xb”…”�”}”(hj±1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj®1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj”1ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjÈ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjÅ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj”1ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst <= src”h]”hŒPC += offset if dst <= src”…”�”}”(hjß1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hË•h´MhjÜ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj”1ubjì)�”}”(hhh]”h×)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjö1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjó1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj”1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJSLT”h]”hŒJSLT”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj2ubjì)�”}”(hhh]”h×)�”}”(hŒ0xc”h]”hŒ0xc”…”�”}”(hj-2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj*2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj2ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjD2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjA2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj2ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst < src”h]”hŒPC += offset if dst < src”…”�”}”(hj[2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjX2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj2ubjì)�”}”(hhh]”h×)�”}”(hŒsigned”h]”hŒsigned”…”�”}”(hjr2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjo2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒJSLE”h]”hŒJSLE”…”�”}”(hj’2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj�2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ2ubjì)�”}”(hhh]”h×)�”}”(hŒ0xd”h]”hŒ0xd”…”�”}”(hj©2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj¦2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ2ubjì)�”}”(hhh]”h×)�”}”(hŒany”h]”hŒany”…”�”}”(hjÀ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj½2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ2ubjì)�”}”(hhh]”h×)�”}”(hŒPC += offset if dst <= src”h]”hŒPC += offset if dst <= src”…”�”}”(hj×2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjÔ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ2ubjì)�”}”(hhh]”h×)�”}”(hŒsigned”h]”hŒsigned”…”�”}”(hjî2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhjë2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjŒ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÃ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hj *ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhjø)ubeh}”(h]”Œid7”ah ]”h"]”h$]”h&]”uh1j³hj¬)h²hh³hËh´Nubh×)�”}”(hXQwhere 'PC' denotes the program counter, and the offset to increment by is in units of 64-bit instructions relative to the instruction following the jump instruction. Thus 'PC += 1' skips execution of the next instruction if it's a basic instruction or results in undefined behavior if the next instruction is a 128-bit wide instruction.”h]”hX[where ‘PC’ denotes the program counter, and the offset to increment by is in units of 64-bit instructions relative to the instruction following the jump instruction. Thus ‘PC += 1’ skips execution of the next instruction if it’s a basic instruction or results in undefined behavior if the next instruction is a 128-bit wide instruction.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj¬)h²hubh×)�”}”(hŒExample:”h]”hŒExample:”…”�”}”(hj*3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M hj¬)h²hubh×)�”}”(hŒ``{JSGE, X, JMP32}`` means::”h]”(j )�”}”(hŒ``{JSGE, X, JMP32}``”h]”hŒ{JSGE, X, JMP32}”…”�”}”(hj<3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj83ubhŒ means:”…”�”}”(hj83h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M hj¬)h²hubjž )�”}”(hŒ%if (s32)dst s>= (s32)src goto +offset”h]”hŒ%if (s32)dst s>= (s32)src goto +offset”…”�”}”hjT3sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mhj¬)h²hubh×)�”}”(hŒ/where 's>=' indicates a signed '>=' comparison.”h]”hŒ7where ‘s>=’ indicates a signed ‘>=’ comparison.”…”�”}”(hjb3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj¬)h²hubh×)�”}”(hŒ``{JLE, K, JMP}`` means::”h]”(j )�”}”(hŒ``{JLE, K, JMP}``”h]”hŒ {JLE, K, JMP}”…”�”}”(hjt3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjp3ubhŒ means:”…”�”}”(hjp3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj¬)h²hubjž )�”}”(hŒ$if dst <= (u64)(s64)imm goto +offset”h]”hŒ$if dst <= (u64)(s64)imm goto +offset”…”�”}”hjŒ3sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mhj¬)h²hubh×)�”}”(hŒ``{JA, K, JMP32}`` means::”h]”(j )�”}”(hŒ``{JA, K, JMP32}``”h]”hŒ{JA, K, JMP32}”…”�”}”(hjž3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš3ubhŒ means:”…”�”}”(hjš3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj¬)h²hubjž )�”}”(hŒ gotol +imm”h]”hŒ gotol +imm”…”�”}”hj¶3sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mhj¬)h²hubh×)�”}”(hŒ?where 'imm' means the branch offset comes from the 'imm' field.”h]”hŒGwhere ‘imm’ means the branch offset comes from the ‘imm’ field.”…”�”}”(hjÄ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj¬)h²hubh×)�”}”(hXLNote that there are two flavors of ``JA`` instructions. The ``JMP`` class permits a 16-bit jump offset specified by the 'offset' field, whereas the ``JMP32`` class permits a 32-bit jump offset specified by the 'imm' field. A > 16-bit conditional jump may be converted to a < 16-bit conditional jump plus a 32-bit unconditional jump.”h]”(hŒ#Note that there are two flavors of ”…”�”}”(hjÒ3h²hh³Nh´Nubj )�”}”(hŒ``JA``”h]”hŒJA”…”�”}”(hjÚ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒ3ubhŒ instructions. The ”…”�”}”(hjÒ3h²hh³Nh´Nubj )�”}”(hŒ``JMP``”h]”hŒJMP”…”�”}”(hjì3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒ3ubhŒU class permits a 16-bit jump offset specified by the ‘offset’ field, whereas the ”…”�”}”(hjÒ3h²hh³Nh´Nubj )�”}”(hŒ ``JMP32``”h]”hŒJMP32”…”�”}”(hjþ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒ3ubhŒ³ class permits a 32-bit jump offset specified by the ‘imm’ field. A > 16-bit conditional jump may be converted to a < 16-bit conditional jump plus a 32-bit unconditional jump.”…”�”}”(hjÒ3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj¬)h²hubh×)�”}”(hŒLAll ``CALL`` and ``JA`` instructions belong to the base32 conformance group.”h]”(hŒAll ”…”�”}”(hj4h²hh³Nh´Nubj )�”}”(hŒ``CALL``”h]”hŒCALL”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4ubhŒ and ”…”�”}”(hj4h²hh³Nh´Nubj )�”}”(hŒ``JA``”h]”hŒJA”…”�”}”(hj04h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4ubhŒ5 instructions belong to the base32 conformance group.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M$hj¬)h²hubj’)�”}”(hhh]”(h¼)�”}”(hŒHelper functions”h]”(há)�”}”(hhh]”hŒ 1.3.3.1   ”…”�”}”(hjO4h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhjK4h²hh³Nh´NubhŒHelper functions”…”�”}”(hjK4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²j’uh1h»hjH4h²hh³hËh´M(ubh×)�”}”(hŒ}Helper functions are a concept whereby BPF programs can call into a set of function calls exposed by the underlying platform.”h]”hŒ}Helper functions are a concept whereby BPF programs can call into a set of function calls exposed by the underlying platform.”…”�”}”(hjf4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M*hjH4h²hubh×)�”}”(hX^Historically, each helper function was identified by a static ID encoded in the 'imm' field. Further documentation of helper functions is outside the scope of this document and standardization is left for future work, but use is widely deployed and more information can be found in platform-specific documentation (e.g., Linux kernel documentation).”h]”hXbHistorically, each helper function was identified by a static ID encoded in the ‘imm’ field. Further documentation of helper functions is outside the scope of this document and standardization is left for future work, but use is widely deployed and more information can be found in platform-specific documentation (e.g., Linux kernel documentation).”…”�”}”(hjt4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M-hjH4h²hubh×)�”}”(hX©Platforms that support the BPF Type Format (BTF) support identifying a helper function by a BTF ID encoded in the 'imm' field, where the BTF ID identifies the helper name and type. Further documentation of BTF is outside the scope of this document and standardization is left for future work, but use is widely deployed and more information can be found in platform-specific documentation (e.g., Linux kernel documentation).”h]”hX­Platforms that support the BPF Type Format (BTF) support identifying a helper function by a BTF ID encoded in the ‘imm’ field, where the BTF ID identifies the helper name and type. Further documentation of BTF is outside the scope of this document and standardization is left for future work, but use is widely deployed and more information can be found in platform-specific documentation (e.g., Linux kernel documentation).”…”�”}”(hj‚4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M3hjH4h²hubeh}”(h]”j˜ah ]”h"]”Œhelper functions”ah$]”h&]”uh1j‘hj¬)h²hh³hËh´M(jKubj’)�”}”(hhh]”(h¼)�”}”(hŒProgram-local functions”h]”(há)�”}”(hhh]”hŒ 1.3.3.2   ”…”�”}”(hjž4h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhjš4h²hh³Nh´NubhŒProgram-local functions”…”�”}”(hjš4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jÁuh1h»hj—4h²hh³hËh´M;ubh×)�”}”(hXEProgram-local functions are functions exposed by the same BPF program as the caller, and are referenced by offset from the instruction following the call instruction, similar to ``JA``. The offset is encoded in the 'imm' field of the call instruction. An ``EXIT`` within the program-local function will return to the caller.”h]”(hŒ²Program-local functions are functions exposed by the same BPF program as the caller, and are referenced by offset from the instruction following the call instruction, similar to ”…”�”}”(hjµ4h²hh³Nh´Nubj )�”}”(hŒ``JA``”h]”hŒJA”…”�”}”(hj½4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ4ubhŒL. The offset is encoded in the ‘imm’ field of the call instruction. An ”…”�”}”(hjµ4h²hh³Nh´Nubj )�”}”(hŒ``EXIT``”h]”hŒEXIT”…”�”}”(hjÏ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjµ4ubhŒ= within the program-local function will return to the caller.”…”�”}”(hjµ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M<hj—4h²hubeh}”(h]”jÇah ]”h"]”Œprogram-local functions”ah$]”h&]”uh1j‘hj¬)h²hh³hËh´M;jKubeh}”(h]”jlah ]”h"]”Œjump instructions”ah$]”h&]”uh1j‘hj!h²hh³hËh´Måubeh}”(h]”jâah ]”h"]”Œ arithmetic and jump instructions”ah$]”h&]”uh1j‘hj“h²hh³hËh´M jKubj’)�”}”(hhh]”(h¼)�”}”(hŒLoad and store instructions”h]”(há)�”}”(hhh]”hŒ 1.4   ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhjÿ4h²hh³Nh´NubhŒLoad and store instructions”…”�”}”(hjÿ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²juh1h»hjü4h²hh³hËh´MCubh×)�”}”(hŒxFor load and store instructions (``LD``, ``LDX``, ``ST``, and ``STX``), the 8-bit 'opcode' field is divided as follows::”h]”(hŒ!For load and store instructions (”…”�”}”(hj5h²hh³Nh´Nubj )�”}”(hŒ``LD``”h]”hŒLD”…”�”}”(hj"5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubhŒ, ”…”�”}”(hj5h²hh³Nh´Nubj )�”}”(hŒ``LDX``”h]”hŒLDX”…”�”}”(hj45h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubhŒ, ”…”�”}”hj5sbj )�”}”(hŒ``ST``”h]”hŒST”…”�”}”(hjF5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubhŒ, and ”…”�”}”(hj5h²hh³Nh´Nubj )�”}”(hŒ``STX``”h]”hŒSTX”…”�”}”(hjX5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5ubhŒ6), the 8-bit ‘opcode’ field is divided as follows:”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MEhjü4h²hubjž )�”}”(hŒ5+-+-+-+-+-+-+-+-+ |mode |sz |class| +-+-+-+-+-+-+-+-+”h]”hŒ5+-+-+-+-+-+-+-+-+ |mode |sz |class| +-+-+-+-+-+-+-+-+”…”�”}”hjp5sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´MHhjü4h²hubjÕ )�”}”(hhh]”(jÚ )�”}”(hX°**mode** The mode modifier is one of: .. table:: Mode modifier ============= ===== ==================================== ============= mode modifier value description reference ============= ===== ==================================== ============= IMM 0 64-bit immediate instructions `64-bit immediate instructions`_ ABS 1 legacy BPF packet access (absolute) `Legacy BPF Packet access instructions`_ IND 2 legacy BPF packet access (indirect) `Legacy BPF Packet access instructions`_ MEM 3 regular load and store operations `Regular load and store operations`_ MEMSX 4 sign-extension load operations `Sign-extension load operations`_ ATOMIC 6 atomic operations `Atomic operations`_ ============= ===== ==================================== ============= ”h]”(jß )�”}”(hŒ**mode**”h]”jŽ)�”}”(hj‡5h]”hŒmode”…”�”}”(hj‰5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj…5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞ h³hËh´MZhj�5ubj )�”}”(hhh]”(h×)�”}”(hŒThe mode modifier is one of:”h]”hŒThe mode modifier is one of:”…”�”}”(hjŸ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MMhjœ5ubj´)�”}”(hhh]”(h¼)�”}”(hŒ Mode modifier”h]”hŒ Mode modifier”…”�”}”(hj°5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´MOhj­5ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jËhj¾5ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj¾5ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K$uh1jËhj¾5ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K(uh1jËhj¾5ubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ mode modifier”h]”hŒ mode modifier”…”�”}”(hjò5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhjï5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjì5ubjì)�”}”(hhh]”h×)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjì5ubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjì5ubjì)�”}”(hhh]”h×)�”}”(hŒ reference”h]”hŒ reference”…”�”}”(hj76h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MRhj46ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjì5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjé5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¾5ubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒIMM”h]”hŒIMM”…”�”}”(hj`6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThj]6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjZ6ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjw6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThjt6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjZ6ubjì)�”}”(hhh]”h×)�”}”(hŒ64-bit immediate instructions”h]”hŒ64-bit immediate instructions”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThjŠ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjZ6ubjì)�”}”(hhh]”h×)�”}”(hŒ `64-bit immediate instructions`_”h]”hÜ)�”}”(hj¦6h]”hŒ64-bit immediate instructions”…”�”}”(hj¨6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ64-bit immediate instructions”j²jÇuh1hÛhj¤6ja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MThj¡6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjZ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjW6ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒABS”h]”hŒABS”…”�”}”(hjÏ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhjÌ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÉ6ubjì)�”}”(hhh]”h×)�”}”(hjh]”hŒ1”…”�”}”(hjæ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhjã6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÉ6ubjì)�”}”(hhh]”h×)�”}”(hŒ#legacy BPF packet access (absolute)”h]”hŒ#legacy BPF packet access (absolute)”…”�”}”(hjü6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhjù6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÉ6ubjì)�”}”(hhh]”h×)�”}”(hŒ(`Legacy BPF Packet access instructions`_”h]”hÜ)�”}”(hj7h]”hŒ%Legacy BPF Packet access instructions”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ%Legacy BPF Packet access instructions”j²j]uh1hÛhj7ja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MUhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÉ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjW6ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒIND”h]”hŒIND”…”�”}”(hj>7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhj;7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj87ubjì)�”}”(hhh]”h×)�”}”(hŒ2”h]”hŒ2”…”�”}”(hjU7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhjR7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj87ubjì)�”}”(hhh]”h×)�”}”(hŒ#legacy BPF packet access (indirect)”h]”hŒ#legacy BPF packet access (indirect)”…”�”}”(hjl7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhji7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj87ubjì)�”}”(hhh]”h×)�”}”(hŒ(`Legacy BPF Packet access instructions`_”h]”hÜ)�”}”(hj…7h]”hŒ%Legacy BPF Packet access instructions”…”�”}”(hj‡7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ%Legacy BPF Packet access instructions”j²j]uh1hÛhjƒ7ja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MVhj€7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj87ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjW6ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒMEM”h]”hŒMEM”…”�”}”(hj®7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhj«7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨7ubjì)�”}”(hhh]”h×)�”}”(hŒ3”h]”hŒ3”…”�”}”(hjÅ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhjÂ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨7ubjì)�”}”(hhh]”h×)�”}”(hŒ!regular load and store operations”h]”hŒ!regular load and store operations”…”�”}”(hjÜ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhjÙ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨7ubjì)�”}”(hhh]”h×)�”}”(hŒ$`Regular load and store operations`_”h]”hÜ)�”}”(hjõ7h]”hŒ!Regular load and store operations”…”�”}”(hj÷7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ!Regular load and store operations”j²j:uh1hÛhjó7ja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MWhjð7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¨7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjW6ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒMEMSX”h]”hŒMEMSX”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj8ubjì)�”}”(hhh]”h×)�”}”(hŒ4”h]”hŒ4”…”�”}”(hj58h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhj28ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj8ubjì)�”}”(hhh]”h×)�”}”(hŒsign-extension load operations”h]”hŒsign-extension load operations”…”�”}”(hjL8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhjI8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj8ubjì)�”}”(hhh]”h×)�”}”(hŒ!`Sign-extension load operations`_”h]”hÜ)�”}”(hje8h]”hŒSign-extension load operations”…”�”}”(hjg8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒSign-extension load operations”j²jiuh1hÛhjc8ja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MXhj`8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjW6ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒATOMIC”h]”hŒATOMIC”…”�”}”(hjŽ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhj‹8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjˆ8ubjì)�”}”(hhh]”h×)�”}”(hŒ6”h]”hŒ6”…”�”}”(hj¥8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhj¢8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjˆ8ubjì)�”}”(hhh]”h×)�”}”(hŒatomic operations”h]”hŒatomic operations”…”�”}”(hj¼8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhj¹8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjˆ8ubjì)�”}”(hhh]”h×)�”}”(hŒ`Atomic operations`_”h]”hÜ)�”}”(hjÕ8h]”hŒAtomic operations”…”�”}”(hj×8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒAtomic operations”j²j˜uh1hÛhjÓ8ja Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MYhjÐ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjˆ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjW6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hj¾5ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhj­5ubeh}”(h]”Œid8”ah ]”h"]”h$]”h&]”uh1j³hjœ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙ h³hËh´MZhj~5ubjÚ )�”}”(hX–**sz (size)** The size modifier is one of: .. table:: Size modifier ==== ===== ===================== size value description ==== ===== ===================== W 0 word (4 bytes) H 1 half word (2 bytes) B 2 byte DW 3 double word (8 bytes) ==== ===== ===================== Instructions using ``DW`` belong to the base64 conformance group. ”h]”(jß )�”}”(hŒ **sz (size)**”h]”jŽ)�”}”(hj9h]”hŒ sz (size)”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞ h³hËh´Mjhj9ubj )�”}”(hhh]”(h×)�”}”(hŒThe size modifier is one of:”h]”hŒThe size modifier is one of:”…”�”}”(hj69h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M]hj39ubj´)�”}”(hhh]”(h¼)�”}”(hŒ Size modifier”h]”hŒ Size modifier”…”�”}”(hjG9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´M_hjD9ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjU9ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjU9ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhjU9ubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒsize”h]”hŒsize”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mbhj|9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjy9ubjì)�”}”(hhh]”h×)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hj–9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mbhj“9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjy9ubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hj­9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mbhjª9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjy9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjv9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhjU9ubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒW”h]”hŒW”…”�”}”(hjÖ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MdhjÓ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÐ9ubjì)�”}”(hhh]”h×)�”}”(hjµh]”hŒ0”…”�”}”(hjí9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mdhjê9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÐ9ubjì)�”}”(hhh]”h×)�”}”(hŒword (4 bytes)”h]”hŒword (4 bytes)”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mdhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÐ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÍ9ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒH”h]”hŒH”…”�”}”(hj#:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mehj :ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj:ubjì)�”}”(hhh]”h×)�”}”(hjh]”hŒ1”…”�”}”(hj::h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mehj7:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj:ubjì)�”}”(hhh]”h×)�”}”(hŒhalf word (2 bytes)”h]”hŒhalf word (2 bytes)”…”�”}”(hjP:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MehjM:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÍ9ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒB”h]”hŒB”…”�”}”(hjp:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mfhjm:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjj:ubjì)�”}”(hhh]”h×)�”}”(hjW7h]”hŒ2”…”�”}”(hj‡:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mfhj„:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjj:ubjì)�”}”(hhh]”h×)�”}”(hŒbyte”h]”hŒbyte”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mfhjš:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÍ9ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒDW”h]”hŒDW”…”�”}”(hj½:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mghjº:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj·:ubjì)�”}”(hhh]”h×)�”}”(hjÇ7h]”hŒ3”…”�”}”(hjÔ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MghjÑ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj·:ubjì)�”}”(hhh]”h×)�”}”(hŒdouble word (8 bytes)”h]”hŒdouble word (8 bytes)”…”�”}”(hjê:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mghjç:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj·:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÍ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hjU9ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhjD9ubeh}”(h]”Œid9”ah ]”h"]”h$]”h&]”uh1j³hj39ubh×)�”}”(hŒAInstructions using ``DW`` belong to the base64 conformance group.”h]”(hŒInstructions using ”…”�”}”(hj;h²hh³Nh´Nubj )�”}”(hŒ``DW``”h]”hŒDW”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;ubhŒ( belong to the base64 conformance group.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mjhj39ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙ h³hËh´Mjhj~5h²hubjÚ )�”}”(hŒ=**class** The instruction class (see `Instruction classes`_) ”h]”(jß )�”}”(hŒ **class**”h]”jŽ)�”}”(hjJ;h]”hŒclass”…”�”}”(hjL;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjH;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÞ h³hËh´MmhjD;ubj )�”}”(hhh]”h×)�”}”(hŒ2The instruction class (see `Instruction classes`_)”h]”(hŒThe instruction class (see ”…”�”}”(hjb;h²hh³Nh´NubhÜ)�”}”(hŒ`Instruction classes`_”h]”hŒInstruction classes”…”�”}”(hjj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒInstruction classes”j²j§uh1hÛhjb;ja KubhŒ)”…”�”}”(hjb;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mmhj_;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÙ h³hËh´Mmhj~5h²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÔ hjü4h²hh³Nh´Nubj’)�”}”(hhh]”(h¼)�”}”(hŒ!Regular load and store operations”h]”(há)�”}”(hhh]”hŒ 1.4.1   ”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj™;h²hh³Nh´NubhŒ!Regular load and store operations”…”�”}”(hj™;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²j4uh1h»hj–;h²hh³hËh´Mpubh×)�”}”(hŒ�The ``MEM`` mode modifier is used to encode regular load and store instructions that transfer data between a register and memory.”h]”(hŒThe ”…”�”}”(hj´;h²hh³Nh´Nubj )�”}”(hŒ``MEM``”h]”hŒMEM”…”�”}”(hj¼;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´;ubhŒv mode modifier is used to encode regular load and store instructions that transfer data between a register and memory.”…”�”}”(hj´;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mrhj–;h²hubh×)�”}”(hŒ``{MEM, , STX}`` means::”h]”(j )�”}”(hŒ``{MEM, , STX}``”h]”hŒ{MEM, , STX}”…”�”}”(hjØ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔ;ubhŒ means:”…”�”}”(hjÔ;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Muhj–;h²hubjž )�”}”(hŒ*(size *) (dst + offset) = src”h]”hŒ*(size *) (dst + offset) = src”…”�”}”hjð;sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mwhj–;h²hubh×)�”}”(hŒ``{MEM, , ST}`` means::”h]”(j )�”}”(hŒ``{MEM, , ST}``”h]”hŒ{MEM, , ST}”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjþ;ubhŒ means:”…”�”}”(hjþ;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Myhj–;h²hubjž )�”}”(hŒ*(size *) (dst + offset) = imm”h]”hŒ*(size *) (dst + offset) = imm”…”�”}”hj<sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M{hj–;h²hubh×)�”}”(hŒ``{MEM, , LDX}`` means::”h]”(j )�”}”(hŒ``{MEM, , LDX}``”h]”hŒ{MEM, , LDX}”…”�”}”(hj,<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj(<ubhŒ means:”…”�”}”(hj(<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M}hj–;h²hubjž )�”}”(hŒ'dst = *(unsigned size *) (src + offset)”h]”hŒ'dst = *(unsigned size *) (src + offset)”…”�”}”hjD<sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´Mhj–;h²hubh×)�”}”(hŒnWhere '' is one of: ``B``, ``H``, ``W``, or ``DW``, and 'unsigned size' is one of: u8, u16, u32, or u64.”h]”(hŒWhere ‘’ is one of: ”…”�”}”(hjR<h²hh³Nh´Nubj )�”}”(hŒ``B``”h]”hŒB”…”�”}”(hjZ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjR<ubhŒ, ”…”�”}”(hjR<h²hh³Nh´Nubj )�”}”(hŒ``H``”h]”hŒH”…”�”}”(hjl<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjR<ubhŒ, ”…”�”}”hjR<sbj )�”}”(hŒ``W``”h]”hŒW”…”�”}”(hj~<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjR<ubhŒ, or ”…”�”}”(hjR<h²hh³Nh´Nubj )�”}”(hŒ``DW``”h]”hŒDW”…”�”}”(hj�<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjR<ubhŒ:, and ‘unsigned size’ is one of: u8, u16, u32, or u64.”…”�”}”(hjR<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M�hj–;h²hubeh}”(h]”j:ah ]”h"]”Œ!regular load and store operations”ah$]”h&]”uh1j‘hjü4h²hh³hËh´MpjKubj’)�”}”(hhh]”(h¼)�”}”(hŒSign-extension load operations”h]”(há)�”}”(hhh]”hŒ 1.4.2   ”…”�”}”(hj¶<h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj²<h²hh³Nh´NubhŒSign-extension load operations”…”�”}”(hj²<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jcuh1h»hj¯<h²hh³hËh´M…ubh×)�”}”(hŒ•The ``MEMSX`` mode modifier is used to encode :term:`sign-extension` load instructions that transfer data between a register and memory.”h]”(hŒThe ”…”�”}”(hjÍ<h²hh³Nh´Nubj )�”}”(hŒ ``MEMSX``”h]”hŒMEMSX”…”�”}”(hjÕ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍ<ubhŒ! mode modifier is used to encode ”…”�”}”(hjÍ<h²hh³Nh´Nubh)�”}”(hŒ#:term:`sign-extension`”h]”jß )�”}”(hjé<h]”hŒsign-extension”…”�”}”(hjë<h²hh³Nh´Nubah}”(h]”h ]”(jê Œstd”Œstd-term”eh"]”h$]”h&]”uh1jÞ hjç<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j÷ Œ refdomain”jõ<Œreftype”Œterm”Œ refexplicit”ˆŒrefwarn”ˆjý Œ Sign Extend”uh1hh³hËh´M‡hjÍ<ubhŒD load instructions that transfer data between a register and memory.”…”�”}”(hjÍ<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M‡hj¯<h²hubh×)�”}”(hŒ ``{MEMSX, , LDX}`` means::”h]”(j )�”}”(hŒ``{MEMSX, , LDX}``”h]”hŒ{MEMSX, , LDX}”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=ubhŒ means:”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MŠhj¯<h²hubjž )�”}”(hŒ%dst = *(signed size *) (src + offset)”h]”hŒ%dst = *(signed size *) (src + offset)”…”�”}”hj-=sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´MŒhj¯<h²hubh×)�”}”(hŒ_Where '' is one of: ``B``, ``H``, or ``W``, and 'signed size' is one of: s8, s16, or s32.”h]”(hŒWhere ‘’ is one of: ”…”�”}”(hj;=h²hh³Nh´Nubj )�”}”(hŒ``B``”h]”hŒB”…”�”}”(hjC=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;=ubhŒ, ”…”�”}”(hj;=h²hh³Nh´Nubj )�”}”(hŒ``H``”h]”hŒH”…”�”}”(hjU=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;=ubhŒ, or ”…”�”}”(hj;=h²hh³Nh´Nubj )�”}”(hŒ``W``”h]”hŒW”…”�”}”(hjg=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;=ubhŒ3, and ‘signed size’ is one of: s8, s16, or s32.”…”�”}”(hj;=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MŽhj¯<h²hubeh}”(h]”jiah ]”h"]”Œsign-extension load operations”ah$]”h&]”uh1j‘hjü4h²hh³hËh´M…jKubj’)�”}”(hhh]”(h¼)�”}”(hŒAtomic operations”h]”(há)�”}”(hhh]”hŒ 1.4.3   ”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj‰=h²hh³Nh´NubhŒAtomic operations”…”�”}”(hj‰=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²j’uh1h»hj†=h²hh³hËh´M’ubh×)�”}”(hŒÇAtomic operations are operations that operate on memory and can not be interrupted or corrupted by other access to the same memory region by other BPF programs or means outside of this specification.”h]”hŒÇAtomic operations are operations that operate on memory and can not be interrupted or corrupted by other access to the same memory region by other BPF programs or means outside of this specification.”…”�”}”(hj¤=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M”hj†=h²hubh×)�”}”(hŒxAll atomic operations supported by BPF are encoded as store operations that use the ``ATOMIC`` mode modifier as follows:”h]”(hŒTAll atomic operations supported by BPF are encoded as store operations that use the ”…”�”}”(hj²=h²hh³Nh´Nubj )�”}”(hŒ ``ATOMIC``”h]”hŒATOMIC”…”�”}”(hjº=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj²=ubhŒ mode modifier as follows:”…”�”}”(hj²=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M˜hj†=h²hubhÍ)�”}”(hhh]”(hÒ)�”}”(hŒ_``{ATOMIC, W, STX}`` for 32-bit operations, which are part of the "atomic32" conformance group.”h]”h×)�”}”(hŒ_``{ATOMIC, W, STX}`` for 32-bit operations, which are part of the "atomic32" conformance group.”h]”(j )�”}”(hŒ``{ATOMIC, W, STX}``”h]”hŒ{ATOMIC, W, STX}”…”�”}”(hjÝ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙ=ubhŒO for 32-bit operations, which are part of the “atomic32â€� conformance group.”…”�”}”(hjÙ=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M›hjÕ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjÒ=h²hh³hËh´NubhÒ)�”}”(hŒ```{ATOMIC, DW, STX}`` for 64-bit operations, which are part of the "atomic64" conformance group.”h]”h×)�”}”(hŒ```{ATOMIC, DW, STX}`` for 64-bit operations, which are part of the "atomic64" conformance group.”h]”(j )�”}”(hŒ``{ATOMIC, DW, STX}``”h]”hŒ{ATOMIC, DW, STX}”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ=ubhŒO for 64-bit operations, which are part of the “atomic64â€� conformance group.”…”�”}”(hjÿ=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M�hjû=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjÒ=h²hh³hËh´NubhÒ)�”}”(hŒ;8-bit and 16-bit wide atomic operations are not supported. ”h]”h×)�”}”(hŒ:8-bit and 16-bit wide atomic operations are not supported.”h]”hŒ:8-bit and 16-bit wide atomic operations are not supported.”…”�”}”(hj%>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MŸhj!>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhjÒ=h²hh³hËh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j¨ j© uh1hÌh³hËh´M›hj†=h²hubh×)�”}”(hŒÌThe 'imm' field is used to encode the actual atomic operation. Simple atomic operation use a subset of the values defined to encode arithmetic operations in the 'imm' field to encode the atomic operation:”h]”hŒÔThe ‘imm’ field is used to encode the actual atomic operation. Simple atomic operation use a subset of the values defined to encode arithmetic operations in the ‘imm’ field to encode the atomic operation:”…”�”}”(hj?>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¡hj†=h²hubj´)�”}”(hhh]”(h¼)�”}”(hŒSimple atomic operations”h]”hŒSimple atomic operations”…”�”}”(hjP>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´M¥hjM>ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj^>ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj^>ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jËhj^>ubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒimm”h]”hŒimm”…”�”}”(hjˆ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¨hj…>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj‚>ubjì)�”}”(hhh]”h×)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjŸ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¨hjœ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj‚>ubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hj¶>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¨hj³>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj‚>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj^>ubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒADD”h]”hŒADD”…”�”}”(hjß>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MªhjÜ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÙ>ubjì)�”}”(hhh]”h×)�”}”(hŒ0x00”h]”hŒ0x00”…”�”}”(hjö>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mªhjó>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÙ>ubjì)�”}”(hhh]”h×)�”}”(hŒ atomic add”h]”hŒ atomic add”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mªhj ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÙ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÖ>ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒOR”h]”hŒOR”…”�”}”(hj-?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M«hj*?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj'?ubjì)�”}”(hhh]”h×)�”}”(hŒ0x40”h]”hŒ0x40”…”�”}”(hjD?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M«hjA?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj'?ubjì)�”}”(hhh]”h×)�”}”(hŒ atomic or”h]”hŒ atomic or”…”�”}”(hj[?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M«hjX?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj'?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÖ>ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒAND”h]”hŒAND”…”�”}”(hj{?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¬hjx?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhju?ubjì)�”}”(hhh]”h×)�”}”(hŒ0x50”h]”hŒ0x50”…”�”}”(hj’?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¬hj�?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhju?ubjì)�”}”(hhh]”h×)�”}”(hŒ atomic and”h]”hŒ atomic and”…”�”}”(hj©?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¬hj¦?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhju?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÖ>ubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒXOR”h]”hŒXOR”…”�”}”(hjÉ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M­hjÆ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÃ?ubjì)�”}”(hhh]”h×)�”}”(hŒ0xa0”h]”hŒ0xa0”…”�”}”(hjà?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M­hjÝ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÃ?ubjì)�”}”(hhh]”h×)�”}”(hŒ atomic xor”h]”hŒ atomic xor”…”�”}”(hj÷?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M­hjô?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÃ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÖ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hj^>ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhjM>ubeh}”(h]”Œid10”ah ]”h"]”h$]”h&]”uh1j³hj†=h²hh³hËh´Nubh×)�”}”(hŒ-``{ATOMIC, W, STX}`` with 'imm' = ADD means::”h]”(j )�”}”(hŒ``{ATOMIC, W, STX}``”h]”hŒ{ATOMIC, W, STX}”…”�”}”(hj)@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj%@ubhŒ with ‘imm’ = ADD means:”…”�”}”(hj%@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M±hj†=h²hubjž )�”}”(hŒ*(u32 *)(dst + offset) += src”h]”hŒ*(u32 *)(dst + offset) += src”…”�”}”hjA@sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M³hj†=h²hubh×)�”}”(hŒ.``{ATOMIC, DW, STX}`` with 'imm' = ADD means::”h]”(j )�”}”(hŒ``{ATOMIC, DW, STX}``”h]”hŒ{ATOMIC, DW, STX}”…”�”}”(hjS@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjO@ubhŒ with ‘imm’ = ADD means:”…”�”}”(hjO@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mµhj†=h²hubjž )�”}”(hŒ*(u64 *)(dst + offset) += src”h]”hŒ*(u64 *)(dst + offset) += src”…”�”}”hjk@sbah}”(h]”h ]”h"]”h$]”h&]”j­ j® uh1j� h³hËh´M·hj†=h²hubh×)�”}”(hŒhIn addition to the simple atomic operations, there also is a modifier and two complex atomic operations:”h]”hŒhIn addition to the simple atomic operations, there also is a modifier and two complex atomic operations:”…”�”}”(hjy@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¹hj†=h²hubj´)�”}”(hhh]”(h¼)�”}”(hŒComplex atomic operations”h]”hŒComplex atomic operations”…”�”}”(hjŠ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´M¼hj‡@ubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jËhj˜@ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj˜@ubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj˜@ubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒimm”h]”hŒimm”…”�”}”(hjÂ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¿hj¿@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¼@ubjì)�”}”(hhh]”h×)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjÙ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¿hjÖ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¼@ubjì)�”}”(hhh]”h×)�”}”(hŒ description”h]”hŒ description”…”�”}”(hjð@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M¿hjí@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¼@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhj¹@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj˜@ubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒFETCH”h]”hŒFETCH”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÁhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjAubjì)�”}”(hhh]”h×)�”}”(hŒ0x01”h]”hŒ0x01”…”�”}”(hj0Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÁhj-Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjAubjì)�”}”(hhh]”h×)�”}”(hŒmodifier: return old value”h]”hŒmodifier: return old value”…”�”}”(hjGAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÁhjDAubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjAubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒXCHG”h]”hŒXCHG”…”�”}”(hjgAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÂhjdAubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjaAubjì)�”}”(hhh]”h×)�”}”(hŒ 0xe0 | FETCH”h]”hŒ 0xe0 | FETCH”…”�”}”(hj~Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÂhj{Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjaAubjì)�”}”(hhh]”h×)�”}”(hŒatomic exchange”h]”hŒatomic exchange”…”�”}”(hj•Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÂhj’Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjaAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjAubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒCMPXCHG”h]”hŒCMPXCHG”…”�”}”(hjµAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÃhj²Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯Aubjì)�”}”(hhh]”h×)�”}”(hŒ 0xf0 | FETCH”h]”hŒ 0xf0 | FETCH”…”�”}”(hjÌAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÃhjÉAubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯Aubjì)�”}”(hhh]”h×)�”}”(hŒatomic compare and exchange”h]”hŒatomic compare and exchange”…”�”}”(hjãAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÃhjàAubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj¯Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hj˜@ubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhj‡@ubeh}”(h]”Œid11”ah ]”h"]”h$]”h&]”uh1j³hj†=h²hh³hËh´Nubh×)�”}”(hŒöThe ``FETCH`` modifier is optional for simple atomic operations, and always set for the complex atomic operations. If the ``FETCH`` flag is set, then the operation also overwrites ``src`` with the value that was in memory before it was modified.”h]”(hŒThe ”…”�”}”(hjBh²hh³Nh´Nubj )�”}”(hŒ ``FETCH``”h]”hŒFETCH”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBubhŒn modifier is optional for simple atomic operations, and always set for the complex atomic operations. If the ”…”�”}”(hjBh²hh³Nh´Nubj )�”}”(hŒ ``FETCH``”h]”hŒFETCH”…”�”}”(hj+Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBubhŒ1 flag is set, then the operation also overwrites ”…”�”}”(hjBh²hh³Nh´Nubj )�”}”(hŒ``src``”h]”hŒsrc”…”�”}”(hj=Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBubhŒ: with the value that was in memory before it was modified.”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÆhj†=h²hubh×)�”}”(hŒaThe ``XCHG`` operation atomically exchanges ``src`` with the value addressed by ``dst + offset``.”h]”(hŒThe ”…”�”}”(hjUBh²hh³Nh´Nubj )�”}”(hŒ``XCHG``”h]”hŒXCHG”…”�”}”(hj]Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjUBubhŒ operation atomically exchanges ”…”�”}”(hjUBh²hh³Nh´Nubj )�”}”(hŒ``src``”h]”hŒsrc”…”�”}”(hjoBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjUBubhŒ with the value addressed by ”…”�”}”(hjUBh²hh³Nh´Nubj )�”}”(hŒ``dst + offset``”h]”hŒ dst + offset”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjUBubhŒ.”…”�”}”(hjUBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MËhj†=h²hubh×)�”}”(hX+The ``CMPXCHG`` operation atomically compares the value addressed by ``dst + offset`` with ``R0``. If they match, the value addressed by ``dst + offset`` is replaced with ``src``. In either case, the value that was at ``dst + offset`` before the operation is zero-extended and loaded back to ``R0``.”h]”(hŒThe ”…”�”}”(hj™Bh²hh³Nh´Nubj )�”}”(hŒ ``CMPXCHG``”h]”hŒCMPXCHG”…”�”}”(hj¡Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™BubhŒ6 operation atomically compares the value addressed by ”…”�”}”(hj™Bh²hh³Nh´Nubj )�”}”(hŒ``dst + offset``”h]”hŒ dst + offset”…”�”}”(hj³Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™BubhŒ with ”…”�”}”(hj™Bh²hh³Nh´Nubj )�”}”(hŒ``R0``”h]”hŒR0”…”�”}”(hjÅBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™BubhŒ(. If they match, the value addressed by ”…”�”}”(hj™Bh²hh³Nh´Nubj )�”}”(hŒ``dst + offset``”h]”hŒ dst + offset”…”�”}”(hj×Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™BubhŒ is replaced with ”…”�”}”(hj™Bh²hh³Nh´Nubj )�”}”(hŒ``src``”h]”hŒsrc”…”�”}”(hjéBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™BubhŒ(. In either case, the value that was at ”…”�”}”(hj™Bh²hh³Nh´Nubj )�”}”(hŒ``dst + offset``”h]”hŒ dst + offset”…”�”}”(hjûBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™BubhŒ: before the operation is zero-extended and loaded back to ”…”�”}”(hj™Bh²hh³Nh´Nubj )�”}”(hŒ``R0``”h]”hŒR0”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™BubhŒ.”…”�”}”(hj™Bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÎhj†=h²hubeh}”(h]”j˜ah ]”h"]”Œatomic operations”ah$]”h&]”uh1j‘hjü4h²hh³hËh´M’jKubj’)�”}”(hhh]”(h¼)�”}”(hŒ64-bit immediate instructions”h]”(há)�”}”(hhh]”hŒ 1.4.4   ”…”�”}”(hj3Ch²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj/Ch²hh³Nh´NubhŒ64-bit immediate instructions”…”�”}”(hj/Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jÁuh1h»hj,Ch²hh³hËh´MÕubh×)�”}”(hŒÃInstructions with the ``IMM`` 'mode' modifier use the wide instruction encoding defined in `Instruction encoding`_, and use the 'src_reg' field of the basic instruction to hold an opcode subtype.”h]”(hŒInstructions with the ”…”�”}”(hjJCh²hh³Nh´Nubj )�”}”(hŒ``IMM``”h]”hŒIMM”…”�”}”(hjRCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjJCubhŒB ‘mode’ modifier use the wide instruction encoding defined in ”…”�”}”(hjJCh²hh³Nh´NubhÜ)�”}”(hŒ`Instruction encoding`_”h]”hŒInstruction encoding”…”�”}”(hjdCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒInstruction encoding”j²juh1hÛhjJCja KubhŒU, and use the ‘src_reg’ field of the basic instruction to hold an opcode subtype.”…”�”}”(hjJCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´M×hj,Ch²hubh×)�”}”(hŒ¥The following table defines a set of ``{IMM, DW, LD}`` instructions with opcode subtypes in the 'src_reg' field, using new terms such as "map" defined further below:”h]”(hŒ%The following table defines a set of ”…”�”}”(hj~Ch²hh³Nh´Nubj )�”}”(hŒ``{IMM, DW, LD}``”h]”hŒ {IMM, DW, LD}”…”�”}”(hj†Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj~CubhŒw instructions with opcode subtypes in the ‘src_reg’ field, using new terms such as “mapâ€� defined further below:”…”�”}”(hj~Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÛhj,Ch²hubj´)�”}”(hhh]”(h¼)�”}”(hŒ64-bit immediate instructions”h]”hŒ64-bit immediate instructions”…”�”}”(hj¡Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h»h³hËh´MßhjžCubjÇ)�”}”(hhh]”(jÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj¯CubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K)uh1jËhj¯CubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jËhj¯CubjÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jËhj¯Cubjâ)�”}”(hhh]”jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒsrc_reg”h]”hŒsrc_reg”…”�”}”(hjãCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MâhjàCubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÝCubjì)�”}”(hhh]”h×)�”}”(hŒ pseudocode”h]”hŒ pseudocode”…”�”}”(hjúCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mâhj÷Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÝCubjì)�”}”(hhh]”h×)�”}”(hŒimm type”h]”hŒimm type”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MâhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÝCubjì)�”}”(hhh]”h×)�”}”(hŒdst type”h]”hŒdst type”…”�”}”(hj(Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mâhj%Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjÝCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjÚCubah}”(h]”h ]”h"]”h$]”h&]”uh1jáhj¯Cubj()�”}”(hhh]”(jç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ0x0”h]”hŒ0x0”…”�”}”(hjQDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MähjNDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjKDubjì)�”}”(hhh]”h×)�”}”(hŒdst = (next_imm << 32) | imm”h]”hŒdst = (next_imm << 32) | imm”…”�”}”(hjhDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MähjeDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjKDubjì)�”}”(hhh]”h×)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mähj|Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjKDubjì)�”}”(hhh]”h×)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hj–Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mähj“Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjKDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjHDubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ0x1”h]”hŒ0x1”…”�”}”(hj¶Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Måhj³Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj°Dubjì)�”}”(hhh]”h×)�”}”(hŒdst = map_by_fd(imm)”h]”hŒdst = map_by_fd(imm)”…”�”}”(hjÍDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MåhjÊDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj°Dubjì)�”}”(hhh]”h×)�”}”(hŒmap fd”h]”hŒmap fd”…”�”}”(hjäDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MåhjáDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj°Dubjì)�”}”(hhh]”h×)�”}”(hŒmap”h]”hŒmap”…”�”}”(hjûDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MåhjøDubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj°Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjHDubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ0x2”h]”hŒ0x2”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MæhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjEubjì)�”}”(hhh]”h×)�”}”(hŒ(dst = map_val(map_by_fd(imm)) + next_imm”h]”hŒ(dst = map_val(map_by_fd(imm)) + next_imm”…”�”}”(hj2Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mæhj/Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjEubjì)�”}”(hhh]”h×)�”}”(hŒmap fd”h]”hŒmap fd”…”�”}”(hjIEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MæhjFEubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjEubjì)�”}”(hhh]”h×)�”}”(hŒ data address”h]”hŒ data address”…”�”}”(hj`Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mæhj]Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjHDubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ0x3”h]”hŒ0x3”…”�”}”(hj€Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mçhj}Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjzEubjì)�”}”(hhh]”h×)�”}”(hŒdst = var_addr(imm)”h]”hŒdst = var_addr(imm)”…”�”}”(hj—Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mçhj”Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjzEubjì)�”}”(hhh]”h×)�”}”(hŒ variable id”h]”hŒ variable id”…”�”}”(hj®Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mçhj«Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjzEubjì)�”}”(hhh]”h×)�”}”(hŒ data address”h]”hŒ data address”…”�”}”(hjÅEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MçhjÂEubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjzEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjHDubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ0x4”h]”hŒ0x4”…”�”}”(hjåEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MèhjâEubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjßEubjì)�”}”(hhh]”h×)�”}”(hŒdst = code_addr(imm)”h]”hŒdst = code_addr(imm)”…”�”}”(hjüEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MèhjùEubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjßEubjì)�”}”(hhh]”h×)�”}”(hŒinteger”h]”hŒinteger”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MèhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjßEubjì)�”}”(hhh]”h×)�”}”(hŒ code address”h]”hŒ code address”…”�”}”(hj*Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mèhj'Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjßEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjHDubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ0x5”h]”hŒ0x5”…”�”}”(hjJFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MéhjGFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjDFubjì)�”}”(hhh]”h×)�”}”(hŒdst = map_by_idx(imm)”h]”hŒdst = map_by_idx(imm)”…”�”}”(hjaFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Méhj^Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjDFubjì)�”}”(hhh]”h×)�”}”(hŒ map index”h]”hŒ map index”…”�”}”(hjxFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MéhjuFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjDFubjì)�”}”(hhh]”h×)�”}”(hŒmap”h]”hŒmap”…”�”}”(hj�Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MéhjŒFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhjDFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjHDubjç)�”}”(hhh]”(jì)�”}”(hhh]”h×)�”}”(hŒ0x6”h]”hŒ0x6”…”�”}”(hj¯Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mêhj¬Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj©Fubjì)�”}”(hhh]”h×)�”}”(hŒ)dst = map_val(map_by_idx(imm)) + next_imm”h]”hŒ)dst = map_val(map_by_idx(imm)) + next_imm”…”�”}”(hjÆFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MêhjÃFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj©Fubjì)�”}”(hhh]”h×)�”}”(hŒ map index”h]”hŒ map index”…”�”}”(hjÝFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MêhjÚFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj©Fubjì)�”}”(hhh]”h×)�”}”(hŒ data address”h]”hŒ data address”…”�”}”(hjôFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MêhjñFubah}”(h]”h ]”h"]”h$]”h&]”uh1jëhj©Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jæhjHDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j'hj¯Cubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÆhjžCubeh}”(h]”Œid12”ah ]”h"]”h$]”h&]”uh1j³hj,Ch²hh³hËh´Nubh×)�”}”(hŒwhere”h]”hŒwhere”…”�”}”(hj"Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Míhj,Ch²hubhÍ)�”}”(hhh]”(hÒ)�”}”(hŒ_map_by_fd(imm) means to convert a 32-bit file descriptor into an address of a map (see `Maps`_)”h]”h×)�”}”(hj5Gh]”(hŒWmap_by_fd(imm) means to convert a 32-bit file descriptor into an address of a map (see ”…”�”}”(hj7Gh²hh³Nh´NubhÜ)�”}”(hŒ`Maps`_”h]”hŒMaps”…”�”}”(hj>Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒMaps”j²jóuh1hÛhj7Gja KubhŒ)”…”�”}”(hj7Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mïhj3Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj0Gh²hh³hËh´NubhÒ)�”}”(hŒHmap_by_idx(imm) means to convert a 32-bit index into an address of a map”h]”h×)�”}”(hj`Gh]”hŒHmap_by_idx(imm) means to convert a 32-bit index into an address of a map”…”�”}”(hjbGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mðhj^Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj0Gh²hh³hËh´NubhÒ)�”}”(hŒ?map_val(map) gets the address of the first value in a given map”h]”h×)�”}”(hjwGh]”hŒ?map_val(map) gets the address of the first value in a given map”…”�”}”(hjyGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MñhjuGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj0Gh²hh³hËh´NubhÒ)�”}”(hŒavar_addr(imm) gets the address of a platform variable (see `Platform Variables`_) with a given id”h]”h×)�”}”(hjŽGh]”(hŒ;var_addr(imm) gets the address of a platform variable (see ”…”�”}”(hj�Gh²hh³Nh´NubhÜ)�”}”(hŒ`Platform Variables`_”h]”hŒPlatform Variables”…”�”}”(hj—Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”ŒPlatform Variables”j²j"uh1hÛhj�Gja KubhŒ) with a given id”…”�”}”(hj�Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MòhjŒGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj0Gh²hh³hËh´NubhÒ)�”}”(hŒtcode_addr(imm) gets the address of the instruction at a specified relative offset in number of (64-bit) instructions”h]”h×)�”}”(hj¹Gh]”hŒtcode_addr(imm) gets the address of the instruction at a specified relative offset in number of (64-bit) instructions”…”�”}”(hj»Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Móhj·Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj0Gh²hh³hËh´NubhÒ)�”}”(hŒ7the 'imm type' can be used by disassemblers for display”h]”h×)�”}”(hjÐGh]”hŒ;the ‘imm type’ can be used by disassemblers for display”…”�”}”(hjÒGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MôhjÎGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj0Gh²hh³hËh´NubhÒ)�”}”(hŒIthe 'dst type' can be used for verification and JIT compilation purposes ”h]”h×)�”}”(hŒHthe 'dst type' can be used for verification and JIT compilation purposes”h]”hŒLthe ‘dst type’ can be used for verification and JIT compilation purposes”…”�”}”(hjéGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MõhjåGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÑhj0Gh²hh³hËh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j¨ j© uh1hÌh³hËh´Mïhj,Ch²hubj’)�”}”(hhh]”(h¼)�”}”(hŒMaps”h]”(há)�”}”(hhh]”hŒ 1.4.4.1   ”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhjHh²hh³Nh´NubhŒMaps”…”�”}”(hjHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jíuh1h»hjHh²hh³hËh´Møubh×)�”}”(hX5Maps are shared memory regions accessible by BPF programs on some platforms. A map can have various semantics as defined in a separate document, and may or may not have a single contiguous memory region, but the 'map_val(map)' is currently only defined for maps that do have a single contiguous memory region.”h]”hX9Maps are shared memory regions accessible by BPF programs on some platforms. A map can have various semantics as defined in a separate document, and may or may not have a single contiguous memory region, but the ‘map_val(map)’ is currently only defined for maps that do have a single contiguous memory region.”…”�”}”(hj!Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MúhjHh²hubh×)�”}”(hX�Each map can have a file descriptor (fd) if supported by the platform, where 'map_by_fd(imm)' means to get the map with the specified file descriptor. Each BPF program can also be defined to use a set of maps associated with the program at load time, and 'map_by_idx(imm)' means to get the map with the given index in the set associated with the BPF program containing the instruction.”h]”hX‰Each map can have a file descriptor (fd) if supported by the platform, where ‘map_by_fd(imm)’ means to get the map with the specified file descriptor. Each BPF program can also be defined to use a set of maps associated with the program at load time, and ‘map_by_idx(imm)’ means to get the map with the given index in the set associated with the BPF program containing the instruction.”…”�”}”(hj/Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MÿhjHh²hubeh}”(h]”jóah ]”h"]”Œmaps”ah$]”h&]”uh1j‘hj,Ch²hh³hËh´MøjKubj’)�”}”(hhh]”(h¼)�”}”(hŒPlatform Variables”h]”(há)�”}”(hhh]”hŒ 1.4.4.2   ”…”�”}”(hjKHh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhjGHh²hh³Nh´NubhŒPlatform Variables”…”�”}”(hjGHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²juh1h»hjDHh²hh³hËh´Mubh×)�”}”(hŒóPlatform variables are memory regions, identified by integer ids, exposed by the runtime and accessible by BPF programs on some platforms. The 'var_addr(imm)' operation means to get the address of the memory region identified by the given id.”h]”hŒ÷Platform variables are memory regions, identified by integer ids, exposed by the runtime and accessible by BPF programs on some platforms. The ‘var_addr(imm)’ operation means to get the address of the memory region identified by the given id.”…”�”}”(hjbHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´MhjDHh²hubeh}”(h]”j"ah ]”h"]”Œplatform variables”ah$]”h&]”uh1j‘hj,Ch²hh³hËh´MjKubeh}”(h]”jÇah ]”h"]”Œ64-bit immediate instructions”ah$]”h&]”uh1j‘hjü4h²hh³hËh´MÕjKubj’)�”}”(hhh]”(h¼)�”}”(hŒ%Legacy BPF Packet access instructions”h]”(há)�”}”(hhh]”hŒ 1.4.5   ”…”�”}”(hj…Hh²hh³Nh´Nubah}”(h]”h ]”hìah"]”h$]”h&]”uh1hàhj�Hh²hh³Nh´NubhŒ%Legacy BPF Packet access instructions”…”�”}”(hj�Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j±Kj²jWuh1h»hj~Hh²hh³hËh´Mubh×)�”}”(hXúBPF previously introduced special instructions for access to packet data that were carried over from classic BPF. These instructions used an instruction class of ``LD``, a size modifier of ``W``, ``H``, or ``B``, and a mode modifier of ``ABS`` or ``IND``. The 'dst_reg' and 'offset' fields were set to zero, and 'src_reg' was set to zero for ``ABS``. However, these instructions are deprecated and SHOULD no longer be used. All legacy packet access instructions belong to the "packet" conformance group.”h]”(hŒ¢BPF previously introduced special instructions for access to packet data that were carried over from classic BPF. These instructions used an instruction class of ”…”�”}”(hjœHh²hh³Nh´Nubj )�”}”(hŒ``LD``”h]”hŒLD”…”�”}”(hj¤Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœHubhŒ, a size modifier of ”…”�”}”(hjœHh²hh³Nh´Nubj )�”}”(hŒ``W``”h]”hŒW”…”�”}”(hj¶Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœHubhŒ, ”…”�”}”(hjœHh²hh³Nh´Nubj )�”}”(hŒ``H``”h]”hŒH”…”�”}”(hjÈHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœHubhŒ, or ”…”�”}”(hjœHh²hh³Nh´Nubj )�”}”(hŒ``B``”h]”hŒB”…”�”}”(hjÚHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœHubhŒ, and a mode modifier of ”…”�”}”(hjœHh²hh³Nh´Nubj )�”}”(hŒ``ABS``”h]”hŒABS”…”�”}”(hjìHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœHubhŒ or ”…”�”}”(hjœHh²hh³Nh´Nubj )�”}”(hŒ``IND``”h]”hŒIND”…”�”}”(hjþHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœHubhŒe. The ‘dst_reg’ and ‘offset’ fields were set to zero, and ‘src_reg’ was set to zero for ”…”�”}”(hjœHh²hh³Nh´Nubj )�”}”(hŒ``ABS``”h]”hŒABS”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœHubhŒ . However, these instructions are deprecated and SHOULD no longer be used. All legacy packet access instructions belong to the “packetâ€� conformance group.”…”�”}”(hjœHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÖh³hËh´Mhj~Hh²hubeh}”(h]”j]ah ]”h"]”Œ%legacy bpf packet access instructions”ah$]”h&]”uh1j‘hjü4h²hh³hËh´MjKubeh}”(h]”jah ]”h"]”Œload and store instructions”ah$]”h&]”uh1j‘hj“h²hh³hËh´MCjKubeh}”(h]”hüah ]”h"]”Œ&bpf instruction set architecture (isa)”ah$]”h&]”uh1j‘hhh²hh³hËh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hËuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(h»NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jëŒfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j_IŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hËŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œatomic operations”]”(jQ j×8eŒinstruction classes”]”(j"jxjj;eŒ64-bit immediate instructions”]”(jÙj¨6eŒload and store instructions”]”(jÎj>j®jeŒ arithmetic and jump instructions”]”(jŽjþjnjÞeŒbyte swap instructions”]”jg!aŒhelper functions”]”(jb/jz0eŒprogram-local functions”]”jî/aŒ%legacy bpf packet access instructions”]”(j7j‡7eŒ!regular load and store operations”•A]”j÷7aŒsign-extension load operations”]”jg8aŒinstruction encoding”]”jdCaŒmaps”]”j>GaŒplatform variables”]”j—GauŒrefids”}”Œnameids”}”(jŽjŠj:Ihüjá j(jjj3j0jv jTj® jƒjÎ jË jº j²jÚ jájjjûjIj£jxjj§jù4jâjy&jj©)j=jò4jlj”4j˜jë4jÇj3Ijj¬<j:jƒ=jij)Cj˜j{HjÇjAHjójtHj"j,Ij]uŒ nametypes”}”(jމj:I‰já ‰jˆj3ˆjv ‰j® ‰jÎ ˆjº ‰jÚ ‰j‰jû‰j£‰j‰jù4‰jy&‰j©)‰jò4‰j”4‰jë4‰j3I‰j¬<‰jƒ=‰j)C‰j{H‰jAH‰jtH‰j,I‰uh}”(jŠh·hüj“j(jÏjjj0j*jTjOjƒjy jË jÅ j²j± j÷ jà jáj½ jjä jIjHjxjþj§j¦jâj!jj¤j=j|&jlj¬)j˜jH4jÇj—4jjü4j:j–;jij¯<j˜j†=jÇj,CjójHj"jDHj]j~Hj©jµj; j®jjÒjAj jœ!jj)j'j3jø)j9j­5j;jD9j @jM>j Bj‡@jGjžChöhÝj"j jNj8j}jgj¬j–jÛjÅjjjCj-jrj\j¡j‹jÜjÆjjòj7j!jfjPj’j|jÁj«jjòj4jjcjMj’j|jÁj«jíj×jjjWjAuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”jmIK$s…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.