1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * test helper assembly functions 4 * 5 * Copyright (C) 2016 Simon Guo, IBM Corporation. 6 */ 7#include <ppc-asm.h> 8#include "reg.h" 9 10 11/* Non volatile GPR - unsigned long buf[18] */ 12FUNC_START(load_gpr) 13 ld 14, 0*8(3) 14 ld 15, 1*8(3) 15 ld 16, 2*8(3) 16 ld 17, 3*8(3) 17 ld 18, 4*8(3) 18 ld 19, 5*8(3) 19 ld 20, 6*8(3) 20 ld 21, 7*8(3) 21 ld 22, 8*8(3) 22 ld 23, 9*8(3) 23 ld 24, 10*8(3) 24 ld 25, 11*8(3) 25 ld 26, 12*8(3) 26 ld 27, 13*8(3) 27 ld 28, 14*8(3) 28 ld 29, 15*8(3) 29 ld 30, 16*8(3) 30 ld 31, 17*8(3) 31 blr 32FUNC_END(load_gpr) 33 34FUNC_START(store_gpr) 35 std 14, 0*8(3) 36 std 15, 1*8(3) 37 std 16, 2*8(3) 38 std 17, 3*8(3) 39 std 18, 4*8(3) 40 std 19, 5*8(3) 41 std 20, 6*8(3) 42 std 21, 7*8(3) 43 std 22, 8*8(3) 44 std 23, 9*8(3) 45 std 24, 10*8(3) 46 std 25, 11*8(3) 47 std 26, 12*8(3) 48 std 27, 13*8(3) 49 std 28, 14*8(3) 50 std 29, 15*8(3) 51 std 30, 16*8(3) 52 std 31, 17*8(3) 53 blr 54FUNC_END(store_gpr) 55 56/* Single Precision Float - float buf[32] */ 57FUNC_START(load_fpr_single_precision) 58 lfs 0, 0*4(3) 59 lfs 1, 1*4(3) 60 lfs 2, 2*4(3) 61 lfs 3, 3*4(3) 62 lfs 4, 4*4(3) 63 lfs 5, 5*4(3) 64 lfs 6, 6*4(3) 65 lfs 7, 7*4(3) 66 lfs 8, 8*4(3) 67 lfs 9, 9*4(3) 68 lfs 10, 10*4(3) 69 lfs 11, 11*4(3) 70 lfs 12, 12*4(3) 71 lfs 13, 13*4(3) 72 lfs 14, 14*4(3) 73 lfs 15, 15*4(3) 74 lfs 16, 16*4(3) 75 lfs 17, 17*4(3) 76 lfs 18, 18*4(3) 77 lfs 19, 19*4(3) 78 lfs 20, 20*4(3) 79 lfs 21, 21*4(3) 80 lfs 22, 22*4(3) 81 lfs 23, 23*4(3) 82 lfs 24, 24*4(3) 83 lfs 25, 25*4(3) 84 lfs 26, 26*4(3) 85 lfs 27, 27*4(3) 86 lfs 28, 28*4(3) 87 lfs 29, 29*4(3) 88 lfs 30, 30*4(3) 89 lfs 31, 31*4(3) 90 blr 91FUNC_END(load_fpr_single_precision) 92 93/* Single Precision Float - float buf[32] */ 94FUNC_START(store_fpr_single_precision) 95 stfs 0, 0*4(3) 96 stfs 1, 1*4(3) 97 stfs 2, 2*4(3) 98 stfs 3, 3*4(3) 99 stfs 4, 4*4(3) 100 stfs 5, 5*4(3) 101 stfs 6, 6*4(3) 102 stfs 7, 7*4(3) 103 stfs 8, 8*4(3) 104 stfs 9, 9*4(3) 105 stfs 10, 10*4(3) 106 stfs 11, 11*4(3) 107 stfs 12, 12*4(3) 108 stfs 13, 13*4(3) 109 stfs 14, 14*4(3) 110 stfs 15, 15*4(3) 111 stfs 16, 16*4(3) 112 stfs 17, 17*4(3) 113 stfs 18, 18*4(3) 114 stfs 19, 19*4(3) 115 stfs 20, 20*4(3) 116 stfs 21, 21*4(3) 117 stfs 22, 22*4(3) 118 stfs 23, 23*4(3) 119 stfs 24, 24*4(3) 120 stfs 25, 25*4(3) 121 stfs 26, 26*4(3) 122 stfs 27, 27*4(3) 123 stfs 28, 28*4(3) 124 stfs 29, 29*4(3) 125 stfs 30, 30*4(3) 126 stfs 31, 31*4(3) 127 blr 128FUNC_END(store_fpr_single_precision) 129 130/* VMX/VSX registers - unsigned long buf[128] */ 131FUNC_START(loadvsx) 132 lis 4, 0 133 LXVD2X (0,(4),(3)) 134 addi 4, 4, 16 135 LXVD2X (1,(4),(3)) 136 addi 4, 4, 16 137 LXVD2X (2,(4),(3)) 138 addi 4, 4, 16 139 LXVD2X (3,(4),(3)) 140 addi 4, 4, 16 141 LXVD2X (4,(4),(3)) 142 addi 4, 4, 16 143 LXVD2X (5,(4),(3)) 144 addi 4, 4, 16 145 LXVD2X (6,(4),(3)) 146 addi 4, 4, 16 147 LXVD2X (7,(4),(3)) 148 addi 4, 4, 16 149 LXVD2X (8,(4),(3)) 150 addi 4, 4, 16 151 LXVD2X (9,(4),(3)) 152 addi 4, 4, 16 153 LXVD2X (10,(4),(3)) 154 addi 4, 4, 16 155 LXVD2X (11,(4),(3)) 156 addi 4, 4, 16 157 LXVD2X (12,(4),(3)) 158 addi 4, 4, 16 159 LXVD2X (13,(4),(3)) 160 addi 4, 4, 16 161 LXVD2X (14,(4),(3)) 162 addi 4, 4, 16 163 LXVD2X (15,(4),(3)) 164 addi 4, 4, 16 165 LXVD2X (16,(4),(3)) 166 addi 4, 4, 16 167 LXVD2X (17,(4),(3)) 168 addi 4, 4, 16 169 LXVD2X (18,(4),(3)) 170 addi 4, 4, 16 171 LXVD2X (19,(4),(3)) 172 addi 4, 4, 16 173 LXVD2X (20,(4),(3)) 174 addi 4, 4, 16 175 LXVD2X (21,(4),(3)) 176 addi 4, 4, 16 177 LXVD2X (22,(4),(3)) 178 addi 4, 4, 16 179 LXVD2X (23,(4),(3)) 180 addi 4, 4, 16 181 LXVD2X (24,(4),(3)) 182 addi 4, 4, 16 183 LXVD2X (25,(4),(3)) 184 addi 4, 4, 16 185 LXVD2X (26,(4),(3)) 186 addi 4, 4, 16 187 LXVD2X (27,(4),(3)) 188 addi 4, 4, 16 189 LXVD2X (28,(4),(3)) 190 addi 4, 4, 16 191 LXVD2X (29,(4),(3)) 192 addi 4, 4, 16 193 LXVD2X (30,(4),(3)) 194 addi 4, 4, 16 195 LXVD2X (31,(4),(3)) 196 addi 4, 4, 16 197 LXVD2X (32,(4),(3)) 198 addi 4, 4, 16 199 LXVD2X (33,(4),(3)) 200 addi 4, 4, 16 201 LXVD2X (34,(4),(3)) 202 addi 4, 4, 16 203 LXVD2X (35,(4),(3)) 204 addi 4, 4, 16 205 LXVD2X (36,(4),(3)) 206 addi 4, 4, 16 207 LXVD2X (37,(4),(3)) 208 addi 4, 4, 16 209 LXVD2X (38,(4),(3)) 210 addi 4, 4, 16 211 LXVD2X (39,(4),(3)) 212 addi 4, 4, 16 213 LXVD2X (40,(4),(3)) 214 addi 4, 4, 16 215 LXVD2X (41,(4),(3)) 216 addi 4, 4, 16 217 LXVD2X (42,(4),(3)) 218 addi 4, 4, 16 219 LXVD2X (43,(4),(3)) 220 addi 4, 4, 16 221 LXVD2X (44,(4),(3)) 222 addi 4, 4, 16 223 LXVD2X (45,(4),(3)) 224 addi 4, 4, 16 225 LXVD2X (46,(4),(3)) 226 addi 4, 4, 16 227 LXVD2X (47,(4),(3)) 228 addi 4, 4, 16 229 LXVD2X (48,(4),(3)) 230 addi 4, 4, 16 231 LXVD2X (49,(4),(3)) 232 addi 4, 4, 16 233 LXVD2X (50,(4),(3)) 234 addi 4, 4, 16 235 LXVD2X (51,(4),(3)) 236 addi 4, 4, 16 237 LXVD2X (52,(4),(3)) 238 addi 4, 4, 16 239 LXVD2X (53,(4),(3)) 240 addi 4, 4, 16 241 LXVD2X (54,(4),(3)) 242 addi 4, 4, 16 243 LXVD2X (55,(4),(3)) 244 addi 4, 4, 16 245 LXVD2X (56,(4),(3)) 246 addi 4, 4, 16 247 LXVD2X (57,(4),(3)) 248 addi 4, 4, 16 249 LXVD2X (58,(4),(3)) 250 addi 4, 4, 16 251 LXVD2X (59,(4),(3)) 252 addi 4, 4, 16 253 LXVD2X (60,(4),(3)) 254 addi 4, 4, 16 255 LXVD2X (61,(4),(3)) 256 addi 4, 4, 16 257 LXVD2X (62,(4),(3)) 258 addi 4, 4, 16 259 LXVD2X (63,(4),(3)) 260 blr 261FUNC_END(loadvsx) 262 263FUNC_START(storevsx) 264 lis 4, 0 265 STXVD2X (0,(4),(3)) 266 addi 4, 4, 16 267 STXVD2X (1,(4),(3)) 268 addi 4, 4, 16 269 STXVD2X (2,(4),(3)) 270 addi 4, 4, 16 271 STXVD2X (3,(4),(3)) 272 addi 4, 4, 16 273 STXVD2X (4,(4),(3)) 274 addi 4, 4, 16 275 STXVD2X (5,(4),(3)) 276 addi 4, 4, 16 277 STXVD2X (6,(4),(3)) 278 addi 4, 4, 16 279 STXVD2X (7,(4),(3)) 280 addi 4, 4, 16 281 STXVD2X (8,(4),(3)) 282 addi 4, 4, 16 283 STXVD2X (9,(4),(3)) 284 addi 4, 4, 16 285 STXVD2X (10,(4),(3)) 286 addi 4, 4, 16 287 STXVD2X (11,(4),(3)) 288 addi 4, 4, 16 289 STXVD2X (12,(4),(3)) 290 addi 4, 4, 16 291 STXVD2X (13,(4),(3)) 292 addi 4, 4, 16 293 STXVD2X (14,(4),(3)) 294 addi 4, 4, 16 295 STXVD2X (15,(4),(3)) 296 addi 4, 4, 16 297 STXVD2X (16,(4),(3)) 298 addi 4, 4, 16 299 STXVD2X (17,(4),(3)) 300 addi 4, 4, 16 301 STXVD2X (18,(4),(3)) 302 addi 4, 4, 16 303 STXVD2X (19,(4),(3)) 304 addi 4, 4, 16 305 STXVD2X (20,(4),(3)) 306 addi 4, 4, 16 307 STXVD2X (21,(4),(3)) 308 addi 4, 4, 16 309 STXVD2X (22,(4),(3)) 310 addi 4, 4, 16 311 STXVD2X (23,(4),(3)) 312 addi 4, 4, 16 313 STXVD2X (24,(4),(3)) 314 addi 4, 4, 16 315 STXVD2X (25,(4),(3)) 316 addi 4, 4, 16 317 STXVD2X (26,(4),(3)) 318 addi 4, 4, 16 319 STXVD2X (27,(4),(3)) 320 addi 4, 4, 16 321 STXVD2X (28,(4),(3)) 322 addi 4, 4, 16 323 STXVD2X (29,(4),(3)) 324 addi 4, 4, 16 325 STXVD2X (30,(4),(3)) 326 addi 4, 4, 16 327 STXVD2X (31,(4),(3)) 328 addi 4, 4, 16 329 STXVD2X (32,(4),(3)) 330 addi 4, 4, 16 331 STXVD2X (33,(4),(3)) 332 addi 4, 4, 16 333 STXVD2X (34,(4),(3)) 334 addi 4, 4, 16 335 STXVD2X (35,(4),(3)) 336 addi 4, 4, 16 337 STXVD2X (36,(4),(3)) 338 addi 4, 4, 16 339 STXVD2X (37,(4),(3)) 340 addi 4, 4, 16 341 STXVD2X (38,(4),(3)) 342 addi 4, 4, 16 343 STXVD2X (39,(4),(3)) 344 addi 4, 4, 16 345 STXVD2X (40,(4),(3)) 346 addi 4, 4, 16 347 STXVD2X (41,(4),(3)) 348 addi 4, 4, 16 349 STXVD2X (42,(4),(3)) 350 addi 4, 4, 16 351 STXVD2X (43,(4),(3)) 352 addi 4, 4, 16 353 STXVD2X (44,(4),(3)) 354 addi 4, 4, 16 355 STXVD2X (45,(4),(3)) 356 addi 4, 4, 16 357 STXVD2X (46,(4),(3)) 358 addi 4, 4, 16 359 STXVD2X (47,(4),(3)) 360 addi 4, 4, 16 361 STXVD2X (48,(4),(3)) 362 addi 4, 4, 16 363 STXVD2X (49,(4),(3)) 364 addi 4, 4, 16 365 STXVD2X (50,(4),(3)) 366 addi 4, 4, 16 367 STXVD2X (51,(4),(3)) 368 addi 4, 4, 16 369 STXVD2X (52,(4),(3)) 370 addi 4, 4, 16 371 STXVD2X (53,(4),(3)) 372 addi 4, 4, 16 373 STXVD2X (54,(4),(3)) 374 addi 4, 4, 16 375 STXVD2X (55,(4),(3)) 376 addi 4, 4, 16 377 STXVD2X (56,(4),(3)) 378 addi 4, 4, 16 379 STXVD2X (57,(4),(3)) 380 addi 4, 4, 16 381 STXVD2X (58,(4),(3)) 382 addi 4, 4, 16 383 STXVD2X (59,(4),(3)) 384 addi 4, 4, 16 385 STXVD2X (60,(4),(3)) 386 addi 4, 4, 16 387 STXVD2X (61,(4),(3)) 388 addi 4, 4, 16 389 STXVD2X (62,(4),(3)) 390 addi 4, 4, 16 391 STXVD2X (63,(4),(3)) 392 blr 393FUNC_END(storevsx) 394