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