PIPS
terasm.c
Go to the documentation of this file.
1
#define _OP(a,b) a##b
2
#define OP(a,b) _OP(a,b)
3
#define TYPE int
4
#define SUFF i
5
6
TYPE
OP
(
ref
,
SUFF
)(
TYPE
*ptr,
int
index)
7
{
8
return
*(ptr+index);
9
}
10
11
TYPE
OP
(add,
SUFF
)(
TYPE
lhs,
TYPE
rhs0,
TYPE
rhs1)
12
{
13
return
lhs=rhs0+rhs1;
14
}
15
TYPE
OP
(addr,
SUFF
)(
TYPE
lhs,
TYPE
*rhs)
16
{
17
return
lhs=lhs+*rhs;
18
}
19
TYPE
OP
(sub,
SUFF
)(
TYPE
lhs,
TYPE
rhs0,
TYPE
rhs1)
20
{
21
return
lhs=rhs0-rhs1;
22
}
23
TYPE
OP
(subr,
SUFF
)(
TYPE
lhs,
TYPE
*rhs)
24
{
25
return
lhs=lhs-*rhs;
26
}
27
TYPE
OP
(lshift,
SUFF
)(
TYPE
lhs,
TYPE
rhs)
28
{
29
return
lhs=lhs<<rhs;
30
}
31
TYPE
OP
(rshift,
SUFF
)(
TYPE
lhs,
TYPE
rhs)
32
{
33
return
lhs=lhs>>rhs;
34
}
35
TYPE
OP
(prshift,
SUFF
)(
TYPE
*lhs,
TYPE
rhs)
36
{
37
return
*lhs=*lhs>>rhs;
38
}
39
TYPE
OP
(mul,
SUFF
)(
TYPE
lhs,
TYPE
rhs)
40
{
41
return
lhs=lhs*rhs;
42
}
43
TYPE
OP
(div,
SUFF
)(
TYPE
lhs,
TYPE
rhs)
44
{
45
return
lhs=lhs/rhs;
46
}
47
TYPE
OP
(mulr,
SUFF
)(
TYPE
lhs,
TYPE
*rhs)
48
{
49
return
lhs=lhs**rhs;
50
}
51
TYPE
OP
(
set
,
SUFF
)(
TYPE
lhs,
TYPE
rhs)
52
{
53
return
lhs=rhs;
54
}
55
TYPE
OP
(pset,
SUFF
)(
TYPE
*lhs,
TYPE
rhs)
56
{
57
return
*lhs=rhs;
58
}
59
TYPE
OP
(setp,
SUFF
)(
TYPE
lhs,
TYPE
*rhs)
60
{
61
return
lhs=*rhs;
62
}
63
TYPE
OP
(psetp,
SUFF
)(
TYPE
*lhs,
TYPE
*rhs)
64
{
65
return
*lhs=*rhs;
66
}
67
TYPE
*
OP
(ppsetpp,
SUFF
)(
TYPE
*lhs,
TYPE
*rhs)
68
{
69
return
lhs=rhs;
70
}
71
TYPE
*
OP
(padd,
SUFF
)(
TYPE
*lhs,
TYPE
*rhs,
int
val)
72
{
73
return
lhs=rhs+val;
74
}
75
TYPE
*
OP
(psub,
SUFF
)(
TYPE
*lhs,
int
rhs)
76
{
77
return
lhs=lhs-rhs;
78
}
79
ref
static reference ref
Current stmt (an integer)
Definition:
adg_read_paf.c:163
_set_chunk
FI: I do not understand why the type is duplicated at the set level.
Definition:
set.c:59
OP
#define OP(a, b)
Definition:
terasm.c:2
TYPE
#define TYPE
Definition:
terasm.c:3
SUFF
#define SUFF
Definition:
terasm.c:4
pips
src
Passes
pyps
drivers
terapyps
terasm.c
Generated on Thu Sep 26 2024 22:11:50 for PIPS by
1.9.1