]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.simd] cmd/compile: add simdFp1gp1fp1Imm8 helper to amd64 code generation
authorDavid Chase <drchase@google.com>
Fri, 20 Jun 2025 19:18:03 +0000 (15:18 -0400)
committerDavid Chase <drchase@google.com>
Fri, 20 Jun 2025 21:14:45 +0000 (14:14 -0700)
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 <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/compile/internal/amd64/ssa.go

index 2962fe1698e1646df0688188032302a99dd96533..b446f47dd4c0d281826e98a5dfc13ff075371a8e 100644 (file)
@@ -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)