mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-06 01:22:41 +00:00
![Tom Tan](/assets/img/avatar_default.png)
_byteswap_* functions are are implemented in below file as normal function from libucrt.lib and declared in stdlib.h. Define them in intrin.h triggers lld error "conflicting comdat type" and "duplicate symbols" which was just added to LLD (https://reviews.llvm.org/D57324). C:\Program Files (x86)\Windows Kits\10\Source\10.0.17763.0\ucrt\stdlib\byteswap.cpp Differential Revision: https://reviews.llvm.org/D57915 llvm-svn: 353740
30 lines
775 B
C++
30 lines
775 B
C++
// REQUIRES: aarch64-registered-target
|
|
|
|
// RUN: %clang_cc1 -triple arm64-windows -O1 \
|
|
// RUN: -fms-compatibility -fms-compatibility-version=17.00 \
|
|
// RUN: -ffreestanding -fsyntax-only -Werror \
|
|
// RUN: -isystem %S/Inputs/include %s -S -o - -emit-llvm 2>&1 \
|
|
// RUN: | FileCheck %s
|
|
|
|
#include <intrin.h>
|
|
|
|
void check_nop() {
|
|
// CHECK: "nop"
|
|
__nop();
|
|
}
|
|
|
|
unsigned short check_byteswap_ushort(unsigned short val) {
|
|
// CHECK: call i16 @_byteswap_ushort(i16 %val)
|
|
return _byteswap_ushort(val);
|
|
}
|
|
|
|
unsigned long check_byteswap_ulong(unsigned long val) {
|
|
// CHECK: call i32 @_byteswap_ulong(i32 %val)
|
|
return _byteswap_ulong(val);
|
|
}
|
|
|
|
unsigned __int64 check_byteswap_uint64(unsigned __int64 val) {
|
|
// CHECK: call i64 @_byteswap_uint64(i64 %val)
|
|
return _byteswap_uint64(val);
|
|
}
|