6a/6l: add IMUL3Q and SHLDL

Although Intel considers the three-argument form of IMUL to be a
variant of IMUL, I couldn't make 6l able to differentiate it without
huge changes, so I called it IMUL3.

R=rsc
CC=golang-dev
https://golang.org/cl/5686055
This commit is contained in:
Adam Langley 2012-02-23 10:51:04 -05:00
parent ac4055b2c5
commit 36d3707009
3 changed files with 8 additions and 0 deletions

View file

@ -396,6 +396,7 @@ struct
"IMULB", LTYPEI, AIMULB,
"IMULL", LTYPEI, AIMULL,
"IMULQ", LTYPEI, AIMULQ,
"IMUL3Q", LTYPEX, AIMUL3Q,
"IMULW", LTYPEI, AIMULW,
"INB", LTYPE0, AINB,
"INL", LTYPE0, AINL,

View file

@ -735,6 +735,7 @@ enum as
AMODE,
ACRC32B,
ACRC32Q,
AIMUL3Q,
ALAST
};

View file

@ -267,6 +267,11 @@ uchar yimul[] =
Yml, Yrl, Zm_r, 2,
0
};
uchar yimul3[] =
{
Yml, Yrl, Zibm_r, 1,
0
};
uchar ybyte[] =
{
Yi64, Ynone, Zbyte, 1,
@ -772,6 +777,7 @@ Optab optab[] =
{ AIMULL, yimul, Px, 0xf7,(05),0x6b,0x69,Pm,0xaf },
{ AIMULQ, yimul, Pw, 0xf7,(05),0x6b,0x69,Pm,0xaf },
{ AIMULW, yimul, Pe, 0xf7,(05),0x6b,0x69,Pm,0xaf },
{ AIMUL3Q, yimul3, Pw, 0x6b },
{ AINB, yin, Pb, 0xe4,0xec },
{ AINCB, yincb, Pb, 0xfe,(00) },
{ AINCL, yincl, Px, 0xff,(00) },