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