Adding copyright notices to most files. Also add readme file, and some
[jitcs.git] / tests / x86 / x86_arith.ins
blob9c0f046bb4d138cd1d3da09a3d5634d9a20ae070
1 | for X = [ADD, OR, ADC, SBB, AND, SUB, XOR, CMP, TEST] do
2 |   let RRW = $((X=="CMP" or X=="TEST") and "r" or "rw")
3 |   let FRW = $((X=="ADC" or X=="SBB") and "rw" or "w")
4 |   let BYTE = $(X~="TEST" and "<byte>")
5 |   for Y = [8, 16, 32, 64, DEF] do
6 $(X86(Y))    $(X){_M$(RSZ(Y))}         [RAX], $(RNAME("RCX", Y))              {|RAX/r,RCX/r,FLAGS/$(FRW)}
7 $(X86(Y))    $(X){_$(RSZ(Y))$(RSZ(Y))} $(RNAME("RCX", Y)), $(RNAME("RDX", Y)) {|RCX/$(RRW),RDX/r,FLAGS/$(FRW)}
8 $(X86(Y))    $(X){_$(RSZ(Y))M}         $(RNAME("RCX", Y)), [RAX]              {|RCX/$(RRW),RAX/r,FLAGS/$(FRW)}
9 |   endfor
10   $(X){_BI} CL, 1                                       {|RCX/$(RRW),FLAGS/$(FRW)}
11   $(X){_M8I} <byte> [RAX], 1                            {|RAX/r,FLAGS/$(FRW)}
12 |   for Y = [16, 32, 64, DEF] do
13 $(X86(Y))    $(X){_$(RSZ(Y))I} $(RNAME("RCX",Y)), $(BYTE) 1       {|RCX/$(RRW),FLAGS/$(FRW)}
14 $(X86(Y))    $(X){_$(RSZ(Y))I} $(RNAME("RCX",Y)), 0x100           {|RCX/$(RRW),FLAGS/$(FRW)}
15 $(X86(Y))    $(X){_M$(MSZ(Y))I} <$(NASMSZ(Y))> [RAX], $(BYTE) 1   {|RAX/r,FLAGS/$(FRW)}
16 $(X86(Y))    $(X){_M$(MSZ(Y))I} <$(NASMSZ(Y))> [RAX], 0x100       {|RAX/r,FLAGS/$(FRW)}
17 |   endfor
18 | endfor
19 | for X = [ADD, OR, ADC, SBB, AND, SUB, XOR, CMP] do
20 |   let RRW = $((X=="CMP" or X=="TEST") and "r" or "rw")
21 |   let FRW = $((X=="ADC" or X=="SBB") and "rw" or "w")
22 |   for Y = [8, 16, 32, 64, DEF] do
23 $(X86(Y))    $(X){_$(RNAME("RAX",Y))_I} <$(RNAME("RAX", Y)),> $(RCONST(0x12345678, Y))  {|RAX/$(RRW),FLAGS/$(FRW)}
24 |   endfor
25 | endfor
27 | for X = [INC, DEC, NOT, NEG, DIV, IDIV, MUL, IMUL] do
28 |   for Y = [8, 16, 32, 64, DEF] do
29 |     let RRW = $((X=="INC" or X=="DEC" or X=="NOT" or X=="NEG") and "rw" or "r")
30 |     let FRW = $((X=="INC" or X=="DEC") and "rw" or "w")
31 |     let AX = $((X=="DIV" or X=="IDIV" or X=="MUL" or X=="IMUL") and ",RAX/rw")
32 |     let DIVDX = $((X=="DIV" or X=="IDIV") and Y~="8" and ",RDX/rw")
33 |     let MULDX = $((X=="MUL" or X=="IMUL") and Y~="8" and (Y=="16" and ",RDX/rw" or ",RDX/w"))
34 $(X86(Y))  $(X){_$(RSZ(Y))} $(RNAME("RCX", Y))       {|RCX/$(RRW),FLAGS/$(FRW) $(AX) $(MULDX) $(DIVDX)}
35 $(X86(Y))  $(X){_M$(MSZ(Y))} <$(NASMSZ(Y))> [RCX]    {|RCX/r,FLAGS/$(FRW) $(AX) $(MULDX) $(DIVDX)}
36 |   endfor
37 | endfor
39 | for Y = [16, 32, 64, DEF] do
40 |   let RRW = $(Y=="16" and "rw" or "w")
41 $(X86(Y))    IMUL{_$(RSZ(Y))$(RSZ(Y))} $(RNAME("RCX", Y)), $(RNAME("RDX", Y))    {|RCX/rw,RDX/r,FLAGS/w}
42 $(X86(Y))    IMUL{_$(RSZ(Y))M} $(RNAME("RCX", Y)), <$(NASMSZ(Y))> [RAX]          {|RCX/rw,RAX/r,FLAGS/w}
43 $(X86(Y))    IMUL{_$(RSZ(Y))$(RSZ(Y))I} $(RNAME("RCX", Y)), $(RNAME("RDX", Y)), <byte> 1 {|RCX/$(RRW),RDX/r,FLAGS/w}
44 $(X86(Y))    IMUL{_$(RSZ(Y))$(RSZ(Y))I} $(RNAME("RCX", Y)), $(RNAME("RDX", Y)), 0x100    {|RCX/$(RRW),RDX/r,FLAGS/w}
45 $(X86(Y))    IMUL{_$(RSZ(Y))MI} $(RNAME("RCX", Y)), <$(NASMSZ(Y))> [RAX], <byte> 1       {|RCX/$(RRW),RAX/r,FLAGS/w}
46 $(X86(Y))    IMUL{_$(RSZ(Y))MI} $(RNAME("RCX", Y)), <$(NASMSZ(Y))> [RAX], 0x100          {|RCX/$(RRW),RAX/r,FLAGS/w}
47 | endfor
49   LEA{_WM}    ECX, [RAX]                                    {|RCX/w,RAX/r}
50   LEA{_WWWII} ECX, {EAX, EBX, 2, 0x40} <[RAX+RBX*2+0x40]>   {|RCX/w,RAX/r,RBX/r}
51 64:  LEA{_DM}    RCX, [RAX]                                   {|RCX/w,RAX/r}
52 64:  LEA{_DDDII} RCX, {RAX, RBX, 2, 0x40}  <[RAX+RBX*2+0x40]> {|RCX/w,RAX/r,RBX/r}
53   LEA{_RM}    RCX, [RAX]                                      {|RCX/w,RAX/r}
54   LEA{_RRRII} RCX, {RAX, RBX, 2, 0x40}  <[RAX+RBX*2+0x40]>    {|RCX/w,RAX/r,RBX/r}
56 | for X = [ROL, ROR, SHL, SHR, SAR, RCL, RCR] do
57 |   let FRW = $((X=="RCL" or X=="RCR") and "rw" or "w")
58 |   for Y = [8, 16, 32, 64, DEF] do
59 $(X86(Y))  $(X){_$(RSZ(Y))I}  $(RNAME("RCX",Y)), 1       {|RCX/rw,FLAGS/$(FRW)}
60 $(X86(Y))  $(X){_$(RSZ(Y))I}  $(RNAME("RCX",Y)), 2       {|RCX/rw,FLAGS/$(FRW)}
61 $(X86(Y))  $(X){_M$(MSZ(Y))I} <$(NASMSZ(Y))> [RAX], 1    {|RAX/r,FLAGS/$(FRW)}
62 $(X86(Y))  $(X){_M$(MSZ(Y))I} <$(NASMSZ(Y))> [RAX], 2    {|RAX/r,FLAGS/$(FRW)}
63 $(X86(Y))  $(X){_$(RSZ(Y))_CL}   $(RNAME("RAX",Y))<, CL>   {|RAX/rw,RCX/r,FLAGS/$(FRW)}
64 $(X86(Y))  $(X){_M$(MSZ(Y))_CL} <$(NASMSZ(Y))> [RAX]<, CL> {|RAX/r,RCX/r,FLAGS/$(FRW)}
65 |   endfor
66 | endfor
68 | for X = [SHLD, SHRD] do
69 |   for Y = [16, 32, 64, DEF] do
70 $(X86(Y))  $(X){_$(RSZ(Y))$(RSZ(Y))I}   $(RNAME("RDX",Y)), $(RNAME("RAX",Y)), 2  {|RDX/rw,RAX/r,FLAGS/w}
71 $(X86(Y))  $(X){_M$(RSZ(Y))I}   [RDX], $(RNAME("RAX",Y)), 2                      {|RDX/r,RAX/r,FLAGS/w}
72 $(X86(Y))  $(X){_$(RSZ(Y))$(RSZ(Y))_CL} $(RNAME("RDX",Y)), $(RNAME("RAX",Y))<, CL> {|RDX/rw,RAX/r,RCX/r,FLAGS/w}
73 $(X86(Y))  $(X){_M$(RSZ(Y))_CL} [RDX], $(RNAME("RAX",Y))<, CL>                     {|RDX/r,RAX/r,RCX/r,FLAGS/w}
74 |   endfor
75 | endfor