From c15aeaa7b5cdf4409d034a50efb3c0d2959a3f6a Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Tue, 20 Apr 2021 04:44:21 -0400 Subject: Use *.cpp file extension for test programs (GH #1024) --- TestPrograms/test_asm_mixed.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 TestPrograms/test_asm_mixed.cpp (limited to 'TestPrograms/test_asm_mixed.cpp') diff --git a/TestPrograms/test_asm_mixed.cpp b/TestPrograms/test_asm_mixed.cpp new file mode 100644 index 00000000..03ed5795 --- /dev/null +++ b/TestPrograms/test_asm_mixed.cpp @@ -0,0 +1,31 @@ +// Most Clang cannot handle mixed asm with positional arguments, where the +// body is Intel style with no prefix and the templates are AT&T style. +// Also see https://bugs.llvm.org/show_bug.cgi?id=39895 . +#include +int main(int argc, char* argv[]) +{ + size_t ret = 1, N = 1; + asm __volatile__ + ( +#if defined(__amd64__) || defined(__x86_64__) + ".intel_syntax noprefix ;\n" + "xor rsi, rsi ;\n" + "neg %1 ;\n" + "inc %1 ;\n" + "push %1 ;\n" + "pop rax ;\n" + ".att_syntax prefix ;\n" + : "=a" (ret) : "c" (N) : "%rsi" +#else + ".intel_syntax noprefix ;\n" + "xor esi, esi ;\n" + "neg %1 ;\n" + "inc %1 ;\n" + "push %1 ;\n" + "pop eax ;\n" + ".att_syntax prefix ;\n" + : "=a" (ret) : "c" (N) : "%esi" +#endif + ); + return (int)ret; +} -- cgit v1.2.1