1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Copyright 2013, Michael Ellerman, IBM Corp. |
4 | */ |
5 | |
6 | #include <ppc-asm.h> |
7 | |
8 | .text |
9 | |
10 | FUNC_START(thirty_two_instruction_loop) |
11 | cmpdi r3,0 |
12 | beqlr |
13 | addi r4,r3,1 |
14 | addi r4,r4,1 |
15 | addi r4,r4,1 |
16 | addi r4,r4,1 |
17 | addi r4,r4,1 |
18 | addi r4,r4,1 |
19 | addi r4,r4,1 |
20 | addi r4,r4,1 |
21 | addi r4,r4,1 |
22 | addi r4,r4,1 |
23 | addi r4,r4,1 |
24 | addi r4,r4,1 |
25 | addi r4,r4,1 |
26 | addi r4,r4,1 |
27 | addi r4,r4,1 |
28 | addi r4,r4,1 |
29 | addi r4,r4,1 |
30 | addi r4,r4,1 |
31 | addi r4,r4,1 |
32 | addi r4,r4,1 |
33 | addi r4,r4,1 |
34 | addi r4,r4,1 |
35 | addi r4,r4,1 |
36 | addi r4,r4,1 |
37 | addi r4,r4,1 |
38 | addi r4,r4,1 |
39 | addi r4,r4,1 |
40 | addi r4,r4,1 # 28 addi's |
41 | subi r3,r3,1 |
42 | b FUNC_NAME(thirty_two_instruction_loop) |
43 | FUNC_END(thirty_two_instruction_loop) |
44 | |
45 | FUNC_START(thirty_two_instruction_loop_with_ll_sc) |
46 | cmpdi r3,0 |
47 | beqlr |
48 | addi r5,r5,1 |
49 | addi r5,r5,1 |
50 | addi r5,r5,1 # 5 |
51 | addi r5,r5,1 |
52 | addi r5,r5,1 |
53 | addi r5,r5,1 |
54 | addi r5,r5,1 |
55 | 1: ldarx r6,0,r4 # 10 |
56 | addi r5,r5,1 |
57 | addi r5,r5,1 |
58 | addi r5,r5,1 |
59 | addi r5,r5,1 |
60 | addi r5,r5,1 # 15 |
61 | addi r5,r5,1 |
62 | addi r5,r5,1 |
63 | stdcx. r6,0,r4 |
64 | bne- 1b |
65 | addi r5,r5,1 # 20 |
66 | addi r5,r5,1 |
67 | addi r5,r5,1 |
68 | addi r5,r5,1 |
69 | addi r5,r5,1 |
70 | addi r5,r5,1 # 25 |
71 | addi r5,r5,1 |
72 | addi r5,r5,1 |
73 | addi r5,r5,1 |
74 | addi r5,r5,1 |
75 | addi r5,r5,1 # 30 |
76 | subi r3,r3,1 |
77 | b FUNC_NAME(thirty_two_instruction_loop_with_ll_sc) |
78 | FUNC_END(thirty_two_instruction_loop_with_ll_sc) |
79 | |