diff run/a/asm_fcmovne_01_A.d @ 989:a468938b0160

inline ASM review
author thomask
date Tue, 09 May 2006 04:18:47 +0000
parents
children 03c97933de98
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/a/asm_fcmovne_01_A.d	Tue May 09 04:18:47 2006 +0000
@@ -0,0 +1,69 @@
+ // $HeadURL$
+ // $Date$
+ // $Author$
+ 
+module dstress.run.a.asm_fcmovne_01_A;
+
+version(D_InlineAsm_X86){
+	version = runTest;
+}else version(D_InlineAsm_X86_64){
+	version = runTest;
+}
+
+version(runTest){
+	import addon.cpuinfo;
+	
+	int main(){
+		haveFPU!()();
+		haveCMOV!()();
+
+		float f = -9.9f;
+
+		asm{
+			mov AL, 2;
+			mov BL, 1;
+			cmp AL, BL;
+			fld1;
+			fldz;
+			fcmovne ST(1);
+			fst f;
+		}
+
+		if(f != 1.0f){
+			assert(0);
+		}
+
+		asm{
+			mov AL, 1;
+			mov BL, 2;
+			cmp AL, BL;
+			fld1;
+			fldz;
+			fcmovne ST(1);
+			fst f;
+		}
+
+		if(f != 1.0f){
+			assert(0);
+		}
+
+		asm{
+			mov AL, 1;
+			mov BL, 1;
+			cmp AL, BL;
+			fld1;
+			fldz;
+			fcmovne ST(1);
+			fst f;
+		}
+
+		if(f != 0.0f){
+			assert(0);
+		}
+
+		return 0;
+	}
+}else{
+	pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
+	static assert(0);
+}