From: Russ Cox Date: Sat, 13 Jul 2013 00:58:38 +0000 (-0400) Subject: cmd/6l, cmd/8l: use one-byte XCHG forms when possible X-Git-Tag: go1.2rc2~1056 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=aad4720b5193221c000892e73615322698170d68;p=gostls13.git cmd/6l, cmd/8l: use one-byte XCHG forms when possible Pointed out by khr. R=ken2 CC=golang-dev https://golang.org/cl/11145044 --- diff --git a/src/cmd/6l/optab.c b/src/cmd/6l/optab.c index 5080dd7e90..da31672d3a 100644 --- a/src/cmd/6l/optab.c +++ b/src/cmd/6l/optab.c @@ -247,8 +247,10 @@ uchar yrb_mb[] = Yrb, Ymb, Zr_m, 1, 0 }; -uchar yml_ml[] = +uchar yxchg[] = { + Yax, Yrl, Z_rp, 1, + Yrl, Yax, Zrp_, 1, Yrl, Yml, Zr_m, 1, Yml, Yrl, Zm_r, 1, 0 @@ -1174,9 +1176,9 @@ Optab optab[] = { AWAIT, ynone, Px, 0x9b }, { AWORD, ybyte, Px, 2 }, { AXCHGB, yml_mb, Pb, 0x86,0x86 }, - { AXCHGL, yml_ml, Px, 0x87,0x87 }, - { AXCHGQ, yml_ml, Pw, 0x87,0x87 }, - { AXCHGW, yml_ml, Pe, 0x87,0x87 }, + { AXCHGL, yxchg, Px, 0x90,0x90,0x87,0x87 }, + { AXCHGQ, yxchg, Pw, 0x90,0x90,0x87,0x87 }, + { AXCHGW, yxchg, Pe, 0x90,0x90,0x87,0x87 }, { AXLAT, ynone, Px, 0xd7 }, { AXORB, yxorb, Pb, 0x34,0x80,(06),0x30,0x32 }, { AXORL, yxorl, Px, 0x83,(06),0x35,0x81,(06),0x31,0x33 }, diff --git a/src/cmd/8l/optab.c b/src/cmd/8l/optab.c index f7b44853d0..c024c19b35 100644 --- a/src/cmd/8l/optab.c +++ b/src/cmd/8l/optab.c @@ -196,8 +196,10 @@ uchar yml_mb[] = Ymb, Yrb, Zm_r, 1, 0 }; -uchar yml_ml[] = +uchar yxchg[] = { + Yax, Yrl, Z_rp, 1, + Yrl, Yax, Zrp_, 1, Yrl, Yml, Zr_m, 1, Yml, Yrl, Zm_r, 1, 0 @@ -696,8 +698,8 @@ Optab optab[] = { AWAIT, ynone, Px, 0x9b }, { AWORD, ybyte, Px, 2 }, { AXCHGB, yml_mb, Pb, 0x86,0x86 }, - { AXCHGL, yml_ml, Px, 0x87,0x87 }, - { AXCHGW, yml_ml, Pe, 0x87,0x87 }, + { AXCHGL, yxchg, Px, 0x90,0x90,0x87,0x87 }, + { AXCHGW, yxchg, Pe, 0x90,0x90,0x87,0x87 }, { AXLAT, ynone, Px, 0xd7 }, { AXORB, yxorb, Pb, 0x34,0x80,(06),0x30,0x32 }, { AXORL, yxorl, Px, 0x83,(06),0x35,0x81,(06),0x31,0x33 },