bug135421-x86.c revision ed07e00d438c74b7a23c01bfffde77e3968305e4
15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer/* Test for long-form encodings of push %reg */ 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include <stdio.h> 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattnerint foo ( int x ) 75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer{ 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer int block[2]; 95f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer block[0] = x; 105f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer block[1] = 0; 115f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer __asm__ __volatile__( 125f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer "movl $0,%%edi\n\t" 135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer "movl $0,%%esi\n\t" 145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer "movl %0,%%edi\n\t" 155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer ".byte 0xFF,0xF7\n\t" /*pushl %edi */ 165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer "popl %%esi\n\t" 17a9d9145741ef77db45890911674705b81605b10bChris Lattner "movl %%esi, %1" 185f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer : : /*in*/ "m"(block[0]), "m"(block[1]) : "esi","edi","memory" 19f47724bf78299c7a50f008e0443c5f9f9f279ddcChris Lattner ); 20500d3297d2a21edeac4d46cbcbe21bc2352c2a28Chris Lattner return block[1]; 215f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer} 225f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 23ff759a66526d6a985fb4efae69c6b798d83364dfDaniel Dunbarint main ( void ) 245505413ee8e4e2924f52ba81181071f3a492e7d9Daniel Dunbar{ 252e22253e03e175144aeb9d13350a12fd83f858beDouglas Gregor int i; 265f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer for (i = 0; i < 100000000; i += 11111111) 275f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer printf("%d %d\n",i,foo(i)); 285f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer return 0; 295f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer} 305f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer