Mercurial > projects > dstress
changeset 978:4c5ccd0d4947
extended SSE asm tests
author | thomask |
---|---|
date | Fri, 28 Apr 2006 12:33:26 +0000 |
parents | 1aba99b7f01c |
children | ee58e47a69b7 |
files | run/a/asm_divpd_01_A.d run/a/asm_divps_01_A.d run/a/asm_divsd_01.d run/a/asm_divsd_01_A.d run/a/asm_divss_01.d run/a/asm_divss_01_A.d run/a/asm_haddpd_01_A.d run/a/asm_haddps_01_A.d run/a/asm_hsubpd_01_A.d run/a/asm_hsubps_01_A.d run/a/asm_maxpd_01_A.d run/a/asm_maxps_01_A.d run/a/asm_maxsd_01_A.d run/a/asm_maxss_01_A.d run/a/asm_minpd_01_A.d run/a/asm_minps_01_A.d run/a/asm_minsd_01_A.d run/a/asm_minss_01_A.d run/a/asm_movapd_01_A.d run/a/asm_movaps_01_A.d run/a/asm_movddup_01.d run/a/asm_movddup_01_A.d run/a/asm_movhlpd_01_A.d run/a/asm_movhlps_01_A.d |
diffstat | 24 files changed, 843 insertions(+), 81 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_divpd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_divpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [-16.0, 12.0]; + static double[2] B = [2.0, 3.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + divpd XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] += 8.0; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > double.epsilon * 16){ + assert(0); + } + + c[1] -= 4.0; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > double.epsilon * 16){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_divps_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,55 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_divps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [-16.0f, 12.0f, 3.3f, 0.0f]; + static float[4] B = [2.0f, 3.0f, 1.0f, 9.7f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + divps XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] += 8.0f; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * 16){ + assert(0); + } + + c[1] -= 4.0f; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * 16){ + assert(0); + } + + c[2] -= 3.3f; + if(c[2] < 0){ + c[2] = -c[2]; + } + if(c[2] > float.epsilon * 16){ + assert(0); + } + + if(c[3] < 0){ + c[3] = -c[3]; + } + if(c[3] > float.epsilon * 16){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- a/run/a/asm_divsd_01.d Fri Apr 28 09:54:50 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -module dstress.run.a.asm_divsd_01; - -int main(){ - version(D_InlineAsm){ - double a = -4.2f; - double b = 2.0f; - - asm{ - movq XMM0, a; - divsd XMM0, b; - movq b, XMM0; - } - - b = b + 2.1f; - assert(b< b.epsilon*4); - - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); - } -} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_divsd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,41 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_divsd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [-16.0f, 12.0]; + static double[2] B = [2.0f, 3.0f]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + divsd XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] += 8.0f; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > double.epsilon * 16){ + assert(0); + } + + c[1] -= 12.0f; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > double.epsilon * 16){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- a/run/a/asm_divss_01.d Fri Apr 28 09:54:50 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -module dstress.run.a.asm_divss_01; - -int main(){ - version(D_InlineAsm){ - float a = -4.2f; - float b = 2.0f; - - asm{ - movd XMM0, a; - divss XMM0, b; - movd b, XMM0; - } - - b = b + 2.1f; - assert(b< b.epsilon*4); - - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); - } -} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_divss_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,56 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_divss_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [-16.0f, 12.0f, 3.3f, 9.0f]; + static float[4] B = [2.0f, 3.0f, 1.0f, 2.0f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + divss XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] += 8.0f; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * 16){ + assert(0); + } + + c[1] -= 12.0f; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * 16){ + assert(0); + } + + c[2] -= 3.3f; + if(c[2] < 0){ + c[2] = -c[2]; + } + if(c[2] > float.epsilon * 16){ + assert(0); + } + + c[3] -= 9.0f; + if(c[3] < 0){ + c[3] = -c[3]; + } + if(c[3] > float.epsilon * 16){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_haddpd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,41 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_haddpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [7.0, 11.0]; + static double[2] B = [2.0, 3.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + haddpd XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] -= 18.0; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > double.epsilon * 16){ + assert(0); + } + + c[1] -= 5.0; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > double.epsilon * 16){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_haddps_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,56 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_haddps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [6.1f, 7.2f, 8.3f, 9.4f]; + static float[4] B = [1.0f, 2.0f, 3.0f, 4.0f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + haddps XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] -= 13.3f; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * 16){ + assert(0); + } + + c[1] -= 17.7; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * 16){ + assert(0); + } + + c[2] -= 3.0; + if(c[2] < 0){ + c[2] = -c[2]; + } + if(c[2] > float.epsilon * 16){ + assert(0); + } + + c[3] -= 7.0; + if(c[3] < 0){ + c[3] = -c[3]; + } + if(c[3] > float.epsilon * 16){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_hsubpd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,41 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_hsubpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [2.0, 3.0]; + static double[2] B = [1.0, 4.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + hsubpd XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] += 1.0; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > double.epsilon * 64){ + assert(0); + } + + c[1] += 3.0; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > double.epsilon * 16){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_hsubps_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,56 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_hsubps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [2.0f, 3.0f, 6.0f, 8.0f]; + static float[4] B = [1.0f, 4.0f, 5.0f, 9.0f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + hsubps XMM0, XMM1; + movdqu c, XMM0; + } + + c[0] += 1.0f; + if(c[0] < 0){ + c[0] = -c[0]; + } + if(c[0] > float.epsilon * 16){ + assert(0); + } + + c[1] += 2.0f; + if(c[1] < 0){ + c[1] = -c[1]; + } + if(c[1] > float.epsilon * 16){ + assert(0); + } + + c[2] += 3.0; + if(c[2] < 0){ + c[2] = -c[2]; + } + if(c[2] > float.epsilon * 16){ + assert(0); + } + + c[3] += 4.0; + if(c[3] < 0){ + c[3] = -c[3]; + } + if(c[3] > float.epsilon * 16){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_maxpd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_maxpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [2.0, 3.0]; + static double[2] B = [1.0, 4.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + maxpd XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 2.0){ + assert(0); + } + + if(c[1] != 4.0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_maxps_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_maxps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [2.0f, 3.0f, 16.0f, -1.0f]; + static float[4] B = [1.0f, 4.0f, -17.0f, 1.0f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + maxps XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 2.0f){ + assert(0); + } + + if(c[1] != 4.0f){ + assert(0); + } + + if(c[2] != 16.0f){ + assert(0); + } + + if(c[3] != 1.0f){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_maxsd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_maxsd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [1.0, 3.0]; + static double[2] B = [2.0, 4.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + maxsd XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 2.0){ + assert(0); + } + + if(c[1] != 3.0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_maxss_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_maxss_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [1.0f, 3.0f, 16.0f, -1.0f]; + static float[4] B = [2.0f, 4.0f, -17.0f, 1.0f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + maxss XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 2.0f){ + assert(0); + } + + if(c[1] != 3.0f){ + assert(0); + } + + if(c[2] != 16.0f){ + assert(0); + } + + if(c[3] != -1.0f){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_minpd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_minpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [2.0, 4.0]; + static double[2] B = [1.0, 3.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + minpd XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 1.0){ + assert(0); + } + + if(c[1] != 3.0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_minps_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_maxps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [2.0f, 3.0f, 17.0f, -1.0f]; + static float[4] B = [1.0f, 4.0f, 16.0f, 1.0f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + minps XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 1.0f){ + assert(0); + } + + if(c[1] != 3.0f){ + assert(0); + } + + if(c[2] != 16.0f){ + assert(0); + } + + if(c[3] != -1.0f){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_minsd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,33 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_minsd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [2.0, 4.0]; + static double[2] B = [1.0, 3.0]; + double[2] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + minsd XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 1.0){ + assert(0); + } + + if(c[1] != 4.0){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_minss_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_maxss_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [2.0f, 3.0f, 17.0f, -1.0f]; + static float[4] B = [1.0f, 4.0f, 16.0f, 1.0f]; + float[4] c; + + asm{ + movdqu XMM0, A; + movdqu XMM1, B; + minss XMM0, XMM1; + movdqu c, XMM0; + } + + if(c[0] != 1.0f){ + assert(0); + } + + if(c[1] != 3.0f){ + assert(0); + } + + if(c[2] != 17.0f){ + assert(0); + } + + if(c[3] != -1.0f){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movapd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,31 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movapd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [2.0, 3.0]; + double[2] b; + + asm{ + movdqu XMM0, A; + movapd XMM1, XMM0; + movdqu b, XMM1; + } + + if(A[0] != b[0]){ + assert(0); + } + + if(A[1] != b[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movaps_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movaps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [2.0f, 3.0f, 0.0f, 0.5f]; + float[4] b; + + asm{ + movdqu XMM0, A; + movaps XMM1, XMM0; + movdqu b, XMM1; + } + + if(A[0] != b[0]){ + assert(0); + } + + if(A[1] != b[1]){ + assert(0); + } + + if(A[2] != b[2]){ + assert(0); + } + + if(A[3] != b[3]){ + assert(0); + } + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- a/run/a/asm_movddup_01.d Fri Apr 28 09:54:50 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -// $HeadURL$ -// $Date$ -// $Author$ - -module dstress.run.a.asm_movdup_01; - -int main(){ - version(D_InlineAsm_X86){ - double a = -3.5; - double[2] b; - - asm{ - movddup XMM0, a; - movdqu f, XMM0; - } - - if(b[0] != a){ - assert(0); - } - - if(b[1] != a){ - assert(0); - } - return 0; - }else{ - pragma(msg, "no Inline asm support"); - static assert(0); - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movddup_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movddup_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [2.0, 3.0]; + double[2] b; + + asm{ + movdqu XMM0, A; + movdqu XMM1, A; + movddup XMM1, XMM0; + movdqu b, XMM1; + } + + if(A[0] != b[0]){ + assert(0); + } + + if(A[0] != b[1]){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movhlpd_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movhlpd_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static double[2] A = [1.0, 2.0]; + static double B = 4.0; + double[2] b; + + asm{ + movdqu XMM0, A; + movhpd XMM0, B; + movdqu b, XMM0; + } + + if(b[0] != A[0]){ + assert(0); + } + + if(b[1] != B){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_movhlps_01_A.d Fri Apr 28 12:33:26 2006 +0000 @@ -0,0 +1,32 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +module dstress.run.a.asm_movhlps_01_A; + +int main(){ + version(D_InlineAsm_X86){ + static float[4] A = [1.0f, 2.0f, 3.0f , 4.0f]; + float[4] b; + + asm{ + movdqu XMM0, A; + movdqu XMM1, A; + movhlps XMM1, XMM0; + movdqu b, XMM0; + } + + if((b[0] != b[2]) || (A[2] != b[0])){ + assert(0); + } + + if((b[1] != b[3]) || (A[3] != b[1])){ + assert(0); + } + + return 0; + }else{ + pragma(msg, "no Inline asm support"); + static assert(0); + } +}