Skip to content

Commit 2cfd9b7

Browse files
committed
cmd/internal/obj/riscv: add assembly support of Zbc extension
1 parent d50a571 commit 2cfd9b7

File tree

5 files changed

+27
-3
lines changed

5 files changed

+27
-3
lines changed

src/cmd/asm/internal/asm/testdata/riscv64.s

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -509,6 +509,11 @@ start:
509509
ORCB X5, X6 // 13d37228
510510
REV8 X7, X8 // 13d4836b
511511

512+
// 28.4.3: Carry-less multiplication (Zbc)
513+
CLMUL X5, X6, X7 // b313530a
514+
CLMULH X5, X6, X7 // b333530a
515+
CLMULR X5, X6, X7 // b323530a
516+
512517
// 28.4.4: Single-bit Instructions (Zbs)
513518
BCLR X23, X24, X25 // b31c7c49
514519
BCLR $63, X24 // 131cfc4b

src/cmd/internal/obj/riscv/anames.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cmd/internal/obj/riscv/cpu.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ const (
669669
ASEXTH
670670
AZEXTH
671671

672-
// 28.4.3: Bitwise Rotation (Zbb)
672+
// 28.4.2: Bitwise Rotation (Zbb)
673673
AROL
674674
AROLW
675675
AROR
@@ -679,6 +679,11 @@ const (
679679
AORCB
680680
AREV8
681681

682+
// 28.4.3: Carry-less multiplication (Zbc)
683+
ACLMUL
684+
ACLMULH
685+
ACLMULR
686+
682687
// 28.4.4: Single-bit Instructions (Zbs)
683688
ABCLR
684689
ABCLRI

src/cmd/internal/obj/riscv/inst.go

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cmd/internal/obj/riscv/obj.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2621,7 +2621,7 @@ var instructions = [ALAST & obj.AMask]instructionData{
26212621
AXNOR & obj.AMask: {enc: rIIIEncoding, ternary: true},
26222622
AZEXTH & obj.AMask: {enc: rIIEncoding},
26232623

2624-
// 28.4.3: Bitwise Rotation (Zbb)
2624+
// 28.4.2: Bitwise Rotation (Zbb)
26252625
AROL & obj.AMask: {enc: rIIIEncoding, ternary: true},
26262626
AROLW & obj.AMask: {enc: rIIIEncoding, ternary: true},
26272627
AROR & obj.AMask: {enc: rIIIEncoding, immForm: ARORI, ternary: true},
@@ -2631,6 +2631,11 @@ var instructions = [ALAST & obj.AMask]instructionData{
26312631
AORCB & obj.AMask: {enc: rIIEncoding},
26322632
AREV8 & obj.AMask: {enc: rIIEncoding},
26332633

2634+
// 28.4.3: Carry-less Multiplication (Zbc)
2635+
ACLMUL & obj.AMask: {enc: rIIIEncoding, ternary: true},
2636+
ACLMULH & obj.AMask: {enc: rIIIEncoding, ternary: true},
2637+
ACLMULR & obj.AMask: {enc: rIIIEncoding, ternary: true},
2638+
26342639
// 28.4.4: Single-bit Instructions (Zbs)
26352640
ABCLR & obj.AMask: {enc: rIIIEncoding, immForm: ABCLRI, ternary: true},
26362641
ABCLRI & obj.AMask: {enc: iIIEncoding, ternary: true},

0 commit comments

Comments
 (0)