|  | // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \ | 
|  | // RUN:         -triple i686--windows -emit-llvm %s -o - \ | 
|  | // RUN:         | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-I386 | 
|  | // 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 | 
|  |  |