feat(arch): add the amd64 fp16 packed imm8-control group

Assisted-by: GLM 5.3
This commit is contained in:
petrbalvin committed 2026-10-07 13:51:48 +02:00
1 parent 8de1b371da
commit d03de62c07
4 files changed
+158 -10

No files matched your search

+11 -1
View File
@@ -480,6 +480,11 @@ const (
// where dest is an opmask register and the immediate's layout is named
// by the entry's Imm8 kind.
ExtFormAmdMask2Imm
// ExtFormAmdVec2Imm is the two-vector form with a control immediate,
// VRNDSCALEPH $0x7b, Z5, Z6 style: the immediate leads, the order the
// reference listings write it in. Operands: imm, src, dest, and the
// immediate's layout is named by the entry's Imm8 kind.
ExtFormAmdVec2Imm
// ExtFormAmdMemVec is the memory-load form: VMOVSH X30, 4660(R8) shape,
// the manual's xmm1, m16 lines that stand beside the register form.
// Operands: mem, dest.
@@ -685,6 +690,8 @@ func (f ExtForm) Arity() int {
return 2
case ExtFormAmdVec3Imm, ExtFormAmdMask2Imm:
return 4
case ExtFormAmdVec2Imm:
return 3
case ExtFormAmdMemVec, ExtFormAmdVecMem:
return 2
case ExtFormPredicateOne, ExtFormPredicateWrite, ExtFormPredicateCounter:
@@ -808,6 +815,8 @@ func (f ExtForm) String() string {
return "immediate, three vectors"
case ExtFormAmdMask2Imm:
return "immediate, two vectors into an opmask"
case ExtFormAmdVec2Imm:
return "immediate and two vectors"
case ExtFormAmdMemVec:
return "memory into a vector"
case ExtFormAmdVecMem:
@@ -1057,7 +1066,8 @@ func (in ExtInstr) Encode(ops []ExtOperand) ([]byte, error) {
case ExtFormAmdVec3, ExtFormAmdVec2, ExtFormAmdVec2Half, ExtFormAmdMask2,
ExtFormAmdVecGprVec, ExtFormAmdGprVec, ExtFormAmdVecGpr,
ExtFormAmdVec3Imm, ExtFormAmdMask2Imm, ExtFormAmdMemVec, ExtFormAmdVecMem,
ExtFormAmdVec2Wide, ExtFormAmdVec2Quarter, ExtFormAmdVec2ToQuarter:
ExtFormAmdVec2Wide, ExtFormAmdVec2Quarter, ExtFormAmdVec2ToQuarter,
ExtFormAmdVec2Imm:
return in.encodeAmd64(ops)
case ExtFormPredicateLogical, ExtFormPredicateSelect:
return in.encodePredicateLogical(ops)