From 7c6ac3527571319e6dde958c64137f1cbda0ecca Mon Sep 17 00:00:00 2001 From: David Chase Date: Fri, 20 Jun 2025 15:18:03 -0400 Subject: [PATCH] [dev.simd] cmd/compile: add simdFp1gp1fp1Imm8 helper to amd64 code generation This is for VPINSRB[BWDQ], coming in a later CL. Change-Id: I6b4b99be43512623d4d6e5542221c18f0c5c2eb4 Reviewed-on: https://go-review.googlesource.com/c/go/+/682956 LUCI-TryBot-Result: Go LUCI Reviewed-by: Junyang Shao Reviewed-by: Cherry Mui --- src/cmd/compile/internal/amd64/ssa.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/cmd/compile/internal/amd64/ssa.go b/src/cmd/compile/internal/amd64/ssa.go index 2962fe1698..b446f47dd4 100644 --- a/src/cmd/compile/internal/amd64/ssa.go +++ b/src/cmd/compile/internal/amd64/ssa.go @@ -1626,6 +1626,22 @@ func simdFp21Imm8(s *ssagen.State, v *ssa.Value) *obj.Prog { return p } +// Example instruction: VPINSRB $3, DX, X0, X0 +func simdFp1gp1fp1Imm8(s *ssagen.State, v *ssa.Value) *obj.Prog { + p := s.Prog(v.Op.Asm()) + imm := v.AuxInt + if imm < 0 || imm > 255 { + v.Fatalf("Invalid source selection immediate") + } + p.From.Offset = imm + p.From.Type = obj.TYPE_CONST + p.AddRestSourceReg(v.Args[1].Reg()) + p.AddRestSourceReg(simdReg(v.Args[0])) + p.To.Type = obj.TYPE_REG + p.To.Reg = simdReg(v) + return p +} + // Example instruction: VPCMPD $1, Z1, Z2, K1 func simdFp2k1Imm8(s *ssagen.State, v *ssa.Value) *obj.Prog { return simdFp21Imm8(s, v) -- 2.52.0