v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
extension-riscv-b.h
Go to the documentation of this file.
1// Copyright 2022 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_CODEGEN_RISCV_EXTENSION_RISCV_B_H_
6#define V8_CODEGEN_RISCV_EXTENSION_RISCV_B_H_
7
12
13namespace v8 {
14namespace internal {
16 // RV32B Extension
17 public:
18 // Zba Extension
19 void sh1add(Register rd, Register rs1, Register rs2);
20 void sh2add(Register rd, Register rs1, Register rs2);
21 void sh3add(Register rd, Register rs1, Register rs2);
22#ifdef V8_TARGET_ARCH_RISCV64
23 void adduw(Register rd, Register rs1, Register rs2);
24 void zextw(Register rd, Register rs1) { adduw(rd, rs1, zero_reg); }
25 void sh1adduw(Register rd, Register rs1, Register rs2);
26 void sh2adduw(Register rd, Register rs1, Register rs2);
27 void sh3adduw(Register rd, Register rs1, Register rs2);
28 void slliuw(Register rd, Register rs1, uint8_t shamt);
29#endif
30
31 // Zbb Extension
32 void andn(Register rd, Register rs1, Register rs2);
33 void orn(Register rd, Register rs1, Register rs2);
34 void xnor(Register rd, Register rs1, Register rs2);
35
36 void clz(Register rd, Register rs);
37 void ctz(Register rd, Register rs);
38 void cpop(Register rd, Register rs);
39#ifdef V8_TARGET_ARCH_RISCV64
40 void clzw(Register rd, Register rs);
41 void ctzw(Register rd, Register rs);
42 void cpopw(Register rd, Register rs);
43#endif
44
45 void max(Register rd, Register rs1, Register rs2);
46 void maxu(Register rd, Register rs1, Register rs2);
47 void min(Register rd, Register rs1, Register rs2);
48 void minu(Register rd, Register rs1, Register rs2);
49
50 void sextb(Register rd, Register rs);
51 void sexth(Register rd, Register rs);
52 void zexth(Register rd, Register rs);
53
54 // Zbb: bitwise rotation
55 void rol(Register rd, Register rs1, Register rs2);
56 void ror(Register rd, Register rs1, Register rs2);
57 void rori(Register rd, Register rs1, uint8_t shamt);
58 void orcb(Register rd, Register rs);
59 void rev8(Register rd, Register rs);
60#ifdef V8_TARGET_ARCH_RISCV64
61 void rolw(Register rd, Register rs1, Register rs2);
62 void roriw(Register rd, Register rs1, uint8_t shamt);
63 void rorw(Register rd, Register rs1, Register rs2);
64#endif
65
66 // Zbs
67 void bclr(Register rd, Register rs1, Register rs2);
68 void bclri(Register rd, Register rs1, uint8_t shamt);
69 void bext(Register rd, Register rs1, Register rs2);
70 void bexti(Register rd, Register rs1, uint8_t shamt);
71 void binv(Register rd, Register rs1, Register rs2);
72 void binvi(Register rd, Register rs1, uint8_t shamt);
73 void bset(Register rd, Register rs1, Register rs2);
74 void bseti(Register rd, Register rs1, uint8_t shamt);
75};
76} // namespace internal
77} // namespace v8
78#endif // V8_CODEGEN_RISCV_EXTENSION_RISCV_B_H_
void min(Register rd, Register rs1, Register rs2)
void max(Register rd, Register rs1, Register rs2)
void bseti(Register rd, Register rs1, uint8_t shamt)
void andn(Register rd, Register rs1, Register rs2)
void bext(Register rd, Register rs1, Register rs2)
void minu(Register rd, Register rs1, Register rs2)
void xnor(Register rd, Register rs1, Register rs2)
void binv(Register rd, Register rs1, Register rs2)
void bclr(Register rd, Register rs1, Register rs2)
void rol(Register rd, Register rs1, Register rs2)
void sh2add(Register rd, Register rs1, Register rs2)
void bexti(Register rd, Register rs1, uint8_t shamt)
void cpop(Register rd, Register rs)
void sexth(Register rd, Register rs)
void zexth(Register rd, Register rs)
void sh3add(Register rd, Register rs1, Register rs2)
void orn(Register rd, Register rs1, Register rs2)
void rev8(Register rd, Register rs)
void ctz(Register rd, Register rs)
void binvi(Register rd, Register rs1, uint8_t shamt)
void sextb(Register rd, Register rs)
void bclri(Register rd, Register rs1, uint8_t shamt)
void maxu(Register rd, Register rs1, Register rs2)
void orcb(Register rd, Register rs)
void clz(Register rd, Register rs)
void bset(Register rd, Register rs1, Register rs2)
void sh1add(Register rd, Register rs1, Register rs2)
void rori(Register rd, Register rs1, uint8_t shamt)
#define ror(value, bits)
Definition sha-256.cc:30