@@ -313,6 +313,38 @@ define i64 @atom19(ptr %subr, i64 %val) {
313
313
ret i64 %ret
314
314
}
315
315
316
+ define i32 @atom20 (ptr %subr , i32 %val ) {
317
+ ; CHECK-LABEL: atom20(
318
+ ; CHECK: {
319
+ ; CHECK-NEXT: .reg .b32 %r<3>;
320
+ ; CHECK-NEXT: .reg .b64 %rd<2>;
321
+ ; CHECK-EMPTY:
322
+ ; CHECK-NEXT: // %bb.0:
323
+ ; CHECK-NEXT: ld.param.u64 %rd1, [atom20_param_0];
324
+ ; CHECK-NEXT: ld.param.u32 %r1, [atom20_param_1];
325
+ ; CHECK-NEXT: atom.inc.u32 %r2, [%rd1], %r1;
326
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r2;
327
+ ; CHECK-NEXT: ret;
328
+ %ret = atomicrmw uinc_wrap ptr %subr , i32 %val seq_cst
329
+ ret i32 %ret
330
+ }
331
+
332
+ define i32 @atom21 (ptr %subr , i32 %val ) {
333
+ ; CHECK-LABEL: atom21(
334
+ ; CHECK: {
335
+ ; CHECK-NEXT: .reg .b32 %r<3>;
336
+ ; CHECK-NEXT: .reg .b64 %rd<2>;
337
+ ; CHECK-EMPTY:
338
+ ; CHECK-NEXT: // %bb.0:
339
+ ; CHECK-NEXT: ld.param.u64 %rd1, [atom21_param_0];
340
+ ; CHECK-NEXT: ld.param.u32 %r1, [atom21_param_1];
341
+ ; CHECK-NEXT: atom.dec.u32 %r2, [%rd1], %r1;
342
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r2;
343
+ ; CHECK-NEXT: ret;
344
+ %ret = atomicrmw udec_wrap ptr %subr , i32 %val seq_cst
345
+ ret i32 %ret
346
+ }
347
+
316
348
declare float @llvm.nvvm.atomic.load.add.f32.p0 (ptr %addr , float %val )
317
349
318
350
; CHECK-LABEL: atomic_add_f32_generic
@@ -409,7 +441,7 @@ define half @atomicrmw_add_f16_generic(ptr %addr, half %val) {
409
441
; CHECK-NEXT: not.b32 %r2, %r9;
410
442
; CHECK-NEXT: ld.u32 %r16, [%rd1];
411
443
; CHECK-NEXT: cvt.f32.f16 %f2, %rs1;
412
- ; CHECK-NEXT: $L__BB22_1 : // %atomicrmw.start
444
+ ; CHECK-NEXT: $L__BB24_1 : // %atomicrmw.start
413
445
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
414
446
; CHECK-NEXT: shr.u32 %r10, %r16, %r1;
415
447
; CHECK-NEXT: cvt.u16.u32 %rs2, %r10;
@@ -424,7 +456,7 @@ define half @atomicrmw_add_f16_generic(ptr %addr, half %val) {
424
456
; CHECK-NEXT: atom.cas.b32 %r5, [%rd1], %r16, %r14;
425
457
; CHECK-NEXT: setp.ne.s32 %p1, %r5, %r16;
426
458
; CHECK-NEXT: mov.b32 %r16, %r5;
427
- ; CHECK-NEXT: @%p1 bra $L__BB22_1 ;
459
+ ; CHECK-NEXT: @%p1 bra $L__BB24_1 ;
428
460
; CHECK-NEXT: // %bb.2: // %atomicrmw.end
429
461
; CHECK-NEXT: shr.u32 %r15, %r5, %r1;
430
462
; CHECK-NEXT: cvt.u16.u32 %rs4, %r15;
0 commit comments