xref: /llvm-project/clang/test/Headers/ms-arm64-intrin.cpp (revision 7e59223ac4b045178c287a56154113d5989572f4)
1 // REQUIRES: aarch64-registered-target
2 
3 // RUN: %clang_cc1 -triple arm64-windows -O1 \
4 // RUN: -fms-compatibility -fms-compatibility-version=17.00 \
5 // RUN: -Werror \
6 // RUN: -isystem %S/Inputs/include %s -o - -emit-llvm 2>&1 \
7 // RUN: | FileCheck %s
8 
9 #include <intrin.h>
10 
check_nop()11 void check_nop() {
12 // CHECK: "nop"
13   __nop();
14 }
15 
check_byteswap_ushort(unsigned short val)16 unsigned short check_byteswap_ushort(unsigned short val) {
17 // CHECK: call i16 @llvm.bswap.i16(i16 %val)
18   return _byteswap_ushort(val);
19 }
20 
check_byteswap_ulong(unsigned long val)21 unsigned long check_byteswap_ulong(unsigned long val) {
22 // CHECK: call i32 @llvm.bswap.i32(i32 %val)
23   return _byteswap_ulong(val);
24 }
25 
check_byteswap_uint64(unsigned __int64 val)26 unsigned __int64 check_byteswap_uint64(unsigned __int64 val) {
27 // CHECK: call i64 @llvm.bswap.i64(i64 %val)
28   return _byteswap_uint64(val);
29 }
30