Mercurial > projects > dstress
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); +}