Mercurial > projects > dstress
diff addon/cpuinfo.d @ 1002:a7310ceac844
inline ASM review
author | thomask |
---|---|
date | Thu, 18 May 2006 16:07:06 +0000 |
parents | 861fe190f7ef |
children | aab96ff8d6cd |
line wrap: on
line diff
--- a/addon/cpuinfo.d Wed May 17 06:06:45 2006 +0000 +++ b/addon/cpuinfo.d Thu May 18 16:07:06 2006 +0000 @@ -14,7 +14,7 @@ const bool haveX86InlineAsm = true; version = haveX86InlineAsm; }else{ - pragma(msg, "no Inline ASM support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); const bool haveX86InlineAsm = false; } }else version(D_InlineAsm_X86){ @@ -24,7 +24,7 @@ const bool haveX86InlineAsm = true; version = haveX86InlineAsm; }else{ - pragma(msg, "no Inline ASM support"); + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); const bool haveX86InlineAsm = false; } @@ -39,6 +39,8 @@ cpuid; mov a, EDX; } + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); } if(!((a >> 15) & 1)){ @@ -46,7 +48,7 @@ } } } - + void haveCX8(){ uint a = 0; @@ -66,67 +68,80 @@ template haveFPU(){ void haveFPU(){ uint a = 0; - + version(haveX86InlineAsm){ asm{ mov EAX, 1; cpuid; mov a, EDX; } + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); } - + if(!(a & 1)){ throw new Exception("DSTRESS{XFAIL}: no X86 FPU present"); } } } -void haveMMX(){ - uint a = 0; - - version(haveX86InlineAsm){ - asm{ - mov EAX, 1; - cpuid; - mov a, EDX; +template haveMMX(){ + void haveMMX(){ + uint a = 0; + + version(haveX86InlineAsm){ + asm{ + mov EAX, 1; + cpuid; + mov a, EDX; + } + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); } - } - - if(!((a >> 23) & 1)){ - throw new Exception("no X86 MMX support present"); + + if(!((a >> 23) & 1)){ + throw new Exception("DSTRESS{XFAIL}: no MMX support present"); + } } } - -void haveSSE(){ - uint a = 0; - - version(haveX86InlineAsm){ - asm{ - mov EAX, 1; - cpuid; - mov a, EDX; +template haveSSE(){ + void haveSSE(){ + uint a = 0; + + version(haveX86InlineAsm){ + asm{ + mov EAX, 1; + cpuid; + mov a, EDX; + } + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); + } + + if(!((a >> 25) & 1)){ + throw new Exception("DSTRESS{XFAIL}: no SSE support present"); } } - - if(!((a >> 25) & 1)){ - throw new Exception("no X86 SSE support present"); - } } -void haveSSE2(){ - uint a = 0; - - version(haveX86InlineAsm){ - asm{ - mov EAX, 1; - cpuid; - mov a, EDX; +template haveSSE2(){ + void haveSSE2(){ + uint a = 0; + + version(haveX86InlineAsm){ + asm{ + mov EAX, 1; + cpuid; + mov a, EDX; + } + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); } - } - if(!((a >> 26) & 1)){ - throw new Exception("no X86 SSE2 support present"); + if(!((a >> 26) & 1)){ + throw new Exception("DSTRESS{XFAIL}: no SSE2 support present"); + } } } @@ -134,15 +149,17 @@ void haveSSE3(){ uint a = 1; uint b = 0; - + version(haveX86InlineAsm){ asm{ mov EAX, a; cpuid; mov b, ECX; } + }else{ + pragma(msg, "DSTRESS{XFAIL}: no inline ASM support"); } - + if(!(a & 1)){ throw new Exception("DSTRESS{XFAIL}: no SSE3 support present"); }