989
|
1 // $HeadURL$
|
|
2 // $Date$
|
|
3 // $Author$
|
1044
|
4
|
989
|
5 module dstress.run.a.asm_fcmovne_01_A;
|
|
6
|
1151
|
7 // __DSTRESS_TORTURE_BLOCK__ -fPIC
|
|
8
|
989
|
9 version(D_InlineAsm_X86){
|
|
10 version = runTest;
|
|
11 }else version(D_InlineAsm_X86_64){
|
|
12 version = runTest;
|
|
13 }
|
|
14
|
|
15 version(runTest){
|
|
16 import addon.cpuinfo;
|
1044
|
17
|
989
|
18 int main(){
|
|
19 haveFPU!()();
|
|
20 haveCMOV!()();
|
|
21
|
|
22 float f = -9.9f;
|
|
23
|
|
24 asm{
|
|
25 mov AL, 2;
|
|
26 mov BL, 1;
|
|
27 cmp AL, BL;
|
|
28 fld1;
|
|
29 fldz;
|
1522
|
30 fcmovne ST(0), ST(1);
|
989
|
31 fst f;
|
|
32 }
|
|
33
|
|
34 if(f != 1.0f){
|
|
35 assert(0);
|
|
36 }
|
|
37
|
|
38 asm{
|
|
39 mov AL, 1;
|
|
40 mov BL, 2;
|
|
41 cmp AL, BL;
|
|
42 fld1;
|
|
43 fldz;
|
1522
|
44 fcmovne ST(0), ST(1);
|
989
|
45 fst f;
|
|
46 }
|
|
47
|
|
48 if(f != 1.0f){
|
|
49 assert(0);
|
|
50 }
|
|
51
|
|
52 asm{
|
|
53 mov AL, 1;
|
|
54 mov BL, 1;
|
|
55 cmp AL, BL;
|
|
56 fld1;
|
|
57 fldz;
|
1522
|
58 fcmovne ST(0), ST(1);
|
989
|
59 fst f;
|
|
60 }
|
|
61
|
|
62 if(f != 0.0f){
|
|
63 assert(0);
|
|
64 }
|
|
65
|
|
66 return 0;
|
|
67 }
|
|
68 }else{
|
|
69 pragma(msg, "DSTRESS{XFAIL}: no inline ASM support");
|
|
70 static assert(0);
|
|
71 }
|