changeset 1561:24fcb78d93f6

r8714@birke: tk | 2007-09-29 23:27:16 +0200 [Issue 1539] X86 inline assembler fails to recognize when the branch address outside range <grahamc001uk@yahoo.co.uk> 2007-09-28 http://d.puremagic.com/issues/show_bug.cgi?id=1539
author thomask
date Sun, 30 Sep 2007 09:43:24 +0000
parents 36bedfa079e6
children 539ede0215a4
files nocompile/a/asm_loop_02_B.d nocompile/a/asm_loop_02_D.d run/a/asm_loop_02_A.d run/a/asm_loop_02_C.d
diffstat 4 files changed, 662 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/a/asm_loop_02_B.d	Sun Sep 30 09:43:24 2007 +0000
@@ -0,0 +1,166 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<grahamc001uk@yahoo.co.uk>
+// @date@	2007-09-28
+// @uri@	http://d.puremagic.com/issues/show_bug.cgi?id=1539
+// @desc@	[Issue 1539] X86 inline assembler fails to recognize when the branch address outside range
+
+module dstress.nocompile.a.asm_loop_02_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int count = 0;
+
+		asm{
+			mov EAX, 0;
+			mov ECX, 2;
+		Lnext:
+			inc EAX;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			loop Lnext;
+		Ldone:
+			mov count, EAX;
+		}
+
+		if(2 != count){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	static assert(0, "DSTRESS{XFAIL}: no inline x86 ASM support");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nocompile/a/asm_loop_02_D.d	Sun Sep 30 09:43:24 2007 +0000
@@ -0,0 +1,166 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<grahamc001uk@yahoo.co.uk>
+// @date@	2007-09-28
+// @uri@	http://d.puremagic.com/issues/show_bug.cgi?id=1539
+// @desc@	[Issue 1539] X86 inline assembler fails to recognize when the branch address outside range
+
+module dstress.nocompile.a.asm_loop_02_D;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int count = 0;
+
+		asm{
+			mov EAX, 0;
+			mov ECX, 2;
+		Lstart:
+			loop Lnext;
+			jmp Ldone;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+		Lnext:
+			inc EAX;
+			jmp Lstart;
+		Ldone:
+			mov count, EAX;
+		}
+
+		if(1 != count){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	static assert(0, "DSTRESS{XFAIL}: no inline x86 ASM support");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_loop_02_A.d	Sun Sep 30 09:43:24 2007 +0000
@@ -0,0 +1,165 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<grahamc001uk@yahoo.co.uk>
+// @date@	2007-09-28
+// @uri@	http://d.puremagic.com/issues/show_bug.cgi?id=1539
+// @desc@	[Issue 1539] X86 inline assembler fails to recognize when the branch address outside range
+
+module dstress.run.a.asm_loop_02_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int count = 0;
+
+		asm{
+			mov EAX, 0;
+			mov ECX, 2;
+		Lnext:
+			inc EAX;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			loop Lnext;
+		Ldone:
+			mov count, EAX;
+		}
+
+		if(2 != count){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	static assert(0, "DSTRESS{XFAIL}: no inline x86 ASM support");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_loop_02_C.d	Sun Sep 30 09:43:24 2007 +0000
@@ -0,0 +1,165 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+// @author@	<grahamc001uk@yahoo.co.uk>
+// @date@	2007-09-28
+// @uri@	http://d.puremagic.com/issues/show_bug.cgi?id=1539
+// @desc@	[Issue 1539] X86 inline assembler fails to recognize when the branch address outside range
+
+module dstress.run.a.asm_loop_02_C;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	int main(){
+		int count = 0;
+
+		asm{
+			mov EAX, 0;
+			mov ECX, 2;
+		Lstart:
+			loop Lnext;
+			jmp Ldone;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+			nop;
+		Lnext:
+			inc EAX;
+			jmp Lstart;
+		Ldone:
+			mov count, EAX;
+		}
+
+		if(1 != count){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	static assert(0, "DSTRESS{XFAIL}: no inline x86 ASM support");
+}