blob: c6cb87755878349b0da4f0b764a097d97b704ab4 [file] [log] [blame]
Philip Reames80e40952019-02-13 17:30:03 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
Matthias Braun6b898be2017-08-02 00:28:10 +00002; RUN: llc < %s -mtriple=x86_64-- -verify-machineinstrs | FileCheck %s
3; RUN: llc < %s -mtriple=x86_64-- -mattr=slow-incdec -verify-machineinstrs | FileCheck %s --check-prefix SLOW_INC
Evan Chenge62288f2009-07-30 08:33:02 +00004
5; rdar://7103704
6
Nikita Popov2f448bf2022-06-22 14:33:12 +02007define void @sub1(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +00008; CHECK-LABEL: sub1:
Philip Reames80e40952019-02-13 17:30:03 +00009; CHECK: # %bb.0: # %entry
10; CHECK-NEXT: lock subl %esi, (%rdi)
11; CHECK-NEXT: retq
12;
13; SLOW_INC-LABEL: sub1:
14; SLOW_INC: # %bb.0: # %entry
15; SLOW_INC-NEXT: lock subl %esi, (%rdi)
16; SLOW_INC-NEXT: retq
17entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +020018 %0 = atomicrmw sub ptr %p, i32 %v monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +000019 ret void
Evan Chenge62288f2009-07-30 08:33:02 +000020}
21
Nikita Popov2f448bf2022-06-22 14:33:12 +020022define void @inc4(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +000023; CHECK-LABEL: inc4:
Philip Reames80e40952019-02-13 17:30:03 +000024; CHECK: # %bb.0: # %entry
25; CHECK-NEXT: lock incq (%rdi)
26; CHECK-NEXT: retq
27;
Robin Morisset6f3d04e2014-10-08 23:16:23 +000028; SLOW_INC-LABEL: inc4:
Philip Reames80e40952019-02-13 17:30:03 +000029; SLOW_INC: # %bb.0: # %entry
30; SLOW_INC-NEXT: lock addq $1, (%rdi)
31; SLOW_INC-NEXT: retq
32entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +020033 %0 = atomicrmw add ptr %p, i64 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +000034 ret void
Evan Chenge62288f2009-07-30 08:33:02 +000035}
36
Nikita Popov2f448bf2022-06-22 14:33:12 +020037define void @add8(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +000038; CHECK-LABEL: add8:
Philip Reames80e40952019-02-13 17:30:03 +000039; CHECK: # %bb.0: # %entry
40; CHECK-NEXT: lock addq $2, (%rdi)
41; CHECK-NEXT: retq
42;
43; SLOW_INC-LABEL: add8:
44; SLOW_INC: # %bb.0: # %entry
45; SLOW_INC-NEXT: lock addq $2, (%rdi)
46; SLOW_INC-NEXT: retq
47entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +020048 %0 = atomicrmw add ptr %p, i64 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +000049 ret void
Evan Chenge62288f2009-07-30 08:33:02 +000050}
51
Nikita Popov2f448bf2022-06-22 14:33:12 +020052define void @add4(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +000053; CHECK-LABEL: add4:
Philip Reames80e40952019-02-13 17:30:03 +000054; CHECK: # %bb.0: # %entry
55; CHECK-NEXT: movslq %esi, %rax
56; CHECK-NEXT: lock addq %rax, (%rdi)
57; CHECK-NEXT: retq
58;
59; SLOW_INC-LABEL: add4:
60; SLOW_INC: # %bb.0: # %entry
61; SLOW_INC-NEXT: movslq %esi, %rax
62; SLOW_INC-NEXT: lock addq %rax, (%rdi)
63; SLOW_INC-NEXT: retq
64entry:
Eli Friedmana486cb92011-09-26 23:15:09 +000065 %0 = sext i32 %v to i64 ; <i64> [#uses=1]
Nikita Popov2f448bf2022-06-22 14:33:12 +020066 %1 = atomicrmw add ptr %p, i64 %0 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +000067 ret void
Evan Chenge62288f2009-07-30 08:33:02 +000068}
69
Nikita Popov2f448bf2022-06-22 14:33:12 +020070define void @inc3(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +000071; CHECK-LABEL: inc3:
Philip Reames80e40952019-02-13 17:30:03 +000072; CHECK: # %bb.0: # %entry
73; CHECK-NEXT: lock incb (%rdi)
74; CHECK-NEXT: retq
75;
Robin Morisset6f3d04e2014-10-08 23:16:23 +000076; SLOW_INC-LABEL: inc3:
Philip Reames80e40952019-02-13 17:30:03 +000077; SLOW_INC: # %bb.0: # %entry
78; SLOW_INC-NEXT: lock addb $1, (%rdi)
79; SLOW_INC-NEXT: retq
80entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +020081 %0 = atomicrmw add ptr %p, i8 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +000082 ret void
Evan Chenge62288f2009-07-30 08:33:02 +000083}
84
Nikita Popov2f448bf2022-06-22 14:33:12 +020085define void @add7(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +000086; CHECK-LABEL: add7:
Philip Reames80e40952019-02-13 17:30:03 +000087; CHECK: # %bb.0: # %entry
88; CHECK-NEXT: lock addb $2, (%rdi)
89; CHECK-NEXT: retq
90;
91; SLOW_INC-LABEL: add7:
92; SLOW_INC: # %bb.0: # %entry
93; SLOW_INC-NEXT: lock addb $2, (%rdi)
94; SLOW_INC-NEXT: retq
95entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +020096 %0 = atomicrmw add ptr %p, i8 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +000097 ret void
Evan Chenge62288f2009-07-30 08:33:02 +000098}
99
Nikita Popov2f448bf2022-06-22 14:33:12 +0200100define void @add3(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000101; CHECK-LABEL: add3:
Philip Reames80e40952019-02-13 17:30:03 +0000102; CHECK: # %bb.0: # %entry
103; CHECK-NEXT: lock addb %sil, (%rdi)
104; CHECK-NEXT: retq
105;
106; SLOW_INC-LABEL: add3:
107; SLOW_INC: # %bb.0: # %entry
108; SLOW_INC-NEXT: lock addb %sil, (%rdi)
109; SLOW_INC-NEXT: retq
110entry:
Eli Friedmana486cb92011-09-26 23:15:09 +0000111 %0 = trunc i32 %v to i8 ; <i8> [#uses=1]
Nikita Popov2f448bf2022-06-22 14:33:12 +0200112 %1 = atomicrmw add ptr %p, i8 %0 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000113 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000114}
115
Nikita Popov2f448bf2022-06-22 14:33:12 +0200116define void @inc2(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000117; CHECK-LABEL: inc2:
Philip Reames80e40952019-02-13 17:30:03 +0000118; CHECK: # %bb.0: # %entry
119; CHECK-NEXT: lock incw (%rdi)
120; CHECK-NEXT: retq
121;
Robin Morisset6f3d04e2014-10-08 23:16:23 +0000122; SLOW_INC-LABEL: inc2:
Philip Reames80e40952019-02-13 17:30:03 +0000123; SLOW_INC: # %bb.0: # %entry
124; SLOW_INC-NEXT: lock addw $1, (%rdi)
125; SLOW_INC-NEXT: retq
126entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200127 %0 = atomicrmw add ptr %p, i16 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000128 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000129}
130
Nikita Popov2f448bf2022-06-22 14:33:12 +0200131define void @add6(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000132; CHECK-LABEL: add6:
Philip Reames80e40952019-02-13 17:30:03 +0000133; CHECK: # %bb.0: # %entry
134; CHECK-NEXT: lock addw $2, (%rdi)
135; CHECK-NEXT: retq
136;
137; SLOW_INC-LABEL: add6:
138; SLOW_INC: # %bb.0: # %entry
139; SLOW_INC-NEXT: lock addw $2, (%rdi)
140; SLOW_INC-NEXT: retq
141entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200142 %0 = atomicrmw add ptr %p, i16 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000143 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000144}
145
Nikita Popov2f448bf2022-06-22 14:33:12 +0200146define void @add2(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000147; CHECK-LABEL: add2:
Philip Reames80e40952019-02-13 17:30:03 +0000148; CHECK: # %bb.0: # %entry
149; CHECK-NEXT: lock addw %si, (%rdi)
150; CHECK-NEXT: retq
151;
152; SLOW_INC-LABEL: add2:
153; SLOW_INC: # %bb.0: # %entry
154; SLOW_INC-NEXT: lock addw %si, (%rdi)
155; SLOW_INC-NEXT: retq
156entry:
Evan Chenge62288f2009-07-30 08:33:02 +0000157 %0 = trunc i32 %v to i16 ; <i16> [#uses=1]
Nikita Popov2f448bf2022-06-22 14:33:12 +0200158 %1 = atomicrmw add ptr %p, i16 %0 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000159 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000160}
161
Nikita Popov2f448bf2022-06-22 14:33:12 +0200162define void @inc1(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000163; CHECK-LABEL: inc1:
Philip Reames80e40952019-02-13 17:30:03 +0000164; CHECK: # %bb.0: # %entry
165; CHECK-NEXT: lock incl (%rdi)
166; CHECK-NEXT: retq
167;
Robin Morisset6f3d04e2014-10-08 23:16:23 +0000168; SLOW_INC-LABEL: inc1:
Philip Reames80e40952019-02-13 17:30:03 +0000169; SLOW_INC: # %bb.0: # %entry
170; SLOW_INC-NEXT: lock addl $1, (%rdi)
171; SLOW_INC-NEXT: retq
172entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200173 %0 = atomicrmw add ptr %p, i32 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000174 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000175}
176
Nikita Popov2f448bf2022-06-22 14:33:12 +0200177define void @add5(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000178; CHECK-LABEL: add5:
Philip Reames80e40952019-02-13 17:30:03 +0000179; CHECK: # %bb.0: # %entry
180; CHECK-NEXT: lock addl $2, (%rdi)
181; CHECK-NEXT: retq
182;
183; SLOW_INC-LABEL: add5:
184; SLOW_INC: # %bb.0: # %entry
185; SLOW_INC-NEXT: lock addl $2, (%rdi)
186; SLOW_INC-NEXT: retq
187entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200188 %0 = atomicrmw add ptr %p, i32 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000189 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000190}
191
Nikita Popov2f448bf2022-06-22 14:33:12 +0200192define void @add1(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000193; CHECK-LABEL: add1:
Philip Reames80e40952019-02-13 17:30:03 +0000194; CHECK: # %bb.0: # %entry
195; CHECK-NEXT: lock addl %esi, (%rdi)
196; CHECK-NEXT: retq
197;
198; SLOW_INC-LABEL: add1:
199; SLOW_INC: # %bb.0: # %entry
200; SLOW_INC-NEXT: lock addl %esi, (%rdi)
201; SLOW_INC-NEXT: retq
202entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200203 %0 = atomicrmw add ptr %p, i32 %v monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000204 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000205}
206
Nikita Popov2f448bf2022-06-22 14:33:12 +0200207define void @dec4(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000208; CHECK-LABEL: dec4:
Philip Reames80e40952019-02-13 17:30:03 +0000209; CHECK: # %bb.0: # %entry
210; CHECK-NEXT: lock decq (%rdi)
211; CHECK-NEXT: retq
212;
Robin Morisset6f3d04e2014-10-08 23:16:23 +0000213; SLOW_INC-LABEL: dec4:
Philip Reames80e40952019-02-13 17:30:03 +0000214; SLOW_INC: # %bb.0: # %entry
215; SLOW_INC-NEXT: lock subq $1, (%rdi)
216; SLOW_INC-NEXT: retq
217entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200218 %0 = atomicrmw sub ptr %p, i64 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000219 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000220}
221
Nikita Popov2f448bf2022-06-22 14:33:12 +0200222define void @sub8(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000223; CHECK-LABEL: sub8:
Philip Reames80e40952019-02-13 17:30:03 +0000224; CHECK: # %bb.0: # %entry
225; CHECK-NEXT: lock subq $2, (%rdi)
226; CHECK-NEXT: retq
227;
228; SLOW_INC-LABEL: sub8:
229; SLOW_INC: # %bb.0: # %entry
230; SLOW_INC-NEXT: lock subq $2, (%rdi)
231; SLOW_INC-NEXT: retq
232entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200233 %0 = atomicrmw sub ptr %p, i64 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000234 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000235}
236
Nikita Popov2f448bf2022-06-22 14:33:12 +0200237define void @sub4(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000238; CHECK-LABEL: sub4:
Philip Reames80e40952019-02-13 17:30:03 +0000239; CHECK: # %bb.0: # %entry
240; CHECK-NEXT: movslq %esi, %rax
241; CHECK-NEXT: lock subq %rax, (%rdi)
242; CHECK-NEXT: retq
243;
244; SLOW_INC-LABEL: sub4:
245; SLOW_INC: # %bb.0: # %entry
246; SLOW_INC-NEXT: movslq %esi, %rax
247; SLOW_INC-NEXT: lock subq %rax, (%rdi)
248; SLOW_INC-NEXT: retq
249entry:
Evan Chenge62288f2009-07-30 08:33:02 +0000250 %0 = sext i32 %v to i64 ; <i64> [#uses=1]
Nikita Popov2f448bf2022-06-22 14:33:12 +0200251 %1 = atomicrmw sub ptr %p, i64 %0 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000252 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000253}
254
Nikita Popov2f448bf2022-06-22 14:33:12 +0200255define void @dec3(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000256; CHECK-LABEL: dec3:
Philip Reames80e40952019-02-13 17:30:03 +0000257; CHECK: # %bb.0: # %entry
258; CHECK-NEXT: lock decb (%rdi)
259; CHECK-NEXT: retq
260;
Robin Morisset6f3d04e2014-10-08 23:16:23 +0000261; SLOW_INC-LABEL: dec3:
Philip Reames80e40952019-02-13 17:30:03 +0000262; SLOW_INC: # %bb.0: # %entry
263; SLOW_INC-NEXT: lock subb $1, (%rdi)
264; SLOW_INC-NEXT: retq
265entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200266 %0 = atomicrmw sub ptr %p, i8 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000267 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000268}
269
Nikita Popov2f448bf2022-06-22 14:33:12 +0200270define void @sub7(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000271; CHECK-LABEL: sub7:
Philip Reames80e40952019-02-13 17:30:03 +0000272; CHECK: # %bb.0: # %entry
273; CHECK-NEXT: lock subb $2, (%rdi)
274; CHECK-NEXT: retq
275;
276; SLOW_INC-LABEL: sub7:
277; SLOW_INC: # %bb.0: # %entry
278; SLOW_INC-NEXT: lock subb $2, (%rdi)
279; SLOW_INC-NEXT: retq
280entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200281 %0 = atomicrmw sub ptr %p, i8 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000282 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000283}
284
Nikita Popov2f448bf2022-06-22 14:33:12 +0200285define void @sub3(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000286; CHECK-LABEL: sub3:
Philip Reames80e40952019-02-13 17:30:03 +0000287; CHECK: # %bb.0: # %entry
288; CHECK-NEXT: lock subb %sil, (%rdi)
289; CHECK-NEXT: retq
290;
291; SLOW_INC-LABEL: sub3:
292; SLOW_INC: # %bb.0: # %entry
293; SLOW_INC-NEXT: lock subb %sil, (%rdi)
294; SLOW_INC-NEXT: retq
295entry:
Evan Chenge62288f2009-07-30 08:33:02 +0000296 %0 = trunc i32 %v to i8 ; <i8> [#uses=1]
Nikita Popov2f448bf2022-06-22 14:33:12 +0200297 %1 = atomicrmw sub ptr %p, i8 %0 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000298 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000299}
300
Nikita Popov2f448bf2022-06-22 14:33:12 +0200301define void @dec2(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000302; CHECK-LABEL: dec2:
Philip Reames80e40952019-02-13 17:30:03 +0000303; CHECK: # %bb.0: # %entry
304; CHECK-NEXT: lock decw (%rdi)
305; CHECK-NEXT: retq
306;
Robin Morisset6f3d04e2014-10-08 23:16:23 +0000307; SLOW_INC-LABEL: dec2:
Philip Reames80e40952019-02-13 17:30:03 +0000308; SLOW_INC: # %bb.0: # %entry
309; SLOW_INC-NEXT: lock subw $1, (%rdi)
310; SLOW_INC-NEXT: retq
311entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200312 %0 = atomicrmw sub ptr %p, i16 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000313 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000314}
315
Nikita Popov2f448bf2022-06-22 14:33:12 +0200316define void @sub6(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000317; CHECK-LABEL: sub6:
Philip Reames80e40952019-02-13 17:30:03 +0000318; CHECK: # %bb.0: # %entry
319; CHECK-NEXT: lock subw $2, (%rdi)
320; CHECK-NEXT: retq
321;
322; SLOW_INC-LABEL: sub6:
323; SLOW_INC: # %bb.0: # %entry
324; SLOW_INC-NEXT: lock subw $2, (%rdi)
325; SLOW_INC-NEXT: retq
326entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200327 %0 = atomicrmw sub ptr %p, i16 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000328 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000329}
330
Nikita Popov2f448bf2022-06-22 14:33:12 +0200331define void @sub2(ptr nocapture %p, i32 %v) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000332; CHECK-LABEL: sub2:
Philip Reames80e40952019-02-13 17:30:03 +0000333; CHECK: # %bb.0: # %entry
334; CHECK-NEXT: lock subw %si, (%rdi)
335; CHECK-NEXT: retq
336;
337; SLOW_INC-LABEL: sub2:
338; SLOW_INC: # %bb.0: # %entry
339; SLOW_INC-NEXT: lock subw %si, (%rdi)
340; SLOW_INC-NEXT: retq
341entry:
Evan Chenge62288f2009-07-30 08:33:02 +0000342 %0 = trunc i32 %v to i16 ; <i16> [#uses=1]
Nikita Popov2f448bf2022-06-22 14:33:12 +0200343 %1 = atomicrmw sub ptr %p, i16 %0 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000344 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000345}
346
Nikita Popov2f448bf2022-06-22 14:33:12 +0200347define void @dec1(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000348; CHECK-LABEL: dec1:
Philip Reames80e40952019-02-13 17:30:03 +0000349; CHECK: # %bb.0: # %entry
350; CHECK-NEXT: lock decl (%rdi)
351; CHECK-NEXT: retq
352;
Robin Morisset6f3d04e2014-10-08 23:16:23 +0000353; SLOW_INC-LABEL: dec1:
Philip Reames80e40952019-02-13 17:30:03 +0000354; SLOW_INC: # %bb.0: # %entry
355; SLOW_INC-NEXT: lock subl $1, (%rdi)
356; SLOW_INC-NEXT: retq
357entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200358 %0 = atomicrmw sub ptr %p, i32 1 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000359 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000360}
361
Nikita Popov2f448bf2022-06-22 14:33:12 +0200362define void @sub5(ptr nocapture %p) nounwind ssp {
Stephen Lind24ab202013-07-14 06:24:09 +0000363; CHECK-LABEL: sub5:
Philip Reames80e40952019-02-13 17:30:03 +0000364; CHECK: # %bb.0: # %entry
365; CHECK-NEXT: lock subl $2, (%rdi)
366; CHECK-NEXT: retq
367;
368; SLOW_INC-LABEL: sub5:
369; SLOW_INC: # %bb.0: # %entry
370; SLOW_INC-NEXT: lock subl $2, (%rdi)
371; SLOW_INC-NEXT: retq
372entry:
Nikita Popov2f448bf2022-06-22 14:33:12 +0200373 %0 = atomicrmw sub ptr %p, i32 2 monotonic
Eli Friedmana486cb92011-09-26 23:15:09 +0000374 ret void
Evan Chenge62288f2009-07-30 08:33:02 +0000375}