tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Constant-riscv-b.h (4081B)


      1 // Copyright 2023 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 jit_riscv64_constant_Constant_riscv64_b_h_
      6 #define jit_riscv64_constant_Constant_riscv64_b_h_
      7 
      8 #include "jit/riscv64/constant/Base-constant-riscv.h"
      9 
     10 namespace js {
     11 namespace jit {
     12 
     13 enum OpcodeRISCVB : uint32_t {
     14 #ifdef JS_CODEGEN_RISCV64
     15  RO_ADDUW = OP_32 | (0b000 << kFunct3Shift) | (0b0000100 << kFunct7Shift),
     16  RO_SH1ADDUW = OP_32 | (0b010 << kFunct3Shift) | (0b0010000 << kFunct7Shift),
     17  RO_SH2ADDUW = OP_32 | (0b100 << kFunct3Shift) | (0b0010000 << kFunct7Shift),
     18  RO_SH3ADDUW = OP_32 | (0b110 << kFunct3Shift) | (0b0010000 << kFunct7Shift),
     19  RO_SLLIUW = OP_IMM_32 | (0b001 << kFunct3Shift) | (0b000010 << kFunct6Shift),
     20 #endif
     21  RO_SH1ADD = OP | (0b010 << kFunct3Shift) | (0b0010000 << kFunct7Shift),
     22  RO_SH2ADD = OP | (0b100 << kFunct3Shift) | (0b0010000 << kFunct7Shift),
     23  RO_SH3ADD = OP | (0b110 << kFunct3Shift) | (0b0010000 << kFunct7Shift),
     24 
     25  // Zbb
     26  RO_ANDN = OP | (0b111 << kFunct3Shift) | (0b0100000 << kFunct7Shift),
     27  RO_ORN = OP | (0b110 << kFunct3Shift) | (0b0100000 << kFunct7Shift),
     28  RO_XNOR = OP | (0b100 << kFunct3Shift) | (0b0100000 << kFunct7Shift),
     29  OP_COUNT = OP_IMM | (0b001 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     30  RO_CLZ = OP_COUNT | (0b00000 << kShamtShift),
     31  RO_CTZ = OP_COUNT | (0b00001 << kShamtShift),
     32  RO_CPOP = OP_COUNT | (0b00010 << kShamtShift),
     33 #ifdef JS_CODEGEN_RISCV64
     34  OP_COUNTW = OP_IMM_32 | (0b001 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     35  RO_CLZW = OP_COUNTW | (0b00000 << kShamtShift),
     36  RO_CTZW = OP_COUNTW | (0b00001 << kShamtShift),
     37  RO_CPOPW = OP_COUNTW | (0b00010 << kShamtShift),
     38 #endif
     39  RO_MAX = OP | (0b110 << kFunct3Shift) | (0b0000101 << kFunct7Shift),
     40  RO_MAXU = OP | (0b111 << kFunct3Shift) | (0b0000101 << kFunct7Shift),
     41  RO_MIN = OP | (0b100 << kFunct3Shift) | (0b0000101 << kFunct7Shift),
     42  RO_MINU = OP | (0b101 << kFunct3Shift) | (0b0000101 << kFunct7Shift),
     43  RO_SEXTB = OP_IMM | (0b001 << kFunct3Shift) | (0b0110000 << kFunct7Shift) |
     44             (0b00100 << kShamtShift),
     45  RO_SEXTH = OP_IMM | (0b001 << kFunct3Shift) | (0b0110000 << kFunct7Shift) |
     46             (0b00101 << kShamtShift),
     47 #ifdef JS_CODEGEN_RISCV64
     48  RO_ZEXTH = OP_32 | (0b100 << kFunct3Shift) | (0b0000100 << kFunct7Shift) |
     49             (0b00000 << kShamtShift),
     50 #else
     51  RO_ZEXTH = OP | (0b100 << kFunct3Shift) | (0b0000100 << kFunct7Shift) |
     52             (0b00000 << kShamtShift),
     53 #endif
     54 
     55  // Zbb: bitwise rotation
     56  RO_ROL = OP | (0b001 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     57  RO_ROR = OP | (0b101 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     58  RO_ORCB = OP_IMM | (0b101 << kFunct3Shift) | (0b001010000111 << kImm12Shift),
     59 #ifdef JS_CODEGEN_RISCV64
     60  RO_RORI = OP_IMM | (0b101 << kFunct3Shift) | (0b011000 << kFunct6Shift),
     61 #else
     62  RO_RORI = OP_IMM | (0b101 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     63 #endif
     64 
     65 #ifdef JS_CODEGEN_RISCV64
     66  RO_ROLW = OP_32 | (0b001 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     67  RO_RORIW = OP_IMM_32 | (0b101 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     68  RO_RORW = OP_32 | (0b101 << kFunct3Shift) | (0b0110000 << kFunct7Shift),
     69 #endif
     70 
     71  RO_REV8 = OP_IMM | (0b101 << kFunct3Shift) | (0b011010 << kFunct6Shift),
     72 #ifdef JS_CODEGEN_RISCV64
     73  RO_REV8_IMM12 = 0b011010111000,
     74 #else
     75  RO_REV8_IMM12 = 0b011010011000,
     76 #endif
     77 
     78  // Zbs
     79  RO_BCLR = OP | (0b001 << kFunct3Shift) | (0b0100100 << kFunct7Shift),
     80  RO_BCLRI = OP_IMM | (0b001 << kFunct3Shift) | (0b010010 << kFunct6Shift),
     81 
     82  RO_BEXT = OP | (0b101 << kFunct3Shift) | (0b0100100 << kFunct7Shift),
     83  RO_BEXTI = OP_IMM | (0b101 << kFunct3Shift) | (0b010010 << kFunct6Shift),
     84 
     85  RO_BINV = OP | (0b001 << kFunct3Shift) | (0b0110100 << kFunct7Shift),
     86  RO_BINVI = OP_IMM | (0b001 << kFunct3Shift) | (0b011010 << kFunct6Shift),
     87 
     88  RO_BSET = OP | (0b001 << kFunct3Shift) | (0b0010100 << kFunct7Shift),
     89  RO_BSETI = OP_IMM | (0b001 << kFunct3Shift) | (0b0010100 << kFunct7Shift),
     90 };
     91 
     92 }  // namespace jit
     93 }  // namespace js
     94 
     95 #endif