@@ -1367,3 +1367,99 @@ void swap(unsigned short* a, short b) {
13671367void swap (unsigned char * a, char b) {
13681368 unsigned char c = __sync_swap (a, b);
13691369}
1370+
1371+ // CHECK-LABEL: @_Z12lock_releasePi
1372+ // CHECK: cir.store align(4) atomic(release) {{.*}}, {{.*}} : !s32i, !cir.ptr<!s32i>
1373+
1374+ // LLVM-LABEL: @_Z12lock_releasePi
1375+ // LLVM: store atomic i32 0, ptr {{.*}} release, align 4
1376+
1377+ // OGCG-LABEL: @_Z12lock_releasePi
1378+ // OGCG: store atomic i32 0, ptr {{.*}} release, align 4
1379+ void lock_release (int * a) {
1380+ __sync_lock_release (a);
1381+ }
1382+
1383+ // CHECK-LABEL: @_Z12lock_releasePl
1384+ // CHECK: cir.store align(8) atomic(release) {{.*}}, {{.*}} : !s64i, !cir.ptr<!s64i>
1385+
1386+ // LLVM-LABEL: @_Z12lock_releasePl
1387+ // LLVM: store atomic i64 0, ptr {{.*}} release, align 8
1388+
1389+ // OGCG-LABEL: @_Z12lock_releasePl
1390+ // OGCG: store atomic i64 0, ptr {{.*}} release, align 8
1391+ void lock_release (long * a) {
1392+ __sync_lock_release (a);
1393+ }
1394+
1395+ // CHECK-LABEL: @_Z12lock_releasePs
1396+ // CHECK: cir.store align(2) atomic(release) {{.*}}, {{.*}} : !s16i, !cir.ptr<!s16i>
1397+
1398+ // LLVM-LABEL: @_Z12lock_releasePs
1399+ // LLVM: store atomic i16 0, ptr {{.*}} release, align 2
1400+
1401+ // OGCG-LABEL: @_Z12lock_releasePs
1402+ // OGCG: store atomic i16 0, ptr {{.*}} release, align 2
1403+ void lock_release (short * a) {
1404+ __sync_lock_release (a);
1405+ }
1406+
1407+ // CHECK-LABEL: @_Z12lock_releasePc
1408+ // CHECK: cir.store align(1) atomic(release) {{.*}}, {{.*}} : !s8i, !cir.ptr<!s8i>
1409+
1410+ // LLVM-LABEL: @_Z12lock_releasePc
1411+ // LLVM: store atomic i8 0, ptr {{.*}} release, align 1
1412+
1413+ // OGCG-LABEL: @_Z12lock_releasePc
1414+ // OGCG: store atomic i8 0, ptr {{.*}} release, align 1
1415+ void lock_release (char * a) {
1416+ __sync_lock_release (a);
1417+ }
1418+
1419+ // CHECK-LABEL: @_Z12lock_releasePj
1420+ // CHECK: cir.store align(4) atomic(release) {{.*}}, {{.*}} : !u32i, !cir.ptr<!u32i>
1421+
1422+ // LLVM-LABEL: @_Z12lock_releasePj
1423+ // LLVM: store atomic i32 0, ptr {{.*}} release, align 4
1424+
1425+ // OGCG-LABEL: @_Z12lock_releasePj
1426+ // OGCG: store atomic i32 0, ptr {{.*}} release, align 4
1427+ void lock_release (unsigned int * a) {
1428+ __sync_lock_release (a);
1429+ }
1430+
1431+ // CHECK-LABEL: @_Z12lock_releasePm
1432+ // CHECK: cir.store align(8) atomic(release) {{.*}}, {{.*}} : !u64i, !cir.ptr<!u64i>
1433+
1434+ // LLVM-LABEL: @_Z12lock_releasePm
1435+ // LLVM: store atomic i64 0, ptr {{.*}} release, align 8
1436+
1437+ // OGCG-LABEL: @_Z12lock_releasePm
1438+ // OGCG: store atomic i64 0, ptr {{.*}} release, align 8
1439+ void lock_release (unsigned long * a) {
1440+ __sync_lock_release (a);
1441+ }
1442+
1443+ // CHECK-LABEL: @_Z12lock_releasePt
1444+ // CHECK: cir.store align(2) atomic(release) {{.*}}, {{.*}} : !u16i, !cir.ptr<!u16i>
1445+
1446+ // LLVM-LABEL: @_Z12lock_releasePt
1447+ // LLVM: store atomic i16 0, ptr {{.*}} release, align 2
1448+
1449+ // OGCG-LABEL: @_Z12lock_releasePt
1450+ // OGCG: store atomic i16 0, ptr {{.*}} release, align 2
1451+ void lock_release (unsigned short * a) {
1452+ __sync_lock_release (a);
1453+ }
1454+
1455+ // CHECK-LABEL: @_Z12lock_releasePh
1456+ // CHECK: cir.store align(1) atomic(release) {{.*}}, {{.*}} : !u8i, !cir.ptr<!u8i>
1457+
1458+ // LLVM-LABEL: @_Z12lock_releasePh
1459+ // LLVM: store atomic i8 0, ptr {{.*}} release, align 1
1460+
1461+ // OGCG-LABEL: @_Z12lock_releasePh
1462+ // OGCG: store atomic i8 0, ptr {{.*}} release, align 1
1463+ void lock_release (unsigned char * a) {
1464+ __sync_lock_release (a);
1465+ }
0 commit comments