Albert Gutowski | fcea61c | 2016-10-10 19:40:51 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \ |
| 2 | // RUN: -triple i686--windows -emit-llvm %s -o - \ |
| 3 | // RUN: | FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-I386 |
| 4 | // RUN: %clang_cc1 -ffreestanding -fms-extensions -fms-compatibility -fms-compatibility-version=17.00 \ |
| 5 | // RUN: -triple x86_64--windows -emit-llvm %s -o - \ |
| 6 | // RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-X64 |
| 7 | |
| 8 | // intrin.h needs size_t, but -ffreestanding prevents us from getting it from |
| 9 | // stddef.h. Work around it with this typedef. |
| 10 | typedef __SIZE_TYPE__ size_t; |
| 11 | |
| 12 | #include <intrin.h> |
| 13 | |
| 14 | void test_ReadWriteBarrier() { _ReadWriteBarrier(); } |
| 15 | // CHECK-LABEL: define void @test_ReadWriteBarrier |
Konstantin Zhuravlyov | b0beb30 | 2017-07-11 22:23:37 +0000 | [diff] [blame^] | 16 | // CHECK: fence syncscope("singlethread") seq_cst |
Albert Gutowski | fcea61c | 2016-10-10 19:40:51 +0000 | [diff] [blame] | 17 | // CHECK: ret void |
| 18 | // CHECK: } |
| 19 | |
| 20 | void test_ReadBarrier() { _ReadBarrier(); } |
| 21 | // CHECK-LABEL: define void @test_ReadBarrier |
Konstantin Zhuravlyov | b0beb30 | 2017-07-11 22:23:37 +0000 | [diff] [blame^] | 22 | // CHECK: fence syncscope("singlethread") seq_cst |
Albert Gutowski | fcea61c | 2016-10-10 19:40:51 +0000 | [diff] [blame] | 23 | // CHECK: ret void |
| 24 | // CHECK: } |
| 25 | |
| 26 | void test_WriteBarrier() { _WriteBarrier(); } |
| 27 | // CHECK-LABEL: define void @test_WriteBarrier |
Konstantin Zhuravlyov | b0beb30 | 2017-07-11 22:23:37 +0000 | [diff] [blame^] | 28 | // CHECK: fence syncscope("singlethread") seq_cst |
Albert Gutowski | fcea61c | 2016-10-10 19:40:51 +0000 | [diff] [blame] | 29 | // CHECK: ret void |
| 30 | // CHECK: } |
| 31 | |
| 32 | #if defined(__x86_64__) |
| 33 | void test__faststorefence() { __faststorefence(); } |
| 34 | // CHECK-X64-LABEL: define void @test__faststorefence |
| 35 | // CHECK-X64: fence seq_cst |
| 36 | // CHECK-X64: ret void |
| 37 | // CHECK-X64: } |
| 38 | #endif |
| 39 | |