]> git.saurik.com Git - apple/xnu.git/blame - tools/cocci/c11_atomic_builtin_rewrite.cocci
xnu-7195.101.1.tar.gz
[apple/xnu.git] / tools / cocci / c11_atomic_builtin_rewrite.cocci
CommitLineData
cb323159
A
1// To apply, at the top of xnu.git:
2// $ spatch --max-width=120 --use-gitgrep --in-place --include-headers --sp-file tools/cocci/c11_atomic_builtin_rewrite.cocci
3
4@memory_order@
5identifier m =~ "(memory_order_(relaxed|consume|acquire|release|acq_rel|seq_cst)(|_smp)|__ATOMIC_(RELAXED|CONSUME|ACQUIRE|RELEASE|ACQ_REL|SEQ_CST))";
6@@
7
8m
9
10@script:ocaml os_memory_order@
11m << memory_order.m;
12new_m;
13@@
14
15new_m := make_ident (String.lowercase_ascii (Str.global_replace (Str.regexp "memory_order_\\|__ATOMIC_\\|_smp") "" m))
16
17@fence@
18identifier memory_order.m;
19identifier os_memory_order.new_m;
20@@
21
22- __c11_atomic_thread_fence(m)
23+ os_atomic_thread_fence(new_m)
24
25@load@
26expression E;
27type T;
28identifier memory_order.m;
29identifier os_memory_order.new_m;
30@@
31
32- __c11_atomic_load
33+ os_atomic_load
34 (
35(
36-((T)E)
37+E
38|
39-(T)E
40+E
41|
42E
43)
44 ,
45-m
46+new_m
47 )
48
49@inc@
50expression E;
51type T;
52identifier memory_order.m;
53identifier os_memory_order.new_m;
54@@
55
56- __c11_atomic_fetch_add
57+ os_atomic_inc_orig
58 (
59(
60-((T)E)
61+E
62|
63-(T)E
64+E
65|
66E
67)
68 ,
69-1, m
70+new_m
71 )
72
73@dec@
74expression E;
75type T;
76identifier memory_order.m;
77identifier os_memory_order.new_m;
78@@
79
80- __c11_atomic_fetch_sub
81+ os_atomic_dec_orig
82 (
83(
84-((T)E)
85+E
86|
87-(T)E
88+E
89|
90E
91)
92 ,
93-1, m
94+new_m
95 )
96
97@single_arg@
98expression E, F;
99type T;
100identifier memory_order.m;
101identifier os_memory_order.new_m;
102@@
103
104(
105- __c11_atomic_store
106+ os_atomic_store
107|
108- __c11_atomic_fetch_add
109+ os_atomic_add_orig
110|
111- __c11_atomic_fetch_sub
112+ os_atomic_sub_orig
113|
114- __c11_atomic_fetch_and
115+ os_atomic_and_orig
116|
117- __c11_atomic_fetch_or
118+ os_atomic_or_orig
119|
120- __c11_atomic_fetch_xor
121+ os_atomic_xor_orig
122)
123 (
124(
125-((T)E)
126+E
127|
128-(T)E
129+E
130|
131E
132)
133 , F,
134-m
135+new_m
136 )
137
138@cmpxcgh@
139expression E, F, G;
140type T;
141identifier memory_order.m;
142identifier os_memory_order.new_m;
143@@
144
145- __c11_atomic_compare_exchange_strong
146+ os_atomic_cmpxchgv
147 (
148(
149-((T)E)
150+E
151|
152-(T)E
153+E
154|
155E
156)
157 ,
158- &F, G, m, memory_order_relaxed
159+ F, G, &F, new_m
160 )
161
162// vim:ft=diff: