cmd/internal/obj/riscv: add encoding for compressed riscv64 instructions

Regenerate instruction encodings for riscv64, including rv64_c, rv_c
and rv_c_d.

Updates #71105

Change-Id: I004cc00290bf018ebb848592d84d924481f03851
Reviewed-on: https://go-review.googlesource.com/c/go/+/523476
Reviewed-by: Meng Zhuo <mengzhuo1203@gmail.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
This commit is contained in:
Joel Sing 2023-08-26 05:11:52 +10:00
parent 320df537cc
commit 924fe98902
3 changed files with 178 additions and 4 deletions

View file

@ -192,6 +192,47 @@ var Anames = []string{
"FLEQ",
"FLTQ",
"FCLASSQ",
"CLWSP",
"CFLWSP",
"CLDSP",
"CFLDSP",
"CSWSP",
"CSDSP",
"CFSWSP",
"CFSDSP",
"CLW",
"CLD",
"CFLW",
"CFLD",
"CSW",
"CSD",
"CFSW",
"CFSD",
"CJ",
"CJR",
"CJALR",
"CBEQZ",
"CBNEZ",
"CLI",
"CLUI",
"CADDI",
"CADDIW",
"CADDI16SP",
"CADDI4SPN",
"CSLLI",
"CSRLI",
"CSRAI",
"CANDI",
"CMV",
"CADD",
"CAND",
"COR",
"CXOR",
"CSUB",
"CADDW",
"CSUBW",
"CNOP",
"CEBREAK",
"ADDUW",
"SH1ADD",
"SH1ADDUW",

View file

@ -551,7 +551,7 @@ const (
AFNMADDQ
AFNMSUBQ
// 22.3 Quad-Precision Convert and Move Instructions
// 22.3: Quad-Precision Convert and Move Instructions
AFCVTWQ
AFCVTLQ
AFCVTSQ
@ -568,14 +568,73 @@ const (
AFSGNJNQ
AFSGNJXQ
// 22.4 Quad-Precision Floating-Point Compare Instructions
// 22.4: Quad-Precision Floating-Point Compare Instructions
AFEQQ
AFLEQ
AFLTQ
// 22.5 Quad-Precision Floating-Point Classify Instruction
// 22.5: Quad-Precision Floating-Point Classify Instruction
AFCLASSQ
//
// "C" Extension for Compressed Instructions
//
// 26.3.1: Compressed Stack-Pointer-Based Loads and Stores
ACLWSP
ACFLWSP
ACLDSP
ACFLDSP
ACSWSP
ACSDSP
ACFSWSP
ACFSDSP
// 26.3.2: Compressed Register-Based Loads and Stores
ACLW
ACLD
ACFLW
ACFLD
ACSW
ACSD
ACFSW
ACFSD
// 26.4: Compressed Control Transfer Instructions
ACJ
ACJR
ACJALR
ACBEQZ
ACBNEZ
// 26.5.1: Compressed Integer Constant-Generation Instructions
ACLI
ACLUI
ACADDI
ACADDIW
ACADDI16SP
ACADDI4SPN
ACSLLI
ACSRLI
ACSRAI
ACANDI
// 26.5.3: Compressed Integer Register-Register Operations
ACMV
ACADD
ACAND
ACOR
ACXOR
ACSUB
ACADDW
ACSUBW
// 26.5.5: Compressed NOP Instruction
ACNOP
// 26.5.6: Compressed Breakpoint Instruction
ACEBREAK
//
// "B" Extension for Bit Manipulation, Version 1.0.0
//

View file

@ -1,4 +1,4 @@
// Code generated by ./parse.py -go rv64_a rv64_d rv64_f rv64_i rv64_m rv64_q rv64_zba rv64_zbb rv64_zbs rv_a rv_d rv_f rv_i rv_m rv_q rv_s rv_system rv_v rv_zba rv_zbb rv_zbs rv_zicsr; DO NOT EDIT.
// Code generated by ./parse.py -go rv64_a rv64_c rv64_d rv64_f rv64_i rv64_m rv64_q rv64_zba rv64_zbb rv64_zbs rv_a rv_c rv_c_d rv_d rv_f rv_i rv_m rv_q rv_s rv_system rv_v rv_zba rv_zbb rv_zbs rv_zicsr; DO NOT EDIT.
package riscv
import "cmd/internal/obj"
@ -96,6 +96,80 @@ func encode(a obj.As) *inst {
return &inst{0x33, 0x1, 0x0, 0x0, 640, 0x14}
case ABSETI:
return &inst{0x13, 0x1, 0x0, 0x0, 640, 0x14}
case ACADD:
return &inst{0x2, 0x1, 0x1, 0x0, 0, 0x0}
case ACADDI:
return &inst{0x1, 0x0, 0x0, 0x0, 0, 0x0}
case ACADDI16SP:
return &inst{0x1, 0x6, 0x0, 0x0, 0, 0x0}
case ACADDI4SPN:
return &inst{0x0, 0x0, 0x0, 0x0, 0, 0x0}
case ACADDIW:
return &inst{0x1, 0x2, 0x0, 0x0, 0, 0x0}
case ACADDW:
return &inst{0x21, 0x1, 0x1, 0x0, 0, 0x0}
case ACAND:
return &inst{0x61, 0x0, 0x1, 0x0, 0, 0x0}
case ACANDI:
return &inst{0x1, 0x0, 0x1, 0x0, 0, 0x0}
case ACBEQZ:
return &inst{0x1, 0x4, 0x1, 0x0, 0, 0x0}
case ACBNEZ:
return &inst{0x1, 0x6, 0x1, 0x0, 0, 0x0}
case ACEBREAK:
return &inst{0x2, 0x1, 0x1, 0x0, 0, 0x0}
case ACFLD:
return &inst{0x0, 0x2, 0x0, 0x0, 0, 0x0}
case ACFLDSP:
return &inst{0x2, 0x2, 0x0, 0x0, 0, 0x0}
case ACFSD:
return &inst{0x0, 0x2, 0x1, 0x0, 0, 0x0}
case ACFSDSP:
return &inst{0x2, 0x2, 0x1, 0x0, 0, 0x0}
case ACJ:
return &inst{0x1, 0x2, 0x1, 0x0, 0, 0x0}
case ACJALR:
return &inst{0x2, 0x1, 0x1, 0x0, 0, 0x0}
case ACJR:
return &inst{0x2, 0x0, 0x1, 0x0, 0, 0x0}
case ACLD:
return &inst{0x0, 0x6, 0x0, 0x0, 0, 0x0}
case ACLDSP:
return &inst{0x2, 0x6, 0x0, 0x0, 0, 0x0}
case ACLI:
return &inst{0x1, 0x4, 0x0, 0x0, 0, 0x0}
case ACLUI:
return &inst{0x1, 0x6, 0x0, 0x0, 0, 0x0}
case ACLW:
return &inst{0x0, 0x4, 0x0, 0x0, 0, 0x0}
case ACLWSP:
return &inst{0x2, 0x4, 0x0, 0x0, 0, 0x0}
case ACMV:
return &inst{0x2, 0x0, 0x1, 0x0, 0, 0x0}
case ACNOP:
return &inst{0x1, 0x0, 0x0, 0x0, 0, 0x0}
case ACOR:
return &inst{0x41, 0x0, 0x1, 0x0, 0, 0x0}
case ACSD:
return &inst{0x0, 0x6, 0x1, 0x0, 0, 0x0}
case ACSDSP:
return &inst{0x2, 0x6, 0x1, 0x0, 0, 0x0}
case ACSLLI:
return &inst{0x2, 0x0, 0x0, 0x0, 0, 0x0}
case ACSRAI:
return &inst{0x1, 0x0, 0x1, 0x0, 0, 0x0}
case ACSRLI:
return &inst{0x1, 0x0, 0x1, 0x0, 0, 0x0}
case ACSUB:
return &inst{0x1, 0x0, 0x1, 0x0, 0, 0x0}
case ACSUBW:
return &inst{0x1, 0x1, 0x1, 0x0, 0, 0x0}
case ACSW:
return &inst{0x0, 0x4, 0x1, 0x0, 0, 0x0}
case ACSWSP:
return &inst{0x2, 0x4, 0x1, 0x0, 0, 0x0}
case ACXOR:
return &inst{0x21, 0x0, 0x1, 0x0, 0, 0x0}
case ACLZ:
return &inst{0x13, 0x1, 0x0, 0x0, 1536, 0x30}
case ACLZW: