From: Adam Langley Date: Thu, 23 Feb 2012 15:51:04 +0000 (-0500) Subject: 6a/6l: add IMUL3Q and SHLDL X-Git-Tag: weekly.2012-03-04~196 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=36d370700957f4ec8db2d36288eb30d2552d8181;p=gostls13.git 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 --- diff --git a/src/cmd/6a/lex.c b/src/cmd/6a/lex.c index 1a8e5ad619..e013bec2a7 100644 --- a/src/cmd/6a/lex.c +++ b/src/cmd/6a/lex.c @@ -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, diff --git a/src/cmd/6l/6.out.h b/src/cmd/6l/6.out.h index 559cdc758b..8499159543 100644 --- a/src/cmd/6l/6.out.h +++ b/src/cmd/6l/6.out.h @@ -735,6 +735,7 @@ enum as AMODE, ACRC32B, ACRC32Q, + AIMUL3Q, ALAST }; diff --git a/src/cmd/6l/optab.c b/src/cmd/6l/optab.c index 2308e0dfea..5746ded19c 100644 --- a/src/cmd/6l/optab.c +++ b/src/cmd/6l/optab.c @@ -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) },