1f08c3bdfSopenharmony_ciint asr(int s)
2f08c3bdfSopenharmony_ci{
3f08c3bdfSopenharmony_ci	s >>= 11U;
4f08c3bdfSopenharmony_ci	return s;
5f08c3bdfSopenharmony_ci}
6f08c3bdfSopenharmony_ci
7f08c3bdfSopenharmony_ciunsigned int lsr(unsigned int u)
8f08c3bdfSopenharmony_ci{
9f08c3bdfSopenharmony_ci	u >>= 11;
10f08c3bdfSopenharmony_ci	return u;
11f08c3bdfSopenharmony_ci}
12f08c3bdfSopenharmony_ci
13f08c3bdfSopenharmony_ciint divr(int s, unsigned long long u)
14f08c3bdfSopenharmony_ci{
15f08c3bdfSopenharmony_ci	extern int use(int, unsigned);
16f08c3bdfSopenharmony_ci	int t = s;
17f08c3bdfSopenharmony_ci	s = s / u;
18f08c3bdfSopenharmony_ci	u = u / t;
19f08c3bdfSopenharmony_ci	return use(s, u);
20f08c3bdfSopenharmony_ci}
21f08c3bdfSopenharmony_ci
22f08c3bdfSopenharmony_ciint sdivul(int s, unsigned long long u)
23f08c3bdfSopenharmony_ci{
24f08c3bdfSopenharmony_ci	s /= u;			// divu
25f08c3bdfSopenharmony_ci	return s;
26f08c3bdfSopenharmony_ci}
27f08c3bdfSopenharmony_ci
28f08c3bdfSopenharmony_ciunsigned int udivsl(unsigned int u, long long s)
29f08c3bdfSopenharmony_ci{
30f08c3bdfSopenharmony_ci	u /= s;			// divs
31f08c3bdfSopenharmony_ci	return u;
32f08c3bdfSopenharmony_ci}
33f08c3bdfSopenharmony_ci
34f08c3bdfSopenharmony_ciint uldivs(int s, unsigned long long u)
35f08c3bdfSopenharmony_ci{
36f08c3bdfSopenharmony_ci	u /= s;			// divu
37f08c3bdfSopenharmony_ci	return u;
38f08c3bdfSopenharmony_ci}
39f08c3bdfSopenharmony_ci
40f08c3bdfSopenharmony_ciunsigned int sldivu(unsigned int u, long long s)
41f08c3bdfSopenharmony_ci{
42f08c3bdfSopenharmony_ci	s /= u;			// divs
43f08c3bdfSopenharmony_ci	return s;
44f08c3bdfSopenharmony_ci}
45f08c3bdfSopenharmony_ci
46f08c3bdfSopenharmony_ci/*
47f08c3bdfSopenharmony_ci * check-name: bug-assign-op0
48f08c3bdfSopenharmony_ci * check-command: test-linearize -Wno-decl $file
49f08c3bdfSopenharmony_ci *
50f08c3bdfSopenharmony_ci * check-output-start
51f08c3bdfSopenharmony_ciasr:
52f08c3bdfSopenharmony_ci.L0:
53f08c3bdfSopenharmony_ci	<entry-point>
54f08c3bdfSopenharmony_ci	asr.32      %r2 <- %arg1, $11
55f08c3bdfSopenharmony_ci	ret.32      %r2
56f08c3bdfSopenharmony_ci
57f08c3bdfSopenharmony_ci
58f08c3bdfSopenharmony_cilsr:
59f08c3bdfSopenharmony_ci.L2:
60f08c3bdfSopenharmony_ci	<entry-point>
61f08c3bdfSopenharmony_ci	lsr.32      %r6 <- %arg1, $11
62f08c3bdfSopenharmony_ci	ret.32      %r6
63f08c3bdfSopenharmony_ci
64f08c3bdfSopenharmony_ci
65f08c3bdfSopenharmony_cidivr:
66f08c3bdfSopenharmony_ci.L4:
67f08c3bdfSopenharmony_ci	<entry-point>
68f08c3bdfSopenharmony_ci	sext.64     %r11 <- (32) %arg1
69f08c3bdfSopenharmony_ci	divu.64     %r13 <- %r11, %arg2
70f08c3bdfSopenharmony_ci	trunc.32    %r14 <- (64) %r13
71f08c3bdfSopenharmony_ci	divu.64     %r18 <- %arg2, %r11
72f08c3bdfSopenharmony_ci	trunc.32    %r21 <- (64) %r18
73f08c3bdfSopenharmony_ci	call.32     %r22 <- use, %r14, %r21
74f08c3bdfSopenharmony_ci	ret.32      %r22
75f08c3bdfSopenharmony_ci
76f08c3bdfSopenharmony_ci
77f08c3bdfSopenharmony_cisdivul:
78f08c3bdfSopenharmony_ci.L6:
79f08c3bdfSopenharmony_ci	<entry-point>
80f08c3bdfSopenharmony_ci	sext.64     %r26 <- (32) %arg1
81f08c3bdfSopenharmony_ci	divu.64     %r27 <- %r26, %arg2
82f08c3bdfSopenharmony_ci	trunc.32    %r28 <- (64) %r27
83f08c3bdfSopenharmony_ci	ret.32      %r28
84f08c3bdfSopenharmony_ci
85f08c3bdfSopenharmony_ci
86f08c3bdfSopenharmony_ciudivsl:
87f08c3bdfSopenharmony_ci.L8:
88f08c3bdfSopenharmony_ci	<entry-point>
89f08c3bdfSopenharmony_ci	zext.64     %r33 <- (32) %arg1
90f08c3bdfSopenharmony_ci	divs.64     %r34 <- %r33, %arg2
91f08c3bdfSopenharmony_ci	trunc.32    %r35 <- (64) %r34
92f08c3bdfSopenharmony_ci	ret.32      %r35
93f08c3bdfSopenharmony_ci
94f08c3bdfSopenharmony_ci
95f08c3bdfSopenharmony_ciuldivs:
96f08c3bdfSopenharmony_ci.L10:
97f08c3bdfSopenharmony_ci	<entry-point>
98f08c3bdfSopenharmony_ci	sext.64     %r39 <- (32) %arg1
99f08c3bdfSopenharmony_ci	divu.64     %r41 <- %arg2, %r39
100f08c3bdfSopenharmony_ci	trunc.32    %r43 <- (64) %r41
101f08c3bdfSopenharmony_ci	ret.32      %r43
102f08c3bdfSopenharmony_ci
103f08c3bdfSopenharmony_ci
104f08c3bdfSopenharmony_cisldivu:
105f08c3bdfSopenharmony_ci.L12:
106f08c3bdfSopenharmony_ci	<entry-point>
107f08c3bdfSopenharmony_ci	zext.64     %r46 <- (32) %arg1
108f08c3bdfSopenharmony_ci	divs.64     %r48 <- %arg2, %r46
109f08c3bdfSopenharmony_ci	trunc.32    %r50 <- (64) %r48
110f08c3bdfSopenharmony_ci	ret.32      %r50
111f08c3bdfSopenharmony_ci
112f08c3bdfSopenharmony_ci
113f08c3bdfSopenharmony_ci * check-output-end
114f08c3bdfSopenharmony_ci */
115