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