diff run/a/asm_fsubp_01_B.d @ 992:4c6602a06f32

inline ASM review
author thomask
date Wed, 10 May 2006 19:00:54 +0000
parents
children 03c97933de98
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_fsubp_01_B.d	Wed May 10 19:00:54 2006 +0000
@@ -0,0 +1,49 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.a.asm_fsubp_01_B;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		double a = 2.4;
+		double b = -1.2;
+		
+		asm{
+			fld1;
+			fld a;
+			fldz;
+			fld b;
+			fsubp ST(2), ST;
+			fstp b;
+			fstp a;
+		}
+		
+		a -= 3.6;
+		
+		if(a < 0.0){
+			a = -a;
+		}
+		
+		if(a > a.epsilon * 4.0){
+			assert(0);
+		}
+
+		if(b != 0.0){
+			assert(0);
+		}
+		
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}