aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/linear/bug-assign-op0.c
blob: 0cabc6222b8a28a4de7a017785c182711534fcb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
int asr(int s)
{
	s >>= 11U;
	return s;
}

unsigned int lsr(unsigned int u)
{
	u >>= 11;
	return u;
}

int divr(int s, unsigned long u)
{
	extern int use(int, unsigned);
	int t = s;
	s = s / u;
	u = u / t;
	return use(s, u);
}

int sdivul(int s, unsigned long u)
{
	s /= u;			// divu
	return s;
}

unsigned int udivsl(unsigned int u, long s)
{
	u /= s;			// divs
	return u;
}

int uldivs(int s, unsigned long u)
{
	u /= s;			// divu
	return u;
}

unsigned int sldivu(unsigned int u, long s)
{
	s /= u;			// divs
	return s;
}

/*
 * check-name: bug-assign-op0
 * check-command: test-linearize -Wno-decl $file
 * check-known-to-fail
 *
 * check-output-start
asr:
.L0:
	<entry-point>
	asr.32      %r2 <- %arg1, $11
	ret.32      %r2


lsr:
.L2:
	<entry-point>
	lsr.32      %r6 <- %arg1, $11
	ret.32      %r6


divr:
.L4:
	<entry-point>
	sext.64     %r11 <- (32) %arg1
	divu.64     %r13 <- %r11, %arg2
	trunc.32    %r14 <- (64) %r13
	divu.64     %r18 <- %arg2, %r11
	trunc.32    %r21 <- (64) %r18
	call.32     %r22 <- use, %r14, %r21
	ret.32      %r22


sdivul:
.L6:
	<entry-point>
	sext.64     %r26 <- (32) %arg1
	divu.64     %r27 <- %r26, %arg2
	trunc.32    %r28 <- (64) %r27
	ret.32      %r28


udivsl:
.L8:
	<entry-point>
	zext.64     %r33 <- (32) %arg1
	divs.64     %r34 <- %r33, %arg2
	trunc.32    %r35 <- (64) %r34
	ret.32      %r35


uldivs:
.L10:
	<entry-point>
	sext.64     %r39 <- (32) %arg1
	divu.64     %r41 <- %arg2, %r39
	trunc.32    %r43 <- (64) %r41
	ret.32      %r43


sldivu:
.L12:
	<entry-point>
	zext.64     %r46 <- (32) %arg1
	divs.64     %r48 <- %arg2, %r46
	trunc.32    %r50 <- (64) %r48
	ret.32      %r50


 * check-output-end
 */