mirror of
https://github.com/golang/go.git
synced 2025-11-02 17:50:56 +00:00
cmd/internal/obj/riscv: update references to RISC-V specification
Update references to version 20240411 of the RISC-V specifications. Reorder and regroup instructions to maintain ordering. Also be consistent with formatting. The instruction encodings table was seemingly missed in CL 616115. Change-Id: I47b7c8538383ff3b0503ba59db570c3d4f0d5653 Reviewed-on: https://go-review.googlesource.com/c/go/+/631935 Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com> Reviewed-by: Pengcheng Wang <wangpengcheng.pp@bytedance.com>
This commit is contained in:
parent
b8fb95becd
commit
7a2f757c52
3 changed files with 94 additions and 82 deletions
4
src/cmd/asm/internal/asm/testdata/riscv64.s
vendored
4
src/cmd/asm/internal/asm/testdata/riscv64.s
vendored
|
|
@ -363,6 +363,10 @@ start:
|
||||||
SLLIUW $63, X17, X18 // 1b99f80b
|
SLLIUW $63, X17, X18 // 1b99f80b
|
||||||
SLLIUW $1, X18, X19 // 9b191908
|
SLLIUW $1, X18, X19 // 9b191908
|
||||||
|
|
||||||
|
//
|
||||||
|
// "B" Extension for Bit Manipulation, Version 1.0.0
|
||||||
|
//
|
||||||
|
|
||||||
// 28.4.2: Basic Bit Manipulation (Zbb)
|
// 28.4.2: Basic Bit Manipulation (Zbb)
|
||||||
ANDN X19, X20, X21 // b37a3a41 or 93caf9ffb37a5a01
|
ANDN X19, X20, X21 // b37a3a41 or 93caf9ffb37a5a01
|
||||||
ANDN X19, X20 // 337a3a41 or 93cff9ff337afa01
|
ANDN X19, X20 // 337a3a41 or 93cff9ff337afa01
|
||||||
|
|
|
||||||
|
|
@ -571,6 +571,10 @@ const (
|
||||||
// 22.5 Quad-Precision Floating-Point Classify Instruction
|
// 22.5 Quad-Precision Floating-Point Classify Instruction
|
||||||
AFCLASSQ
|
AFCLASSQ
|
||||||
|
|
||||||
|
//
|
||||||
|
// "B" Extension for Bit Manipulation, Version 1.0.0
|
||||||
|
//
|
||||||
|
|
||||||
// 28.4.1: Address Generation Instructions (Zba)
|
// 28.4.1: Address Generation Instructions (Zba)
|
||||||
AADDUW
|
AADDUW
|
||||||
ASH1ADD
|
ASH1ADD
|
||||||
|
|
@ -620,15 +624,15 @@ const (
|
||||||
ABSETI
|
ABSETI
|
||||||
|
|
||||||
//
|
//
|
||||||
// RISC-V Vector ISA-extension (1.0) (Unprivileged 20240411)
|
// "V" Standard Extension for Vector Operations, Version 1.0
|
||||||
//
|
//
|
||||||
|
|
||||||
// 31.6. Configuration-Setting Instructions
|
// 31.6: Configuration-Setting Instructions
|
||||||
AVSETVLI
|
AVSETVLI
|
||||||
AVSETIVLI
|
AVSETIVLI
|
||||||
AVSETVL
|
AVSETVL
|
||||||
|
|
||||||
// 31.7.4. Vector Unit-Stride Instructions
|
// 31.7.4: Vector Unit-Stride Instructions
|
||||||
AVLE8V
|
AVLE8V
|
||||||
AVLE16V
|
AVLE16V
|
||||||
AVLE32V
|
AVLE32V
|
||||||
|
|
@ -640,7 +644,7 @@ const (
|
||||||
AVLMV
|
AVLMV
|
||||||
AVSMV
|
AVSMV
|
||||||
|
|
||||||
// 31.7.5. Vector Strided Instructions
|
// 31.7.5: Vector Strided Instructions
|
||||||
AVLSE8V
|
AVLSE8V
|
||||||
AVLSE16V
|
AVLSE16V
|
||||||
AVLSE32V
|
AVLSE32V
|
||||||
|
|
@ -650,7 +654,7 @@ const (
|
||||||
AVSSE32V
|
AVSSE32V
|
||||||
AVSSE64V
|
AVSSE64V
|
||||||
|
|
||||||
// 31.7.6. Vector Indexed Instructions
|
// 31.7.6: Vector Indexed Instructions
|
||||||
AVLUXEI8V
|
AVLUXEI8V
|
||||||
AVLUXEI16V
|
AVLUXEI16V
|
||||||
AVLUXEI32V
|
AVLUXEI32V
|
||||||
|
|
@ -668,13 +672,13 @@ const (
|
||||||
AVSOXEI32V
|
AVSOXEI32V
|
||||||
AVSOXEI64V
|
AVSOXEI64V
|
||||||
|
|
||||||
// 31.7.7. Unit-stride Fault-Only-First Loads
|
// 31.7.7: Unit-stride Fault-Only-First Loads
|
||||||
AVLE8FFV
|
AVLE8FFV
|
||||||
AVLE16FFV
|
AVLE16FFV
|
||||||
AVLE32FFV
|
AVLE32FFV
|
||||||
AVLE64FFV
|
AVLE64FFV
|
||||||
|
|
||||||
// 31.7.9. Vector Load/Store Whole Register Instructions
|
// 31.7.9: Vector Load/Store Whole Register Instructions
|
||||||
AVL1RE8V
|
AVL1RE8V
|
||||||
AVL1RE16V
|
AVL1RE16V
|
||||||
AVL1RE32V
|
AVL1RE32V
|
||||||
|
|
@ -696,7 +700,7 @@ const (
|
||||||
AVS4RV
|
AVS4RV
|
||||||
AVS8RV
|
AVS8RV
|
||||||
|
|
||||||
// 31.11.1. Vector Single-Width Integer Add and Subtract
|
// 31.11.1: Vector Single-Width Integer Add and Subtract
|
||||||
AVADDVV
|
AVADDVV
|
||||||
AVADDVX
|
AVADDVX
|
||||||
AVADDVI
|
AVADDVI
|
||||||
|
|
@ -705,7 +709,7 @@ const (
|
||||||
AVRSUBVX
|
AVRSUBVX
|
||||||
AVRSUBVI
|
AVRSUBVI
|
||||||
|
|
||||||
// 31.11.2. Vector Widening Integer Add/Subtract
|
// 31.11.2: Vector Widening Integer Add/Subtract
|
||||||
AVWADDUVV
|
AVWADDUVV
|
||||||
AVWADDUVX
|
AVWADDUVX
|
||||||
AVWSUBUVV
|
AVWSUBUVV
|
||||||
|
|
@ -723,7 +727,7 @@ const (
|
||||||
AVWSUBWV
|
AVWSUBWV
|
||||||
AVWSUBWX
|
AVWSUBWX
|
||||||
|
|
||||||
// 31.11.3. Vector Integer Extension
|
// 31.11.3: Vector Integer Extension
|
||||||
AVZEXTVF2
|
AVZEXTVF2
|
||||||
AVSEXTVF2
|
AVSEXTVF2
|
||||||
AVZEXTVF4
|
AVZEXTVF4
|
||||||
|
|
@ -731,7 +735,7 @@ const (
|
||||||
AVZEXTVF8
|
AVZEXTVF8
|
||||||
AVSEXTVF8
|
AVSEXTVF8
|
||||||
|
|
||||||
// 31.11.4. Vector Integer Add-with-Carry / Subtract-with-Borrow Instructions
|
// 31.11.4: Vector Integer Add-with-Carry / Subtract-with-Borrow Instructions
|
||||||
AVADCVVM
|
AVADCVVM
|
||||||
AVADCVXM
|
AVADCVXM
|
||||||
AVADCVIM
|
AVADCVIM
|
||||||
|
|
@ -748,7 +752,7 @@ const (
|
||||||
AVMSBCVV
|
AVMSBCVV
|
||||||
AVMSBCVX
|
AVMSBCVX
|
||||||
|
|
||||||
// 31.11.5. Vector Bitwise Logical Instructions
|
// 31.11.5: Vector Bitwise Logical Instructions
|
||||||
AVANDVV
|
AVANDVV
|
||||||
AVANDVX
|
AVANDVX
|
||||||
AVANDVI
|
AVANDVI
|
||||||
|
|
@ -759,7 +763,7 @@ const (
|
||||||
AVXORVX
|
AVXORVX
|
||||||
AVXORVI
|
AVXORVI
|
||||||
|
|
||||||
// 31.11.6. Vector Single-Width Shift Instructions
|
// 31.11.6: Vector Single-Width Shift Instructions
|
||||||
AVSLLVV
|
AVSLLVV
|
||||||
AVSLLVX
|
AVSLLVX
|
||||||
AVSLLVI
|
AVSLLVI
|
||||||
|
|
@ -770,7 +774,7 @@ const (
|
||||||
AVSRAVX
|
AVSRAVX
|
||||||
AVSRAVI
|
AVSRAVI
|
||||||
|
|
||||||
// 31.11.7. Vector Narrowing Integer Right Shift Instructions
|
// 31.11.7: Vector Narrowing Integer Right Shift Instructions
|
||||||
AVNSRLWV
|
AVNSRLWV
|
||||||
AVNSRLWX
|
AVNSRLWX
|
||||||
AVNSRLWI
|
AVNSRLWI
|
||||||
|
|
@ -778,7 +782,7 @@ const (
|
||||||
AVNSRAWX
|
AVNSRAWX
|
||||||
AVNSRAWI
|
AVNSRAWI
|
||||||
|
|
||||||
// 31.11.8. Vector Integer Compare Instructions
|
// 31.11.8: Vector Integer Compare Instructions
|
||||||
AVMSEQVV
|
AVMSEQVV
|
||||||
AVMSEQVX
|
AVMSEQVX
|
||||||
AVMSEQVI
|
AVMSEQVI
|
||||||
|
|
@ -800,7 +804,7 @@ const (
|
||||||
AVMSGTVX
|
AVMSGTVX
|
||||||
AVMSGTVI
|
AVMSGTVI
|
||||||
|
|
||||||
// 31.11.9. Vector Integer Min/Max Instructions
|
// 31.11.9: Vector Integer Min/Max Instructions
|
||||||
AVMINUVV
|
AVMINUVV
|
||||||
AVMINUVX
|
AVMINUVX
|
||||||
AVMINVV
|
AVMINVV
|
||||||
|
|
@ -810,7 +814,7 @@ const (
|
||||||
AVMAXVV
|
AVMAXVV
|
||||||
AVMAXVX
|
AVMAXVX
|
||||||
|
|
||||||
// 31.11.10. Vector Single-Width Integer Multiply Instructions
|
// 31.11.10: Vector Single-Width Integer Multiply Instructions
|
||||||
AVMULVV
|
AVMULVV
|
||||||
AVMULVX
|
AVMULVX
|
||||||
AVMULHVV
|
AVMULHVV
|
||||||
|
|
@ -820,7 +824,7 @@ const (
|
||||||
AVMULHSUVV
|
AVMULHSUVV
|
||||||
AVMULHSUVX
|
AVMULHSUVX
|
||||||
|
|
||||||
// 31.11.11. Vector Integer Divide Instructions
|
// 31.11.11: Vector Integer Divide Instructions
|
||||||
AVDIVUVV
|
AVDIVUVV
|
||||||
AVDIVUVX
|
AVDIVUVX
|
||||||
AVDIVVV
|
AVDIVVV
|
||||||
|
|
@ -830,7 +834,7 @@ const (
|
||||||
AVREMVV
|
AVREMVV
|
||||||
AVREMVX
|
AVREMVX
|
||||||
|
|
||||||
// 31.11.12. Vector Widening Integer Multiply Instructions
|
// 31.11.12: Vector Widening Integer Multiply Instructions
|
||||||
AVWMULVV
|
AVWMULVV
|
||||||
AVWMULVX
|
AVWMULVX
|
||||||
AVWMULUVV
|
AVWMULUVV
|
||||||
|
|
@ -838,7 +842,7 @@ const (
|
||||||
AVWMULSUVV
|
AVWMULSUVV
|
||||||
AVWMULSUVX
|
AVWMULSUVX
|
||||||
|
|
||||||
// 31.11.13. Vector Single-Width Integer Multiply-Add Instructions
|
// 31.11.13: Vector Single-Width Integer Multiply-Add Instructions
|
||||||
AVMACCVV
|
AVMACCVV
|
||||||
AVMACCVX
|
AVMACCVX
|
||||||
AVNMSACVV
|
AVNMSACVV
|
||||||
|
|
@ -848,7 +852,7 @@ const (
|
||||||
AVNMSUBVV
|
AVNMSUBVV
|
||||||
AVNMSUBVX
|
AVNMSUBVX
|
||||||
|
|
||||||
// 31.11.14. Vector Widening Integer Multiply-Add Instructions
|
// 31.11.14: Vector Widening Integer Multiply-Add Instructions
|
||||||
AVWMACCUVV
|
AVWMACCUVV
|
||||||
AVWMACCUVX
|
AVWMACCUVX
|
||||||
AVWMACCVV
|
AVWMACCVV
|
||||||
|
|
@ -857,17 +861,17 @@ const (
|
||||||
AVWMACCSUVX
|
AVWMACCSUVX
|
||||||
AVWMACCUSVX
|
AVWMACCUSVX
|
||||||
|
|
||||||
// 31.11.15. Vector Integer Merge Instructions
|
// 31.11.15: Vector Integer Merge Instructions
|
||||||
AVMERGEVVM
|
AVMERGEVVM
|
||||||
AVMERGEVXM
|
AVMERGEVXM
|
||||||
AVMERGEVIM
|
AVMERGEVIM
|
||||||
|
|
||||||
// 31.11.16. Vector Integer Move Instructions
|
// 31.11.16: Vector Integer Move Instructions
|
||||||
AVMVVV
|
AVMVVV
|
||||||
AVMVVX
|
AVMVVX
|
||||||
AVMVVI
|
AVMVVI
|
||||||
|
|
||||||
// 31.12.1. Vector Single-Width Saturating Add and Subtract
|
// 31.12.1: Vector Single-Width Saturating Add and Subtract
|
||||||
AVSADDUVV
|
AVSADDUVV
|
||||||
AVSADDUVX
|
AVSADDUVX
|
||||||
AVSADDUVI
|
AVSADDUVI
|
||||||
|
|
@ -879,7 +883,7 @@ const (
|
||||||
AVSSUBVV
|
AVSSUBVV
|
||||||
AVSSUBVX
|
AVSSUBVX
|
||||||
|
|
||||||
// 31.12.2. Vector Single-Width Averaging Add and Subtract
|
// 31.12.2: Vector Single-Width Averaging Add and Subtract
|
||||||
AVAADDUVV
|
AVAADDUVV
|
||||||
AVAADDUVX
|
AVAADDUVX
|
||||||
AVAADDVV
|
AVAADDVV
|
||||||
|
|
@ -889,11 +893,11 @@ const (
|
||||||
AVASUBVV
|
AVASUBVV
|
||||||
AVASUBVX
|
AVASUBVX
|
||||||
|
|
||||||
// 31.12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
|
// 31.12.3: Vector Single-Width Fractional Multiply with Rounding and Saturation
|
||||||
AVSMULVV
|
AVSMULVV
|
||||||
AVSMULVX
|
AVSMULVX
|
||||||
|
|
||||||
// 31.12.4. Vector Single-Width Scaling Shift Instructions
|
// 31.12.4: Vector Single-Width Scaling Shift Instructions
|
||||||
AVSSRLVV
|
AVSSRLVV
|
||||||
AVSSRLVX
|
AVSSRLVX
|
||||||
AVSSRLVI
|
AVSSRLVI
|
||||||
|
|
@ -901,7 +905,7 @@ const (
|
||||||
AVSSRAVX
|
AVSSRAVX
|
||||||
AVSSRAVI
|
AVSSRAVI
|
||||||
|
|
||||||
// 31.12.5. Vector Narrowing Fixed-Point Clip Instructions
|
// 31.12.5: Vector Narrowing Fixed-Point Clip Instructions
|
||||||
AVNCLIPUWV
|
AVNCLIPUWV
|
||||||
AVNCLIPUWX
|
AVNCLIPUWX
|
||||||
AVNCLIPUWI
|
AVNCLIPUWI
|
||||||
|
|
@ -909,14 +913,14 @@ const (
|
||||||
AVNCLIPWX
|
AVNCLIPWX
|
||||||
AVNCLIPWI
|
AVNCLIPWI
|
||||||
|
|
||||||
// 31.13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
|
// 31.13.2: Vector Single-Width Floating-Point Add/Subtract Instructions
|
||||||
AVFADDVV
|
AVFADDVV
|
||||||
AVFADDVF
|
AVFADDVF
|
||||||
AVFSUBVV
|
AVFSUBVV
|
||||||
AVFSUBVF
|
AVFSUBVF
|
||||||
AVFRSUBVF
|
AVFRSUBVF
|
||||||
|
|
||||||
// 31.13.3. Vector Widening Floating-Point Add/Subtract Instructions
|
// 31.13.3: Vector Widening Floating-Point Add/Subtract Instructions
|
||||||
AVFWADDVV
|
AVFWADDVV
|
||||||
AVFWADDVF
|
AVFWADDVF
|
||||||
AVFWSUBVV
|
AVFWSUBVV
|
||||||
|
|
@ -926,18 +930,18 @@ const (
|
||||||
AVFWSUBWV
|
AVFWSUBWV
|
||||||
AVFWSUBWF
|
AVFWSUBWF
|
||||||
|
|
||||||
// 31.13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
|
// 31.13.4: Vector Single-Width Floating-Point Multiply/Divide Instructions
|
||||||
AVFMULVV
|
AVFMULVV
|
||||||
AVFMULVF
|
AVFMULVF
|
||||||
AVFDIVVV
|
AVFDIVVV
|
||||||
AVFDIVVF
|
AVFDIVVF
|
||||||
AVFRDIVVF
|
AVFRDIVVF
|
||||||
|
|
||||||
// 31.13.5. Vector Widening Floating-Point Multiply
|
// 31.13.5: Vector Widening Floating-Point Multiply
|
||||||
AVFWMULVV
|
AVFWMULVV
|
||||||
AVFWMULVF
|
AVFWMULVF
|
||||||
|
|
||||||
// 31.13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
|
// 31.13.6: Vector Single-Width Floating-Point Fused Multiply-Add Instructions
|
||||||
AVFMACCVV
|
AVFMACCVV
|
||||||
AVFMACCVF
|
AVFMACCVF
|
||||||
AVFNMACCVV
|
AVFNMACCVV
|
||||||
|
|
@ -955,7 +959,7 @@ const (
|
||||||
AVFNMSUBVV
|
AVFNMSUBVV
|
||||||
AVFNMSUBVF
|
AVFNMSUBVF
|
||||||
|
|
||||||
// 31.13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
|
// 31.13.7: Vector Widening Floating-Point Fused Multiply-Add Instructions
|
||||||
AVFWMACCVV
|
AVFWMACCVV
|
||||||
AVFWMACCVF
|
AVFWMACCVF
|
||||||
AVFWNMACCVV
|
AVFWNMACCVV
|
||||||
|
|
@ -965,22 +969,22 @@ const (
|
||||||
AVFWNMSACVV
|
AVFWNMSACVV
|
||||||
AVFWNMSACVF
|
AVFWNMSACVF
|
||||||
|
|
||||||
// 31.13.8. Vector Floating-Point Square-Root Instruction
|
// 31.13.8: Vector Floating-Point Square-Root Instruction
|
||||||
AVFSQRTV
|
AVFSQRTV
|
||||||
|
|
||||||
// 31.13.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
|
// 31.13.9: Vector Floating-Point Reciprocal Square-Root Estimate Instruction
|
||||||
AVFRSQRT7V
|
AVFRSQRT7V
|
||||||
|
|
||||||
// 31.13.10. Vector Floating-Point Reciprocal Estimate Instruction
|
// 31.13.10: Vector Floating-Point Reciprocal Estimate Instruction
|
||||||
AVFREC7V
|
AVFREC7V
|
||||||
|
|
||||||
// 31.13.11. Vector Floating-Point MIN/MAX Instructions
|
// 31.13.11: Vector Floating-Point MIN/MAX Instructions
|
||||||
AVFMINVV
|
AVFMINVV
|
||||||
AVFMINVF
|
AVFMINVF
|
||||||
AVFMAXVV
|
AVFMAXVV
|
||||||
AVFMAXVF
|
AVFMAXVF
|
||||||
|
|
||||||
// 31.13.12. Vector Floating-Point Sign-Injection Instructions
|
// 31.13.12: Vector Floating-Point Sign-Injection Instructions
|
||||||
AVFSGNJVV
|
AVFSGNJVV
|
||||||
AVFSGNJVF
|
AVFSGNJVF
|
||||||
AVFSGNJNVV
|
AVFSGNJNVV
|
||||||
|
|
@ -988,7 +992,7 @@ const (
|
||||||
AVFSGNJXVV
|
AVFSGNJXVV
|
||||||
AVFSGNJXVF
|
AVFSGNJXVF
|
||||||
|
|
||||||
// 31.13.13. Vector Floating-Point Compare Instructions
|
// 31.13.13: Vector Floating-Point Compare Instructions
|
||||||
AVMFEQVV
|
AVMFEQVV
|
||||||
AVMFEQVF
|
AVMFEQVF
|
||||||
AVMFNEVV
|
AVMFNEVV
|
||||||
|
|
@ -1000,16 +1004,16 @@ const (
|
||||||
AVMFGTVF
|
AVMFGTVF
|
||||||
AVMFGEVF
|
AVMFGEVF
|
||||||
|
|
||||||
// 31.13.14. Vector Floating-Point Classify Instruction
|
// 31.13.14: Vector Floating-Point Classify Instruction
|
||||||
AVFCLASSV
|
AVFCLASSV
|
||||||
|
|
||||||
// 31.13.15. Vector Floating-Point Merge Instruction
|
// 31.13.15: Vector Floating-Point Merge Instruction
|
||||||
AVFMERGEVFM
|
AVFMERGEVFM
|
||||||
|
|
||||||
// 31.13.16. Vector Floating-Point Move Instruction
|
// 31.13.16: Vector Floating-Point Move Instruction
|
||||||
AVFMVVF
|
AVFMVVF
|
||||||
|
|
||||||
// 31.13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
|
// 31.13.17: Single-Width Floating-Point/Integer Type-Convert Instructions
|
||||||
AVFCVTXUFV
|
AVFCVTXUFV
|
||||||
AVFCVTXFV
|
AVFCVTXFV
|
||||||
AVFCVTRTZXUFV
|
AVFCVTRTZXUFV
|
||||||
|
|
@ -1017,7 +1021,7 @@ const (
|
||||||
AVFCVTFXUV
|
AVFCVTFXUV
|
||||||
AVFCVTFXV
|
AVFCVTFXV
|
||||||
|
|
||||||
// 31.13.18. Widening Floating-Point/Integer Type-Convert Instructions
|
// 31.13.18: Widening Floating-Point/Integer Type-Convert Instructions
|
||||||
AVFWCVTXUFV
|
AVFWCVTXUFV
|
||||||
AVFWCVTXFV
|
AVFWCVTXFV
|
||||||
AVFWCVTRTZXUFV
|
AVFWCVTRTZXUFV
|
||||||
|
|
@ -1026,7 +1030,7 @@ const (
|
||||||
AVFWCVTFXV
|
AVFWCVTFXV
|
||||||
AVFWCVTFFV
|
AVFWCVTFFV
|
||||||
|
|
||||||
// 31.13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
|
// 31.13.19: Narrowing Floating-Point/Integer Type-Convert Instructions
|
||||||
AVFNCVTXUFW
|
AVFNCVTXUFW
|
||||||
AVFNCVTXFW
|
AVFNCVTXFW
|
||||||
AVFNCVTRTZXUFW
|
AVFNCVTRTZXUFW
|
||||||
|
|
@ -1036,7 +1040,7 @@ const (
|
||||||
AVFNCVTFFW
|
AVFNCVTFFW
|
||||||
AVFNCVTRODFFW
|
AVFNCVTRODFFW
|
||||||
|
|
||||||
// 31.14.1. Vector Single-Width Integer Reduction Instructions
|
// 31.14.1: Vector Single-Width Integer Reduction Instructions
|
||||||
AVREDSUMVS
|
AVREDSUMVS
|
||||||
AVREDMAXUVS
|
AVREDMAXUVS
|
||||||
AVREDMAXVS
|
AVREDMAXVS
|
||||||
|
|
@ -1046,21 +1050,21 @@ const (
|
||||||
AVREDORVS
|
AVREDORVS
|
||||||
AVREDXORVS
|
AVREDXORVS
|
||||||
|
|
||||||
// 31.14.2. Vector Widening Integer Reduction Instructions
|
// 31.14.2: Vector Widening Integer Reduction Instructions
|
||||||
AVWREDSUMUVS
|
AVWREDSUMUVS
|
||||||
AVWREDSUMVS
|
AVWREDSUMVS
|
||||||
|
|
||||||
// 31.14.3. Vector Single-Width Floating-Point Reduction Instructions
|
// 31.14.3: Vector Single-Width Floating-Point Reduction Instructions
|
||||||
AVFREDOSUMVS
|
AVFREDOSUMVS
|
||||||
AVFREDUSUMVS
|
AVFREDUSUMVS
|
||||||
AVFREDMAXVS
|
AVFREDMAXVS
|
||||||
AVFREDMINVS
|
AVFREDMINVS
|
||||||
|
|
||||||
// 31.14.4. Vector Widening Floating-Point Reduction Instructions
|
// 31.14.4: Vector Widening Floating-Point Reduction Instructions
|
||||||
AVFWREDOSUMVS
|
AVFWREDOSUMVS
|
||||||
AVFWREDUSUMVS
|
AVFWREDUSUMVS
|
||||||
|
|
||||||
// 31.15. Vector Mask Instructions
|
// 31.15: Vector Mask Instructions
|
||||||
AVMANDMM
|
AVMANDMM
|
||||||
AVMNANDMM
|
AVMNANDMM
|
||||||
AVMANDNMM
|
AVMANDNMM
|
||||||
|
|
@ -1077,15 +1081,15 @@ const (
|
||||||
AVIOTAM
|
AVIOTAM
|
||||||
AVIDV
|
AVIDV
|
||||||
|
|
||||||
// 31.16.1. Integer Scalar Move Instructions
|
// 31.16.1: Integer Scalar Move Instructions
|
||||||
AVMVXS
|
AVMVXS
|
||||||
AVMVSX
|
AVMVSX
|
||||||
|
|
||||||
// 31.16.2. Floating-Point Scalar Move Instructions
|
// 31.16.2: Floating-Point Scalar Move Instructions
|
||||||
AVFMVFS
|
AVFMVFS
|
||||||
AVFMVSF
|
AVFMVSF
|
||||||
|
|
||||||
// 31.16.3. Vector Slide Instructions
|
// 31.16.3: Vector Slide Instructions
|
||||||
AVSLIDEUPVX
|
AVSLIDEUPVX
|
||||||
AVSLIDEUPVI
|
AVSLIDEUPVI
|
||||||
AVSLIDEDOWNVX
|
AVSLIDEDOWNVX
|
||||||
|
|
@ -1095,16 +1099,16 @@ const (
|
||||||
AVSLIDE1DOWNVX
|
AVSLIDE1DOWNVX
|
||||||
AVFSLIDE1DOWNVF
|
AVFSLIDE1DOWNVF
|
||||||
|
|
||||||
// 31.16.4. Vector Register Gather Instructions
|
// 31.16.4: Vector Register Gather Instructions
|
||||||
AVRGATHERVV
|
AVRGATHERVV
|
||||||
AVRGATHEREI16VV
|
AVRGATHEREI16VV
|
||||||
AVRGATHERVX
|
AVRGATHERVX
|
||||||
AVRGATHERVI
|
AVRGATHERVI
|
||||||
|
|
||||||
// 31.16.5. Vector Compress Instruction
|
// 31.16.5: Vector Compress Instruction
|
||||||
AVCOMPRESSVM
|
AVCOMPRESSVM
|
||||||
|
|
||||||
// 31.16.6. Whole Vector Register Move
|
// 31.16.6: Whole Vector Register Move
|
||||||
AVMV1RV
|
AVMV1RV
|
||||||
AVMV2RV
|
AVMV2RV
|
||||||
AVMV4RV
|
AVMV4RV
|
||||||
|
|
|
||||||
|
|
@ -1540,7 +1540,9 @@ type instructionData struct {
|
||||||
// their encoding type. Entries are masked with obj.AMask to keep
|
// their encoding type. Entries are masked with obj.AMask to keep
|
||||||
// indices small.
|
// indices small.
|
||||||
var instructions = [ALAST & obj.AMask]instructionData{
|
var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
|
//
|
||||||
// Unprivileged ISA
|
// Unprivileged ISA
|
||||||
|
//
|
||||||
|
|
||||||
// 2.4: Integer Computational Instructions
|
// 2.4: Integer Computational Instructions
|
||||||
AADDI & obj.AMask: {enc: iIIEncoding, ternary: true},
|
AADDI & obj.AMask: {enc: iIIEncoding, ternary: true},
|
||||||
|
|
@ -1589,7 +1591,7 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
// 2.7: Memory Ordering
|
// 2.7: Memory Ordering
|
||||||
AFENCE & obj.AMask: {enc: iIIEncoding},
|
AFENCE & obj.AMask: {enc: iIIEncoding},
|
||||||
|
|
||||||
// 5.2: Integer Computational Instructions (RV64I)
|
// 4.2: Integer Computational Instructions (RV64I)
|
||||||
AADDIW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
AADDIW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
||||||
ASLLIW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
ASLLIW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
||||||
ASRLIW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
ASRLIW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
||||||
|
|
@ -1600,14 +1602,14 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
ASUBW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
ASUBW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
ASRAW & obj.AMask: {enc: rIIIEncoding, immForm: ASRAIW, ternary: true},
|
ASRAW & obj.AMask: {enc: rIIIEncoding, immForm: ASRAIW, ternary: true},
|
||||||
|
|
||||||
// 5.3: Load and Store Instructions (RV64I)
|
// 4.3: Load and Store Instructions (RV64I)
|
||||||
ALD & obj.AMask: {enc: iIIEncoding},
|
ALD & obj.AMask: {enc: iIIEncoding},
|
||||||
ASD & obj.AMask: {enc: sIEncoding},
|
ASD & obj.AMask: {enc: sIEncoding},
|
||||||
|
|
||||||
// 7.1: CSR Instructions
|
// 7.1: CSR Instructions
|
||||||
ACSRRS & obj.AMask: {enc: iIIEncoding},
|
ACSRRS & obj.AMask: {enc: iIIEncoding},
|
||||||
|
|
||||||
// 7.1: Multiplication Operations
|
// 13.1: Multiplication Operations
|
||||||
AMUL & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AMUL & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
AMULH & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AMULH & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
AMULHU & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AMULHU & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
|
|
@ -1622,13 +1624,13 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AREMW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AREMW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
AREMUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AREMUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
|
|
||||||
// 8.2: Load-Reserved/Store-Conditional
|
// 14.2: Load-Reserved/Store-Conditional Instructions (Zalrsc)
|
||||||
ALRW & obj.AMask: {enc: rIIIEncoding},
|
ALRW & obj.AMask: {enc: rIIIEncoding},
|
||||||
ALRD & obj.AMask: {enc: rIIIEncoding},
|
ALRD & obj.AMask: {enc: rIIIEncoding},
|
||||||
ASCW & obj.AMask: {enc: rIIIEncoding},
|
ASCW & obj.AMask: {enc: rIIIEncoding},
|
||||||
ASCD & obj.AMask: {enc: rIIIEncoding},
|
ASCD & obj.AMask: {enc: rIIIEncoding},
|
||||||
|
|
||||||
// 8.3: Atomic Memory Operations
|
// 14.4: Atomic Memory Operations (Zaamo)
|
||||||
AAMOSWAPW & obj.AMask: {enc: rIIIEncoding},
|
AAMOSWAPW & obj.AMask: {enc: rIIIEncoding},
|
||||||
AAMOSWAPD & obj.AMask: {enc: rIIIEncoding},
|
AAMOSWAPD & obj.AMask: {enc: rIIIEncoding},
|
||||||
AAMOADDW & obj.AMask: {enc: rIIIEncoding},
|
AAMOADDW & obj.AMask: {enc: rIIIEncoding},
|
||||||
|
|
@ -1648,11 +1650,11 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AAMOMINUW & obj.AMask: {enc: rIIIEncoding},
|
AAMOMINUW & obj.AMask: {enc: rIIIEncoding},
|
||||||
AAMOMINUD & obj.AMask: {enc: rIIIEncoding},
|
AAMOMINUD & obj.AMask: {enc: rIIIEncoding},
|
||||||
|
|
||||||
// 11.5: Single-Precision Load and Store Instructions
|
// 20.5: Single-Precision Load and Store Instructions
|
||||||
AFLW & obj.AMask: {enc: iFEncoding},
|
AFLW & obj.AMask: {enc: iFEncoding},
|
||||||
AFSW & obj.AMask: {enc: sFEncoding},
|
AFSW & obj.AMask: {enc: sFEncoding},
|
||||||
|
|
||||||
// 11.6: Single-Precision Floating-Point Computational Instructions
|
// 20.6: Single-Precision Floating-Point Computational Instructions
|
||||||
AFADDS & obj.AMask: {enc: rFFFEncoding},
|
AFADDS & obj.AMask: {enc: rFFFEncoding},
|
||||||
AFSUBS & obj.AMask: {enc: rFFFEncoding},
|
AFSUBS & obj.AMask: {enc: rFFFEncoding},
|
||||||
AFMULS & obj.AMask: {enc: rFFFEncoding},
|
AFMULS & obj.AMask: {enc: rFFFEncoding},
|
||||||
|
|
@ -1665,7 +1667,7 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AFNMSUBS & obj.AMask: {enc: rFFFFEncoding},
|
AFNMSUBS & obj.AMask: {enc: rFFFFEncoding},
|
||||||
AFNMADDS & obj.AMask: {enc: rFFFFEncoding},
|
AFNMADDS & obj.AMask: {enc: rFFFFEncoding},
|
||||||
|
|
||||||
// 11.7: Single-Precision Floating-Point Conversion and Move Instructions
|
// 20.7: Single-Precision Floating-Point Conversion and Move Instructions
|
||||||
AFCVTWS & obj.AMask: {enc: rFIEncoding},
|
AFCVTWS & obj.AMask: {enc: rFIEncoding},
|
||||||
AFCVTLS & obj.AMask: {enc: rFIEncoding},
|
AFCVTLS & obj.AMask: {enc: rFIEncoding},
|
||||||
AFCVTSW & obj.AMask: {enc: rIFEncoding},
|
AFCVTSW & obj.AMask: {enc: rIFEncoding},
|
||||||
|
|
@ -1680,19 +1682,19 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AFMVXW & obj.AMask: {enc: rFIEncoding},
|
AFMVXW & obj.AMask: {enc: rFIEncoding},
|
||||||
AFMVWX & obj.AMask: {enc: rIFEncoding},
|
AFMVWX & obj.AMask: {enc: rIFEncoding},
|
||||||
|
|
||||||
// 11.8: Single-Precision Floating-Point Compare Instructions
|
// 20.8: Single-Precision Floating-Point Compare Instructions
|
||||||
AFEQS & obj.AMask: {enc: rFFIEncoding},
|
AFEQS & obj.AMask: {enc: rFFIEncoding},
|
||||||
AFLTS & obj.AMask: {enc: rFFIEncoding},
|
AFLTS & obj.AMask: {enc: rFFIEncoding},
|
||||||
AFLES & obj.AMask: {enc: rFFIEncoding},
|
AFLES & obj.AMask: {enc: rFFIEncoding},
|
||||||
|
|
||||||
// 11.9: Single-Precision Floating-Point Classify Instruction
|
// 20.9: Single-Precision Floating-Point Classify Instruction
|
||||||
AFCLASSS & obj.AMask: {enc: rFIEncoding},
|
AFCLASSS & obj.AMask: {enc: rFIEncoding},
|
||||||
|
|
||||||
// 12.3: Double-Precision Load and Store Instructions
|
// 12.3: Double-Precision Load and Store Instructions
|
||||||
AFLD & obj.AMask: {enc: iFEncoding},
|
AFLD & obj.AMask: {enc: iFEncoding},
|
||||||
AFSD & obj.AMask: {enc: sFEncoding},
|
AFSD & obj.AMask: {enc: sFEncoding},
|
||||||
|
|
||||||
// 12.4: Double-Precision Floating-Point Computational Instructions
|
// 21.4: Double-Precision Floating-Point Computational Instructions
|
||||||
AFADDD & obj.AMask: {enc: rFFFEncoding},
|
AFADDD & obj.AMask: {enc: rFFFEncoding},
|
||||||
AFSUBD & obj.AMask: {enc: rFFFEncoding},
|
AFSUBD & obj.AMask: {enc: rFFFEncoding},
|
||||||
AFMULD & obj.AMask: {enc: rFFFEncoding},
|
AFMULD & obj.AMask: {enc: rFFFEncoding},
|
||||||
|
|
@ -1705,7 +1707,7 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AFNMSUBD & obj.AMask: {enc: rFFFFEncoding},
|
AFNMSUBD & obj.AMask: {enc: rFFFFEncoding},
|
||||||
AFNMADDD & obj.AMask: {enc: rFFFFEncoding},
|
AFNMADDD & obj.AMask: {enc: rFFFFEncoding},
|
||||||
|
|
||||||
// 12.5: Double-Precision Floating-Point Conversion and Move Instructions
|
// 21.5: Double-Precision Floating-Point Conversion and Move Instructions
|
||||||
AFCVTWD & obj.AMask: {enc: rFIEncoding},
|
AFCVTWD & obj.AMask: {enc: rFIEncoding},
|
||||||
AFCVTLD & obj.AMask: {enc: rFIEncoding},
|
AFCVTLD & obj.AMask: {enc: rFIEncoding},
|
||||||
AFCVTDW & obj.AMask: {enc: rIFEncoding},
|
AFCVTDW & obj.AMask: {enc: rIFEncoding},
|
||||||
|
|
@ -1722,25 +1724,19 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AFMVXD & obj.AMask: {enc: rFIEncoding},
|
AFMVXD & obj.AMask: {enc: rFIEncoding},
|
||||||
AFMVDX & obj.AMask: {enc: rIFEncoding},
|
AFMVDX & obj.AMask: {enc: rIFEncoding},
|
||||||
|
|
||||||
// 12.6: Double-Precision Floating-Point Compare Instructions
|
// 21.6: Double-Precision Floating-Point Compare Instructions
|
||||||
AFEQD & obj.AMask: {enc: rFFIEncoding},
|
AFEQD & obj.AMask: {enc: rFFIEncoding},
|
||||||
AFLTD & obj.AMask: {enc: rFFIEncoding},
|
AFLTD & obj.AMask: {enc: rFFIEncoding},
|
||||||
AFLED & obj.AMask: {enc: rFFIEncoding},
|
AFLED & obj.AMask: {enc: rFFIEncoding},
|
||||||
|
|
||||||
// 12.7: Double-Precision Floating-Point Classify Instruction
|
// 21.7: Double-Precision Floating-Point Classify Instruction
|
||||||
AFCLASSD & obj.AMask: {enc: rFIEncoding},
|
AFCLASSD & obj.AMask: {enc: rFIEncoding},
|
||||||
|
|
||||||
// Privileged ISA
|
|
||||||
|
|
||||||
// 3.2.1: Environment Call and Breakpoint
|
|
||||||
AECALL & obj.AMask: {enc: iIIEncoding},
|
|
||||||
AEBREAK & obj.AMask: {enc: iIIEncoding},
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// RISC-V Bit-Manipulation ISA-extensions (1.0)
|
// "B" Extension for Bit Manipulation, Version 1.0.0
|
||||||
//
|
//
|
||||||
|
|
||||||
// 1.1: Address Generation Instructions (Zba)
|
// 28.4.1: Address Generation Instructions (Zba)
|
||||||
AADDUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AADDUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
ASH1ADD & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
ASH1ADD & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
ASH1ADDUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
ASH1ADDUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
|
|
@ -1750,7 +1746,7 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
ASH3ADDUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
ASH3ADDUW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
ASLLIUW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
ASLLIUW & obj.AMask: {enc: iIIEncoding, ternary: true},
|
||||||
|
|
||||||
// 1.2: Basic Bit Manipulation (Zbb)
|
// 28.4.2: Basic Bit Manipulation (Zbb)
|
||||||
AANDN & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AANDN & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
ACLZ & obj.AMask: {enc: rIIEncoding},
|
ACLZ & obj.AMask: {enc: rIIEncoding},
|
||||||
ACLZW & obj.AMask: {enc: rIIEncoding},
|
ACLZW & obj.AMask: {enc: rIIEncoding},
|
||||||
|
|
@ -1768,7 +1764,7 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AXNOR & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AXNOR & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
AZEXTH & obj.AMask: {enc: rIIEncoding},
|
AZEXTH & obj.AMask: {enc: rIIEncoding},
|
||||||
|
|
||||||
// 1.3: Bitwise Rotation (Zbb)
|
// 28.4.3: Bitwise Rotation (Zbb)
|
||||||
AROL & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AROL & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
AROLW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
AROLW & obj.AMask: {enc: rIIIEncoding, ternary: true},
|
||||||
AROR & obj.AMask: {enc: rIIIEncoding, immForm: ARORI, ternary: true},
|
AROR & obj.AMask: {enc: rIIIEncoding, immForm: ARORI, ternary: true},
|
||||||
|
|
@ -1778,7 +1774,7 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
AORCB & obj.AMask: {enc: iIIEncoding},
|
AORCB & obj.AMask: {enc: iIIEncoding},
|
||||||
AREV8 & obj.AMask: {enc: iIIEncoding},
|
AREV8 & obj.AMask: {enc: iIIEncoding},
|
||||||
|
|
||||||
// 1.5: Single-bit Instructions (Zbs)
|
// 28.4.4: Single-bit Instructions (Zbs)
|
||||||
ABCLR & obj.AMask: {enc: rIIIEncoding, immForm: ABCLRI, ternary: true},
|
ABCLR & obj.AMask: {enc: rIIIEncoding, immForm: ABCLRI, ternary: true},
|
||||||
ABCLRI & obj.AMask: {enc: iIIEncoding, ternary: true},
|
ABCLRI & obj.AMask: {enc: iIIEncoding, ternary: true},
|
||||||
ABEXT & obj.AMask: {enc: rIIIEncoding, immForm: ABEXTI, ternary: true},
|
ABEXT & obj.AMask: {enc: rIIIEncoding, immForm: ABEXTI, ternary: true},
|
||||||
|
|
@ -1788,6 +1784,14 @@ var instructions = [ALAST & obj.AMask]instructionData{
|
||||||
ABSET & obj.AMask: {enc: rIIIEncoding, immForm: ABSETI, ternary: true},
|
ABSET & obj.AMask: {enc: rIIIEncoding, immForm: ABSETI, ternary: true},
|
||||||
ABSETI & obj.AMask: {enc: iIIEncoding, ternary: true},
|
ABSETI & obj.AMask: {enc: iIIEncoding, ternary: true},
|
||||||
|
|
||||||
|
//
|
||||||
|
// Privileged ISA
|
||||||
|
//
|
||||||
|
|
||||||
|
// 3.3.1: Environment Call and Breakpoint
|
||||||
|
AECALL & obj.AMask: {enc: iIIEncoding},
|
||||||
|
AEBREAK & obj.AMask: {enc: iIIEncoding},
|
||||||
|
|
||||||
// Escape hatch
|
// Escape hatch
|
||||||
AWORD & obj.AMask: {enc: rawEncoding},
|
AWORD & obj.AMask: {enc: rawEncoding},
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue