101a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 201a4d87b92224d2507a2097fdcdf2940a3a39444sewardj/* A test of the alternative (redundant) encodings for {inc,dec}{w,l}. */ 301a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 483b62cbbab29bde83eba40231f307c2a311e73c8njn#include "tests/asm.h" 501a4d87b92224d2507a2097fdcdf2940a3a39444sewardj#include <stdio.h> 601a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 701a4d87b92224d2507a2097fdcdf2940a3a39444sewardjint r1,r2,r3,r4,r5,r6,r7,r8,a1,a2; 801a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 901a4d87b92224d2507a2097fdcdf2940a3a39444sewardjextern void foo ( void ); 1001a4d87b92224d2507a2097fdcdf2940a3a39444sewardjasm("\n" 1183b62cbbab29bde83eba40231f307c2a311e73c8njnVG_SYM(foo) ":\n" 1201a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\tpushl $0\n" 1301a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\tpopfl\n" 1483b62cbbab29bde83eba40231f307c2a311e73c8njn"\tmovl " VG_SYM(a1) ",%eax\n" 1583b62cbbab29bde83eba40231f307c2a311e73c8njn"\tmovl " VG_SYM(a2) ",%edx\n" 1601a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 1701a4d87b92224d2507a2097fdcdf2940a3a39444sewardj/* inc %eax */ 1801a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xFF\n" 1901a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xC0\n" 2001a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 2183b62cbbab29bde83eba40231f307c2a311e73c8njn"\tmovl %eax," VG_SYM(r1) "\n" 2201a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\tpushfl\n" 2383b62cbbab29bde83eba40231f307c2a311e73c8njn"\tpopl " VG_SYM(r2) "\n" 2401a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 2501a4d87b92224d2507a2097fdcdf2940a3a39444sewardj/* inc %dx */ 2601a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0x66\n" 2701a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xFF\n" 2801a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xC2\n" 2901a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 3083b62cbbab29bde83eba40231f307c2a311e73c8njn"\tmovl %edx," VG_SYM(r3) "\n" 3101a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\tpushfl\n" 3283b62cbbab29bde83eba40231f307c2a311e73c8njn"\tpopl " VG_SYM(r4) "\n" 3301a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 3401a4d87b92224d2507a2097fdcdf2940a3a39444sewardj/* dec %edx */ 3501a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xFF\n" 3601a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xCA\n" 3701a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 3883b62cbbab29bde83eba40231f307c2a311e73c8njn"\tmovl %edx," VG_SYM(r5) "\n" 3901a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\tpushfl\n" 4083b62cbbab29bde83eba40231f307c2a311e73c8njn"\tpopl " VG_SYM(r6) "\n" 4101a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 4201a4d87b92224d2507a2097fdcdf2940a3a39444sewardj/* dec %ax */ 4301a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0x66\n" 4401a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xFF\n" 4501a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\t.byte 0xC8\n" 4601a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 4783b62cbbab29bde83eba40231f307c2a311e73c8njn"\tmovl %eax," VG_SYM(r7) "\n" 4801a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\tpushfl\n" 4983b62cbbab29bde83eba40231f307c2a311e73c8njn"\tpopl " VG_SYM(r8) "\n" 5001a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 5101a4d87b92224d2507a2097fdcdf2940a3a39444sewardj"\tret\n" 5201a4d87b92224d2507a2097fdcdf2940a3a39444sewardj); 5301a4d87b92224d2507a2097fdcdf2940a3a39444sewardj 5401a4d87b92224d2507a2097fdcdf2940a3a39444sewardjint main ( void ) 5501a4d87b92224d2507a2097fdcdf2940a3a39444sewardj{ 5601a4d87b92224d2507a2097fdcdf2940a3a39444sewardj a1 = 0x77777777; 5701a4d87b92224d2507a2097fdcdf2940a3a39444sewardj a2 = 0x88888888; 5801a4d87b92224d2507a2097fdcdf2940a3a39444sewardj r1=r2=r3=r4=r5=r6=r7=r8=0; 5901a4d87b92224d2507a2097fdcdf2940a3a39444sewardj foo(); 6001a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r1); 6101a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r2); 6201a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r3); 6301a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r4); 6401a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r5); 6501a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r6); 6601a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r7); 6701a4d87b92224d2507a2097fdcdf2940a3a39444sewardj printf("0x%08x\n",r8); 6801a4d87b92224d2507a2097fdcdf2940a3a39444sewardj return 0; 6901a4d87b92224d2507a2097fdcdf2940a3a39444sewardj} 70