|
29 | 29 | require_extension(EXT_ZVBC); \ |
30 | 30 | } while (0) |
31 | 31 |
|
| 32 | +// Ensures that the ZVBC32e extension (vector carryless multiplication |
| 33 | +// with 32-bit elements) is present, and the vector unit is enabled |
| 34 | +// and in a valid state. |
| 35 | +#define require_zvbc32e \ |
| 36 | + do { \ |
| 37 | + require_vector(true); \ |
| 38 | + require_extension(EXT_ZVBC32E); \ |
| 39 | + } while (0) |
| 40 | + |
| 41 | +// Ensures that any ZVBC extensions (vector carryless multiplication) |
| 42 | +// is present, and the vector unit is enabled and in a valid state. |
| 43 | +#define require_any_zvbc \ |
| 44 | + do { \ |
| 45 | + require_vector(true); \ |
| 46 | + require_either_extension(EXT_ZVBC, EXT_ZVBC32E); \ |
| 47 | + } while (0) |
| 48 | + |
32 | 49 | // Ensures that the ZVKG extension (vector Galois Field Multiplication) |
33 | 50 | // is present, and the vector unit is enabled and in a valid state. |
34 | 51 | #define require_zvkg \ |
|
37 | 54 | require_extension(EXT_ZVKG); \ |
38 | 55 | } while (0) |
39 | 56 |
|
| 57 | +// Ensures that the ZVKGS extension (vector Galois Field Multiplication |
| 58 | +// with vector-scalar variant) is present, and the vector unit is |
| 59 | +// enabled and in a valid state. |
| 60 | +#define require_zvkgs \ |
| 61 | + do { \ |
| 62 | + require_vector(true); \ |
| 63 | + require_extension(EXT_ZVKGS); \ |
| 64 | + } while (0) |
40 | 65 | // Ensures that a ZVK extension supporting SHA-256 is present. |
41 | 66 | // For SHA-256, this support is present in either Zvknha or Zvknhb. |
42 | 67 | // Also ensures that the vector unit is enabled and in a valid state. |
|
0 commit comments