40 lines
1.4 KiB
C
40 lines
1.4 KiB
C
// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
|
|
// RUN: -triple i686--windows -emit-llvm %s -o - \
|
|
// RUN: | FileCheck %s
|
|
// RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \
|
|
// RUN: -triple x86_64--windows -emit-llvm %s -o - \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-X64
|
|
|
|
// intrin.h needs size_t, but -ffreestanding prevents us from getting it from
|
|
// stddef.h. Work around it with this typedef.
|
|
typedef __SIZE_TYPE__ size_t;
|
|
|
|
#include <intrin.h>
|
|
|
|
void test_ReadWriteBarrier() { _ReadWriteBarrier(); }
|
|
// CHECK-LABEL: define dso_local void @test_ReadWriteBarrier
|
|
// CHECK: fence syncscope("singlethread") seq_cst
|
|
// CHECK: ret void
|
|
// CHECK: }
|
|
|
|
void test_ReadBarrier() { _ReadBarrier(); }
|
|
// CHECK-LABEL: define dso_local void @test_ReadBarrier
|
|
// CHECK: fence syncscope("singlethread") seq_cst
|
|
// CHECK: ret void
|
|
// CHECK: }
|
|
|
|
void test_WriteBarrier() { _WriteBarrier(); }
|
|
// CHECK-LABEL: define dso_local void @test_WriteBarrier
|
|
// CHECK: fence syncscope("singlethread") seq_cst
|
|
// CHECK: ret void
|
|
// CHECK: }
|
|
|
|
#if defined(__x86_64__)
|
|
void test__faststorefence() { __faststorefence(); }
|
|
// CHECK-X64-LABEL: define dso_local void @test__faststorefence
|
|
// CHECK-X64: fence seq_cst
|
|
// CHECK-X64: ret void
|
|
// CHECK-X64: }
|
|
#endif
|
|
|