[PATCH] Upstream an MS inline assembly test from Mozilla's inline assembly code
Ehsan Akhgari
ehsan.akhgari at gmail.com
Thu Jul 17 04:47:06 PDT 2014
Closed by commit rL213255 (authored by @ehsan).
REPOSITORY
rL LLVM
http://reviews.llvm.org/D4508
Files:
cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c
Index: cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c
===================================================================
--- cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c
+++ cfe/trunk/test/CodeGen/mozilla-ms-inline-asm.c
@@ -0,0 +1,61 @@
+// REQUIRES: x86-registered-target
+// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -fasm-blocks -emit-llvm -o - | opt -strip -S | FileCheck %s
+
+// Some test cases for MS inline asm support from Mozilla code base.
+
+void invoke(void* that, unsigned methodIndex,
+ unsigned paramCount, void* params)
+{
+// CHECK: @invoke
+// CHECK: %5 = alloca i8*, align 4
+// CHECK: %6 = alloca i32, align 4
+// CHECK: %7 = alloca i32, align 4
+// CHECK: %8 = alloca i8*, align 4
+// CHECK: store i8* %0, i8** %5, align 4
+// CHECK: store i32 %1, i32* %6, align 4
+// CHECK: store i32 %2, i32* %7, align 4
+// CHECK: store i8* %3, i8** %8, align 4
+// CHECK: call void asm sideeffect inteldialect
+// CHECK: mov edx,dword ptr $1
+// CHECK: test edx,edx
+// CHECK: jz noparams
+// CHECK: mov eax,edx
+// CHECK: shl eax,$$3
+// CHECK: sub esp,eax
+// CHECK: mov ecx,esp
+// CHECK: push dword ptr $0
+// CHECK: call invoke_copy_to_stack
+// CHECK: noparams:
+// CHECK: mov ecx,dword ptr $2
+// CHECK: push ecx
+// CHECK: mov edx,[ecx]
+// CHECK: mov eax,dword ptr $3
+// CHECK: call dword ptr[edx+eax*$$4]
+// CHECK: mov esp,ebp
+// CHECK: pop ebp
+// CHECK: ret
+// CHECK: "=*m,*m,*m,*m,~{eax},~{ebp},~{ecx},~{edx},~{flags},~{esp},~{dirflag},~{fpsr},~{flags}"
+// CHECK: (i8** %8, i32* %7, i8** %5, i32* %6)
+// CHECK: ret void
+ __asm {
+ mov edx,paramCount
+ test edx,edx
+ jz noparams
+ mov eax,edx
+ shl eax,3
+ sub esp,eax
+ mov ecx,esp
+ push params
+ call invoke_copy_to_stack
+noparams:
+ mov ecx,that
+ push ecx
+ mov edx,[ecx]
+ mov eax,methodIndex
+ call dword ptr[edx+eax*4]
+ mov esp,ebp
+ pop ebp
+ ret
+ }
+}
+
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4508.11569.patch
Type: text/x-patch
Size: 2052 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140717/b0e67ee0/attachment.bin>
More information about the cfe-commits
mailing list