1*18c53e1eSJoseph Myers /* Test fbstp instruction. */ 2*18c53e1eSJoseph Myers 3*18c53e1eSJoseph Myers #include <stdio.h> 4*18c53e1eSJoseph Myers #include <string.h> 5*18c53e1eSJoseph Myers 6*18c53e1eSJoseph Myers int main(void) 7*18c53e1eSJoseph Myers { 8*18c53e1eSJoseph Myers int ret = 0; 9*18c53e1eSJoseph Myers unsigned char out[10]; 10*18c53e1eSJoseph Myers memset(out, 0xfe, sizeof out); 11*18c53e1eSJoseph Myers __asm__ volatile ("fbstp %0" : "=m" (out) : "t" (-0.0L) : "st"); 12*18c53e1eSJoseph Myers out[9] &= 0x80; 13*18c53e1eSJoseph Myers if (memcmp(out, "\0\0\0\0\0\0\0\0\0\x80", sizeof out) != 0) { 14*18c53e1eSJoseph Myers printf("FAIL: fbstp -0\n"); 15*18c53e1eSJoseph Myers ret = 1; 16*18c53e1eSJoseph Myers } 17*18c53e1eSJoseph Myers memset(out, 0x12, sizeof out); 18*18c53e1eSJoseph Myers __asm__ volatile ("fbstp %0" : "=m" (out) : "t" (-0.1L) : "st"); 19*18c53e1eSJoseph Myers out[9] &= 0x80; 20*18c53e1eSJoseph Myers if (memcmp(out, "\0\0\0\0\0\0\0\0\0\x80", sizeof out) != 0) { 21*18c53e1eSJoseph Myers printf("FAIL: fbstp -0.1\n"); 22*18c53e1eSJoseph Myers ret = 1; 23*18c53e1eSJoseph Myers } 24*18c53e1eSJoseph Myers return ret; 25*18c53e1eSJoseph Myers } 26