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, "IMULB", LTYPEI, AIMULB,
"IMULL", LTYPEI, AIMULL, "IMULL", LTYPEI, AIMULL,
"IMULQ", LTYPEI, AIMULQ, "IMULQ", LTYPEI, AIMULQ,
"IMUL3Q", LTYPEX, AIMUL3Q,
"IMULW", LTYPEI, AIMULW, "IMULW", LTYPEI, AIMULW,
"INB", LTYPE0, AINB, "INB", LTYPE0, AINB,
"INL", LTYPE0, AINL, "INL", LTYPE0, AINL,

View File

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

View File

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