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