Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * test helper assembly functions
0004  *
0005  * Copyright (C) 2016 Simon Guo, IBM Corporation.
0006  */
0007 #include <ppc-asm.h>
0008 #include "reg.h"
0009 
0010 
0011 /* Non volatile GPR - unsigned long buf[18] */
0012 FUNC_START(load_gpr)
0013     ld  14, 0*8(3)
0014     ld  15, 1*8(3)
0015     ld  16, 2*8(3)
0016     ld  17, 3*8(3)
0017     ld  18, 4*8(3)
0018     ld  19, 5*8(3)
0019     ld  20, 6*8(3)
0020     ld  21, 7*8(3)
0021     ld  22, 8*8(3)
0022     ld  23, 9*8(3)
0023     ld  24, 10*8(3)
0024     ld  25, 11*8(3)
0025     ld  26, 12*8(3)
0026     ld  27, 13*8(3)
0027     ld  28, 14*8(3)
0028     ld  29, 15*8(3)
0029     ld  30, 16*8(3)
0030     ld  31, 17*8(3)
0031     blr
0032 FUNC_END(load_gpr)
0033 
0034 FUNC_START(store_gpr)
0035     std 14, 0*8(3)
0036     std 15, 1*8(3)
0037     std 16, 2*8(3)
0038     std 17, 3*8(3)
0039     std 18, 4*8(3)
0040     std 19, 5*8(3)
0041     std 20, 6*8(3)
0042     std 21, 7*8(3)
0043     std 22, 8*8(3)
0044     std 23, 9*8(3)
0045     std 24, 10*8(3)
0046     std 25, 11*8(3)
0047     std 26, 12*8(3)
0048     std 27, 13*8(3)
0049     std 28, 14*8(3)
0050     std 29, 15*8(3)
0051     std 30, 16*8(3)
0052     std 31, 17*8(3)
0053     blr
0054 FUNC_END(store_gpr)
0055 
0056 /* Double Precision Float - double buf[32] */
0057 FUNC_START(store_fpr)
0058     stfd  0,  0*8(3)
0059     stfd  1,  1*8(3)
0060     stfd  2,  2*8(3)
0061     stfd  3,  3*8(3)
0062     stfd  4,  4*8(3)
0063     stfd  5,  5*8(3)
0064     stfd  6,  6*8(3)
0065     stfd  7,  7*8(3)
0066     stfd  8,  8*8(3)
0067     stfd  9,  9*8(3)
0068     stfd 10, 10*8(3)
0069     stfd 11, 11*8(3)
0070     stfd 12, 12*8(3)
0071     stfd 13, 13*8(3)
0072     stfd 14, 14*8(3)
0073     stfd 15, 15*8(3)
0074     stfd 16, 16*8(3)
0075     stfd 17, 17*8(3)
0076     stfd 18, 18*8(3)
0077     stfd 19, 19*8(3)
0078     stfd 20, 20*8(3)
0079     stfd 21, 21*8(3)
0080     stfd 22, 22*8(3)
0081     stfd 23, 23*8(3)
0082     stfd 24, 24*8(3)
0083     stfd 25, 25*8(3)
0084     stfd 26, 26*8(3)
0085     stfd 27, 27*8(3)
0086     stfd 28, 28*8(3)
0087     stfd 29, 29*8(3)
0088     stfd 30, 30*8(3)
0089     stfd 31, 31*8(3)
0090     blr
0091 FUNC_END(store_fpr)
0092 
0093 /* VMX/VSX registers - unsigned long buf[128] */
0094 FUNC_START(loadvsx)
0095     lis 4, 0
0096     LXVD2X  (0,(4),(3))
0097     addi    4, 4, 16
0098     LXVD2X  (1,(4),(3))
0099     addi    4, 4, 16
0100     LXVD2X  (2,(4),(3))
0101     addi    4, 4, 16
0102     LXVD2X  (3,(4),(3))
0103     addi    4, 4, 16
0104     LXVD2X  (4,(4),(3))
0105     addi    4, 4, 16
0106     LXVD2X  (5,(4),(3))
0107     addi    4, 4, 16
0108     LXVD2X  (6,(4),(3))
0109     addi    4, 4, 16
0110     LXVD2X  (7,(4),(3))
0111     addi    4, 4, 16
0112     LXVD2X  (8,(4),(3))
0113     addi    4, 4, 16
0114     LXVD2X  (9,(4),(3))
0115     addi    4, 4, 16
0116     LXVD2X  (10,(4),(3))
0117     addi    4, 4, 16
0118     LXVD2X  (11,(4),(3))
0119     addi    4, 4, 16
0120     LXVD2X  (12,(4),(3))
0121     addi    4, 4, 16
0122     LXVD2X  (13,(4),(3))
0123     addi    4, 4, 16
0124     LXVD2X  (14,(4),(3))
0125     addi    4, 4, 16
0126     LXVD2X  (15,(4),(3))
0127     addi    4, 4, 16
0128     LXVD2X  (16,(4),(3))
0129     addi    4, 4, 16
0130     LXVD2X  (17,(4),(3))
0131     addi    4, 4, 16
0132     LXVD2X  (18,(4),(3))
0133     addi    4, 4, 16
0134     LXVD2X  (19,(4),(3))
0135     addi    4, 4, 16
0136     LXVD2X  (20,(4),(3))
0137     addi    4, 4, 16
0138     LXVD2X  (21,(4),(3))
0139     addi    4, 4, 16
0140     LXVD2X  (22,(4),(3))
0141     addi    4, 4, 16
0142     LXVD2X  (23,(4),(3))
0143     addi    4, 4, 16
0144     LXVD2X  (24,(4),(3))
0145     addi    4, 4, 16
0146     LXVD2X  (25,(4),(3))
0147     addi    4, 4, 16
0148     LXVD2X  (26,(4),(3))
0149     addi    4, 4, 16
0150     LXVD2X  (27,(4),(3))
0151     addi    4, 4, 16
0152     LXVD2X  (28,(4),(3))
0153     addi    4, 4, 16
0154     LXVD2X  (29,(4),(3))
0155     addi    4, 4, 16
0156     LXVD2X  (30,(4),(3))
0157     addi    4, 4, 16
0158     LXVD2X  (31,(4),(3))
0159     addi    4, 4, 16
0160     LXVD2X  (32,(4),(3))
0161     addi    4, 4, 16
0162     LXVD2X  (33,(4),(3))
0163     addi    4, 4, 16
0164     LXVD2X  (34,(4),(3))
0165     addi    4, 4, 16
0166     LXVD2X  (35,(4),(3))
0167     addi    4, 4, 16
0168     LXVD2X  (36,(4),(3))
0169     addi    4, 4, 16
0170     LXVD2X  (37,(4),(3))
0171     addi    4, 4, 16
0172     LXVD2X  (38,(4),(3))
0173     addi    4, 4, 16
0174     LXVD2X  (39,(4),(3))
0175     addi    4, 4, 16
0176     LXVD2X  (40,(4),(3))
0177     addi    4, 4, 16
0178     LXVD2X  (41,(4),(3))
0179     addi    4, 4, 16
0180     LXVD2X  (42,(4),(3))
0181     addi    4, 4, 16
0182     LXVD2X  (43,(4),(3))
0183     addi    4, 4, 16
0184     LXVD2X  (44,(4),(3))
0185     addi    4, 4, 16
0186     LXVD2X  (45,(4),(3))
0187     addi    4, 4, 16
0188     LXVD2X  (46,(4),(3))
0189     addi    4, 4, 16
0190     LXVD2X  (47,(4),(3))
0191     addi    4, 4, 16
0192     LXVD2X  (48,(4),(3))
0193     addi    4, 4, 16
0194     LXVD2X  (49,(4),(3))
0195     addi    4, 4, 16
0196     LXVD2X  (50,(4),(3))
0197     addi    4, 4, 16
0198     LXVD2X  (51,(4),(3))
0199     addi    4, 4, 16
0200     LXVD2X  (52,(4),(3))
0201     addi    4, 4, 16
0202     LXVD2X  (53,(4),(3))
0203     addi    4, 4, 16
0204     LXVD2X  (54,(4),(3))
0205     addi    4, 4, 16
0206     LXVD2X  (55,(4),(3))
0207     addi    4, 4, 16
0208     LXVD2X  (56,(4),(3))
0209     addi    4, 4, 16
0210     LXVD2X  (57,(4),(3))
0211     addi    4, 4, 16
0212     LXVD2X  (58,(4),(3))
0213     addi    4, 4, 16
0214     LXVD2X  (59,(4),(3))
0215     addi    4, 4, 16
0216     LXVD2X  (60,(4),(3))
0217     addi    4, 4, 16
0218     LXVD2X  (61,(4),(3))
0219     addi    4, 4, 16
0220     LXVD2X  (62,(4),(3))
0221     addi    4, 4, 16
0222     LXVD2X  (63,(4),(3))
0223     blr
0224 FUNC_END(loadvsx)
0225 
0226 FUNC_START(storevsx)
0227     lis 4, 0
0228     STXVD2X (0,(4),(3))
0229     addi    4, 4, 16
0230     STXVD2X (1,(4),(3))
0231     addi    4, 4, 16
0232     STXVD2X (2,(4),(3))
0233     addi    4, 4, 16
0234     STXVD2X (3,(4),(3))
0235     addi    4, 4, 16
0236     STXVD2X (4,(4),(3))
0237     addi    4, 4, 16
0238     STXVD2X (5,(4),(3))
0239     addi    4, 4, 16
0240     STXVD2X (6,(4),(3))
0241     addi    4, 4, 16
0242     STXVD2X (7,(4),(3))
0243     addi    4, 4, 16
0244     STXVD2X (8,(4),(3))
0245     addi    4, 4, 16
0246     STXVD2X (9,(4),(3))
0247     addi    4, 4, 16
0248     STXVD2X (10,(4),(3))
0249     addi    4, 4, 16
0250     STXVD2X (11,(4),(3))
0251     addi    4, 4, 16
0252     STXVD2X (12,(4),(3))
0253     addi    4, 4, 16
0254     STXVD2X (13,(4),(3))
0255     addi    4, 4, 16
0256     STXVD2X (14,(4),(3))
0257     addi    4, 4, 16
0258     STXVD2X (15,(4),(3))
0259     addi    4, 4, 16
0260     STXVD2X (16,(4),(3))
0261     addi    4, 4, 16
0262     STXVD2X (17,(4),(3))
0263     addi    4, 4, 16
0264     STXVD2X (18,(4),(3))
0265     addi    4, 4, 16
0266     STXVD2X (19,(4),(3))
0267     addi    4, 4, 16
0268     STXVD2X (20,(4),(3))
0269     addi    4, 4, 16
0270     STXVD2X (21,(4),(3))
0271     addi    4, 4, 16
0272     STXVD2X (22,(4),(3))
0273     addi    4, 4, 16
0274     STXVD2X (23,(4),(3))
0275     addi    4, 4, 16
0276     STXVD2X (24,(4),(3))
0277     addi    4, 4, 16
0278     STXVD2X (25,(4),(3))
0279     addi    4, 4, 16
0280     STXVD2X (26,(4),(3))
0281     addi    4, 4, 16
0282     STXVD2X (27,(4),(3))
0283     addi    4, 4, 16
0284     STXVD2X (28,(4),(3))
0285     addi    4, 4, 16
0286     STXVD2X (29,(4),(3))
0287     addi    4, 4, 16
0288     STXVD2X (30,(4),(3))
0289     addi    4, 4, 16
0290     STXVD2X (31,(4),(3))
0291     addi    4, 4, 16
0292     STXVD2X (32,(4),(3))
0293     addi    4, 4, 16
0294     STXVD2X (33,(4),(3))
0295     addi    4, 4, 16
0296     STXVD2X (34,(4),(3))
0297     addi    4, 4, 16
0298     STXVD2X (35,(4),(3))
0299     addi    4, 4, 16
0300     STXVD2X (36,(4),(3))
0301     addi    4, 4, 16
0302     STXVD2X (37,(4),(3))
0303     addi    4, 4, 16
0304     STXVD2X (38,(4),(3))
0305     addi    4, 4, 16
0306     STXVD2X (39,(4),(3))
0307     addi    4, 4, 16
0308     STXVD2X (40,(4),(3))
0309     addi    4, 4, 16
0310     STXVD2X (41,(4),(3))
0311     addi    4, 4, 16
0312     STXVD2X (42,(4),(3))
0313     addi    4, 4, 16
0314     STXVD2X (43,(4),(3))
0315     addi    4, 4, 16
0316     STXVD2X (44,(4),(3))
0317     addi    4, 4, 16
0318     STXVD2X (45,(4),(3))
0319     addi    4, 4, 16
0320     STXVD2X (46,(4),(3))
0321     addi    4, 4, 16
0322     STXVD2X (47,(4),(3))
0323     addi    4, 4, 16
0324     STXVD2X (48,(4),(3))
0325     addi    4, 4, 16
0326     STXVD2X (49,(4),(3))
0327     addi    4, 4, 16
0328     STXVD2X (50,(4),(3))
0329     addi    4, 4, 16
0330     STXVD2X (51,(4),(3))
0331     addi    4, 4, 16
0332     STXVD2X (52,(4),(3))
0333     addi    4, 4, 16
0334     STXVD2X (53,(4),(3))
0335     addi    4, 4, 16
0336     STXVD2X (54,(4),(3))
0337     addi    4, 4, 16
0338     STXVD2X (55,(4),(3))
0339     addi    4, 4, 16
0340     STXVD2X (56,(4),(3))
0341     addi    4, 4, 16
0342     STXVD2X (57,(4),(3))
0343     addi    4, 4, 16
0344     STXVD2X (58,(4),(3))
0345     addi    4, 4, 16
0346     STXVD2X (59,(4),(3))
0347     addi    4, 4, 16
0348     STXVD2X (60,(4),(3))
0349     addi    4, 4, 16
0350     STXVD2X (61,(4),(3))
0351     addi    4, 4, 16
0352     STXVD2X (62,(4),(3))
0353     addi    4, 4, 16
0354     STXVD2X (63,(4),(3))
0355     blr
0356 FUNC_END(storevsx)