arch/internal: add VPEXTR* instructions This CL generates dev.simd CL 683797 and this CL should be submitted before that one. Change-Id: I3d2e292df2bed94aeb7c710a47c5e3c99c868b58 Reviewed-on: https://go-review.googlesource.com/c/arch/+/683836 Reviewed-by: Junyang Shao <shaojunyang@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/internal/simdgen/categories.yaml b/internal/simdgen/categories.yaml index 4b21d5a..bb4492e 100644 --- a/internal/simdgen/categories.yaml +++ b/internal/simdgen/categories.yaml
@@ -644,6 +644,12 @@ extension: "AVX.*" documentation: !string |- // SetElem sets a single constant-indexed element's value. +- go: GetElem + commutative: "false" + extension: "AVX.*" + documentation: !string |- + // GetElem retrieves a single constant-indexed element's value. + - go: Mul commutative: "true" extension: "AVX.*"
diff --git a/internal/simdgen/go.yaml b/internal/simdgen/go.yaml index 2d1038d..7632157 100644 --- a/internal/simdgen/go.yaml +++ b/internal/simdgen/go.yaml
@@ -777,6 +777,18 @@ immOffset: 0 out: - *t +- go: GetElem + asm: "VPEXTR[BWDQ]" + in: + - class: vreg + base: $b + elemBits: $e + - class: immediate + immOffset: 0 + out: + - class: greg + base: $b + bits: $e # "Normal" multiplication is only available for floats. # This only covers the single and double precision. - go: Mul
diff --git a/internal/simdgen/ops/Moves/categories.yaml b/internal/simdgen/ops/Moves/categories.yaml index 9cf443a..d0d4a30 100644 --- a/internal/simdgen/ops/Moves/categories.yaml +++ b/internal/simdgen/ops/Moves/categories.yaml
@@ -4,3 +4,9 @@ extension: "AVX.*" documentation: !string |- // SetElem sets a single constant-indexed element's value. +- go: GetElem + commutative: "false" + extension: "AVX.*" + documentation: !string |- + // GetElem retrieves a single constant-indexed element's value. +
diff --git a/internal/simdgen/ops/Moves/go.yaml b/internal/simdgen/ops/Moves/go.yaml index cdcb0ee..20d4a05 100644 --- a/internal/simdgen/ops/Moves/go.yaml +++ b/internal/simdgen/ops/Moves/go.yaml
@@ -12,3 +12,15 @@ immOffset: 0 out: - *t +- go: GetElem + asm: "VPEXTR[BWDQ]" + in: + - class: vreg + base: $b + elemBits: $e + - class: immediate + immOffset: 0 + out: + - class: greg + base: $b + bits: $e