1 /* SPDX-License-Identifier: GPL-2.0-or-later * 1 2 /* 3 * SM4 helper macros for Crypto Extensions 4 * Copyright (C) 2022 Tianjia Zhang <tianjia.z 5 */ 6 7 #define SM4_PREPARE(ptr) 8 ld1 {v24.16b-v27.16b}, [pt 9 ld1 {v28.16b-v31.16b}, [pt 10 11 #define SM4_CRYPT_BLK_BE(b0) 12 sm4e b0.4s, v24.4s; 13 sm4e b0.4s, v25.4s; 14 sm4e b0.4s, v26.4s; 15 sm4e b0.4s, v27.4s; 16 sm4e b0.4s, v28.4s; 17 sm4e b0.4s, v29.4s; 18 sm4e b0.4s, v30.4s; 19 sm4e b0.4s, v31.4s; 20 rev64 b0.4s, b0.4s; 21 ext b0.16b, b0.16b, b0.16b 22 rev32 b0.16b, b0.16b; 23 24 #define SM4_CRYPT_BLK(b0) 25 rev32 b0.16b, b0.16b; 26 SM4_CRYPT_BLK_BE(b0); 27 28 #define SM4_CRYPT_BLK2_BE(b0, b1) 29 sm4e b0.4s, v24.4s; 30 sm4e b1.4s, v24.4s; 31 sm4e b0.4s, v25.4s; 32 sm4e b1.4s, v25.4s; 33 sm4e b0.4s, v26.4s; 34 sm4e b1.4s, v26.4s; 35 sm4e b0.4s, v27.4s; 36 sm4e b1.4s, v27.4s; 37 sm4e b0.4s, v28.4s; 38 sm4e b1.4s, v28.4s; 39 sm4e b0.4s, v29.4s; 40 sm4e b1.4s, v29.4s; 41 sm4e b0.4s, v30.4s; 42 sm4e b1.4s, v30.4s; 43 sm4e b0.4s, v31.4s; 44 sm4e b1.4s, v31.4s; 45 rev64 b0.4s, b0.4s; 46 rev64 b1.4s, b1.4s; 47 ext b0.16b, b0.16b, b0.16b 48 ext b1.16b, b1.16b, b1.16b 49 rev32 b0.16b, b0.16b; 50 rev32 b1.16b, b1.16b; 51 52 #define SM4_CRYPT_BLK2(b0, b1) 53 rev32 b0.16b, b0.16b; 54 rev32 b1.16b, b1.16b; 55 SM4_CRYPT_BLK2_BE(b0, b1); 56 57 #define SM4_CRYPT_BLK4_BE(b0, b1, b2, b3) 58 sm4e b0.4s, v24.4s; 59 sm4e b1.4s, v24.4s; 60 sm4e b2.4s, v24.4s; 61 sm4e b3.4s, v24.4s; 62 sm4e b0.4s, v25.4s; 63 sm4e b1.4s, v25.4s; 64 sm4e b2.4s, v25.4s; 65 sm4e b3.4s, v25.4s; 66 sm4e b0.4s, v26.4s; 67 sm4e b1.4s, v26.4s; 68 sm4e b2.4s, v26.4s; 69 sm4e b3.4s, v26.4s; 70 sm4e b0.4s, v27.4s; 71 sm4e b1.4s, v27.4s; 72 sm4e b2.4s, v27.4s; 73 sm4e b3.4s, v27.4s; 74 sm4e b0.4s, v28.4s; 75 sm4e b1.4s, v28.4s; 76 sm4e b2.4s, v28.4s; 77 sm4e b3.4s, v28.4s; 78 sm4e b0.4s, v29.4s; 79 sm4e b1.4s, v29.4s; 80 sm4e b2.4s, v29.4s; 81 sm4e b3.4s, v29.4s; 82 sm4e b0.4s, v30.4s; 83 sm4e b1.4s, v30.4s; 84 sm4e b2.4s, v30.4s; 85 sm4e b3.4s, v30.4s; 86 sm4e b0.4s, v31.4s; 87 sm4e b1.4s, v31.4s; 88 sm4e b2.4s, v31.4s; 89 sm4e b3.4s, v31.4s; 90 rev64 b0.4s, b0.4s; 91 rev64 b1.4s, b1.4s; 92 rev64 b2.4s, b2.4s; 93 rev64 b3.4s, b3.4s; 94 ext b0.16b, b0.16b, b0.16b 95 ext b1.16b, b1.16b, b1.16b 96 ext b2.16b, b2.16b, b2.16b 97 ext b3.16b, b3.16b, b3.16b 98 rev32 b0.16b, b0.16b; 99 rev32 b1.16b, b1.16b; 100 rev32 b2.16b, b2.16b; 101 rev32 b3.16b, b3.16b; 102 103 #define SM4_CRYPT_BLK4(b0, b1, b2, b3) 104 rev32 b0.16b, b0.16b; 105 rev32 b1.16b, b1.16b; 106 rev32 b2.16b, b2.16b; 107 rev32 b3.16b, b3.16b; 108 SM4_CRYPT_BLK4_BE(b0, b1, b2, b3); 109 110 #define SM4_CRYPT_BLK8_BE(b0, b1, b2, b3, b4, 111 sm4e b0.4s, v24.4s; 112 sm4e b1.4s, v24.4s; 113 sm4e b2.4s, v24.4s; 114 sm4e b3.4s, v24.4s; 115 sm4e b4.4s, v24.4s; 116 sm4e b5.4s, v24.4s; 117 sm4e b6.4s, v24.4s; 118 sm4e b7.4s, v24.4s; 119 sm4e b0.4s, v25.4s; 120 sm4e b1.4s, v25.4s; 121 sm4e b2.4s, v25.4s; 122 sm4e b3.4s, v25.4s; 123 sm4e b4.4s, v25.4s; 124 sm4e b5.4s, v25.4s; 125 sm4e b6.4s, v25.4s; 126 sm4e b7.4s, v25.4s; 127 sm4e b0.4s, v26.4s; 128 sm4e b1.4s, v26.4s; 129 sm4e b2.4s, v26.4s; 130 sm4e b3.4s, v26.4s; 131 sm4e b4.4s, v26.4s; 132 sm4e b5.4s, v26.4s; 133 sm4e b6.4s, v26.4s; 134 sm4e b7.4s, v26.4s; 135 sm4e b0.4s, v27.4s; 136 sm4e b1.4s, v27.4s; 137 sm4e b2.4s, v27.4s; 138 sm4e b3.4s, v27.4s; 139 sm4e b4.4s, v27.4s; 140 sm4e b5.4s, v27.4s; 141 sm4e b6.4s, v27.4s; 142 sm4e b7.4s, v27.4s; 143 sm4e b0.4s, v28.4s; 144 sm4e b1.4s, v28.4s; 145 sm4e b2.4s, v28.4s; 146 sm4e b3.4s, v28.4s; 147 sm4e b4.4s, v28.4s; 148 sm4e b5.4s, v28.4s; 149 sm4e b6.4s, v28.4s; 150 sm4e b7.4s, v28.4s; 151 sm4e b0.4s, v29.4s; 152 sm4e b1.4s, v29.4s; 153 sm4e b2.4s, v29.4s; 154 sm4e b3.4s, v29.4s; 155 sm4e b4.4s, v29.4s; 156 sm4e b5.4s, v29.4s; 157 sm4e b6.4s, v29.4s; 158 sm4e b7.4s, v29.4s; 159 sm4e b0.4s, v30.4s; 160 sm4e b1.4s, v30.4s; 161 sm4e b2.4s, v30.4s; 162 sm4e b3.4s, v30.4s; 163 sm4e b4.4s, v30.4s; 164 sm4e b5.4s, v30.4s; 165 sm4e b6.4s, v30.4s; 166 sm4e b7.4s, v30.4s; 167 sm4e b0.4s, v31.4s; 168 sm4e b1.4s, v31.4s; 169 sm4e b2.4s, v31.4s; 170 sm4e b3.4s, v31.4s; 171 sm4e b4.4s, v31.4s; 172 sm4e b5.4s, v31.4s; 173 sm4e b6.4s, v31.4s; 174 sm4e b7.4s, v31.4s; 175 rev64 b0.4s, b0.4s; 176 rev64 b1.4s, b1.4s; 177 rev64 b2.4s, b2.4s; 178 rev64 b3.4s, b3.4s; 179 rev64 b4.4s, b4.4s; 180 rev64 b5.4s, b5.4s; 181 rev64 b6.4s, b6.4s; 182 rev64 b7.4s, b7.4s; 183 ext b0.16b, b0.16b, b0.16b 184 ext b1.16b, b1.16b, b1.16b 185 ext b2.16b, b2.16b, b2.16b 186 ext b3.16b, b3.16b, b3.16b 187 ext b4.16b, b4.16b, b4.16b 188 ext b5.16b, b5.16b, b5.16b 189 ext b6.16b, b6.16b, b6.16b 190 ext b7.16b, b7.16b, b7.16b 191 rev32 b0.16b, b0.16b; 192 rev32 b1.16b, b1.16b; 193 rev32 b2.16b, b2.16b; 194 rev32 b3.16b, b3.16b; 195 rev32 b4.16b, b4.16b; 196 rev32 b5.16b, b5.16b; 197 rev32 b6.16b, b6.16b; 198 rev32 b7.16b, b7.16b; 199 200 #define SM4_CRYPT_BLK8(b0, b1, b2, b3, b4, b5, 201 rev32 b0.16b, b0.16b; 202 rev32 b1.16b, b1.16b; 203 rev32 b2.16b, b2.16b; 204 rev32 b3.16b, b3.16b; 205 rev32 b4.16b, b4.16b; 206 rev32 b5.16b, b5.16b; 207 rev32 b6.16b, b6.16b; 208 rev32 b7.16b, b7.16b; 209 SM4_CRYPT_BLK8_BE(b0, b1, b2, b3, b4, 210
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.