1*c9945492SAndroid Build Coastguard Worker.global feclearexcept 2*c9945492SAndroid Build Coastguard Worker.type feclearexcept,@function 3*c9945492SAndroid Build Coastguard Workerfeclearexcept: 4*c9945492SAndroid Build Coastguard Worker # maintain exceptions in the sse mxcsr, clear x87 exceptions 5*c9945492SAndroid Build Coastguard Worker mov %edi,%ecx 6*c9945492SAndroid Build Coastguard Worker and $0x3f,%ecx 7*c9945492SAndroid Build Coastguard Worker fnstsw %ax 8*c9945492SAndroid Build Coastguard Worker test %eax,%ecx 9*c9945492SAndroid Build Coastguard Worker jz 1f 10*c9945492SAndroid Build Coastguard Worker fnclex 11*c9945492SAndroid Build Coastguard Worker1: stmxcsr -8(%esp) 12*c9945492SAndroid Build Coastguard Worker and $0x3f,%eax 13*c9945492SAndroid Build Coastguard Worker or %eax,-8(%esp) 14*c9945492SAndroid Build Coastguard Worker test %ecx,-8(%esp) 15*c9945492SAndroid Build Coastguard Worker jz 1f 16*c9945492SAndroid Build Coastguard Worker not %ecx 17*c9945492SAndroid Build Coastguard Worker and %ecx,-8(%esp) 18*c9945492SAndroid Build Coastguard Worker ldmxcsr -8(%esp) 19*c9945492SAndroid Build Coastguard Worker1: xor %eax,%eax 20*c9945492SAndroid Build Coastguard Worker ret 21*c9945492SAndroid Build Coastguard Worker 22*c9945492SAndroid Build Coastguard Worker.global feraiseexcept 23*c9945492SAndroid Build Coastguard Worker.type feraiseexcept,@function 24*c9945492SAndroid Build Coastguard Workerferaiseexcept: 25*c9945492SAndroid Build Coastguard Worker and $0x3f,%edi 26*c9945492SAndroid Build Coastguard Worker stmxcsr -8(%esp) 27*c9945492SAndroid Build Coastguard Worker or %edi,-8(%esp) 28*c9945492SAndroid Build Coastguard Worker ldmxcsr -8(%esp) 29*c9945492SAndroid Build Coastguard Worker xor %eax,%eax 30*c9945492SAndroid Build Coastguard Worker ret 31*c9945492SAndroid Build Coastguard Worker 32*c9945492SAndroid Build Coastguard Worker.global __fesetround 33*c9945492SAndroid Build Coastguard Worker.hidden __fesetround 34*c9945492SAndroid Build Coastguard Worker.type __fesetround,@function 35*c9945492SAndroid Build Coastguard Worker__fesetround: 36*c9945492SAndroid Build Coastguard Worker push %rax 37*c9945492SAndroid Build Coastguard Worker xor %eax,%eax 38*c9945492SAndroid Build Coastguard Worker mov %edi,%ecx 39*c9945492SAndroid Build Coastguard Worker fnstcw (%esp) 40*c9945492SAndroid Build Coastguard Worker andb $0xf3,1(%esp) 41*c9945492SAndroid Build Coastguard Worker or %ch,1(%esp) 42*c9945492SAndroid Build Coastguard Worker fldcw (%esp) 43*c9945492SAndroid Build Coastguard Worker stmxcsr (%esp) 44*c9945492SAndroid Build Coastguard Worker shl $3,%ch 45*c9945492SAndroid Build Coastguard Worker andb $0x9f,1(%esp) 46*c9945492SAndroid Build Coastguard Worker or %ch,1(%esp) 47*c9945492SAndroid Build Coastguard Worker ldmxcsr (%esp) 48*c9945492SAndroid Build Coastguard Worker pop %rcx 49*c9945492SAndroid Build Coastguard Worker ret 50*c9945492SAndroid Build Coastguard Worker 51*c9945492SAndroid Build Coastguard Worker.global fegetround 52*c9945492SAndroid Build Coastguard Worker.type fegetround,@function 53*c9945492SAndroid Build Coastguard Workerfegetround: 54*c9945492SAndroid Build Coastguard Worker push %rax 55*c9945492SAndroid Build Coastguard Worker stmxcsr (%esp) 56*c9945492SAndroid Build Coastguard Worker pop %rax 57*c9945492SAndroid Build Coastguard Worker shr $3,%eax 58*c9945492SAndroid Build Coastguard Worker and $0xc00,%eax 59*c9945492SAndroid Build Coastguard Worker ret 60*c9945492SAndroid Build Coastguard Worker 61*c9945492SAndroid Build Coastguard Worker.global fegetenv 62*c9945492SAndroid Build Coastguard Worker.type fegetenv,@function 63*c9945492SAndroid Build Coastguard Workerfegetenv: 64*c9945492SAndroid Build Coastguard Worker xor %eax,%eax 65*c9945492SAndroid Build Coastguard Worker fnstenv (%edi) 66*c9945492SAndroid Build Coastguard Worker stmxcsr 28(%edi) 67*c9945492SAndroid Build Coastguard Worker ret 68*c9945492SAndroid Build Coastguard Worker 69*c9945492SAndroid Build Coastguard Worker.global fesetenv 70*c9945492SAndroid Build Coastguard Worker.type fesetenv,@function 71*c9945492SAndroid Build Coastguard Workerfesetenv: 72*c9945492SAndroid Build Coastguard Worker xor %eax,%eax 73*c9945492SAndroid Build Coastguard Worker inc %edi 74*c9945492SAndroid Build Coastguard Worker jz 1f 75*c9945492SAndroid Build Coastguard Worker fldenv -1(%edi) 76*c9945492SAndroid Build Coastguard Worker ldmxcsr 27(%edi) 77*c9945492SAndroid Build Coastguard Worker ret 78*c9945492SAndroid Build Coastguard Worker1: push %rax 79*c9945492SAndroid Build Coastguard Worker push %rax 80*c9945492SAndroid Build Coastguard Worker pushq $0xffff 81*c9945492SAndroid Build Coastguard Worker pushq $0x37f 82*c9945492SAndroid Build Coastguard Worker fldenv (%esp) 83*c9945492SAndroid Build Coastguard Worker pushq $0x1f80 84*c9945492SAndroid Build Coastguard Worker ldmxcsr (%esp) 85*c9945492SAndroid Build Coastguard Worker add $40,%esp 86*c9945492SAndroid Build Coastguard Worker ret 87*c9945492SAndroid Build Coastguard Worker 88*c9945492SAndroid Build Coastguard Worker.global fetestexcept 89*c9945492SAndroid Build Coastguard Worker.type fetestexcept,@function 90*c9945492SAndroid Build Coastguard Workerfetestexcept: 91*c9945492SAndroid Build Coastguard Worker and $0x3f,%edi 92*c9945492SAndroid Build Coastguard Worker push %rax 93*c9945492SAndroid Build Coastguard Worker stmxcsr (%esp) 94*c9945492SAndroid Build Coastguard Worker pop %rsi 95*c9945492SAndroid Build Coastguard Worker fnstsw %ax 96*c9945492SAndroid Build Coastguard Worker or %esi,%eax 97*c9945492SAndroid Build Coastguard Worker and %edi,%eax 98*c9945492SAndroid Build Coastguard Worker ret 99