diff --git a/asm/extension_amd64_test.go b/asm/extension_amd64_test.go index a058b46..3ed7b46 100644 --- a/asm/extension_amd64_test.go +++ b/asm/extension_amd64_test.go @@ -189,6 +189,21 @@ func TestEncodeExtensionAmd64(t *testing.T) { {"packed fp16 rounding to fraction bits", "VRNDSCALEPH", []arch.ExtOperand{arch.ExtImmediate(0x7b), arch.ExtZmm(5), arch.ExtZmm(6)}, "62f37c4808f57b"}, + {"packed fused multiply-add, high registers", "VFMADD132PH", + []arch.ExtOperand{arch.ExtZmm(29), arch.ExtZmm(28), arch.ExtZmm(30)}, + "6206154098f4"}, + {"fused multiply-add out of a broadcast source", "VFMADD231PH", + []arch.ExtOperand{arch.ExtYmm(5), arch.ExtBroadcast(1, 0), arch.ExtYmm(6)}, + "62f65538b831"}, + {"scalar multiply-subtract under embedded rounding", "VFMSUB231SH", + []arch.ExtOperand{arch.ExtXmm(5), arch.ExtXmm(4), arch.ExtRounded(arch.ExtXmm(6), arch.ExtRoundTruncate)}, + "62f65578bbf4"}, + {"complex multiply, conjugating the first source", "VFCMULCPH", + []arch.ExtOperand{arch.ExtZmm(29), arch.ExtZmm(28), arch.ExtZmm(30)}, + "62061740d6f4"}, + {"minimum or maximum under a control byte", "VMINMAXPH", + []arch.ExtOperand{arch.ExtImmediate(0x88), arch.ExtZmm(29), arch.ExtMemory(9, 0), arch.ExtZmm(30)}, + "62431440523188"}, } { got, err := EncodeExtension(arch.AMD64, tt.mnem, tt.ops...) if err != nil {