]> Cypherpunks repositories - gostls13.git/commitdiff
8a/8l: Added FCMOVcc instructions
authorEvan Shaw <chickencha@gmail.com>
Fri, 19 Feb 2010 07:33:06 +0000 (23:33 -0800)
committerRuss Cox <rsc@golang.org>
Fri, 19 Feb 2010 07:33:06 +0000 (23:33 -0800)
Thanks to Charles Dorian for the help.

R=rsc
CC=Charlie Dorian, golang-dev
https://golang.org/cl/207049

src/cmd/8a/lex.c
src/cmd/8l/8.out.h
src/cmd/8l/optab.c
src/libmach/8db.c

index c164151c657cdb151a3e4cef62154b2b9d9450e4..c8127bde9c565929bb1da7e323fc7b57084bb401 100644 (file)
@@ -601,6 +601,14 @@ struct
        "FMOVWP",       LTYPE3, AFMOVWP,
        "FMOVX",        LTYPE3, AFMOVX,
        "FMOVXP",       LTYPE3, AFMOVXP,
+       "FCMOVCC",      LTYPE3, AFCMOVCC,
+       "FCMOVCS",      LTYPE3, AFCMOVCS,
+       "FCMOVEQ",      LTYPE3, AFCMOVEQ,
+       "FCMOVHI",      LTYPE3, AFCMOVHI,
+       "FCMOVLS",      LTYPE3, AFCMOVLS,
+       "FCMOVNE",      LTYPE3, AFCMOVNE,
+       "FCMOVNU",      LTYPE3, AFCMOVNU,
+       "FCMOVUN",      LTYPE3, AFCMOVUN,
        "FCOMB",        LTYPE3, AFCOMB,
        "FCOMBP",       LTYPE3, AFCOMBP,
        "FCOMD",        LTYPE3, AFCOMD,
index eba475b9a965da9b6878e27282ed202e152a268e..c17f606e26cf0c85e5fc893fa991e24b9f82e6ea 100644 (file)
@@ -426,6 +426,15 @@ enum       as
        ACMOVWPL,
        ACMOVWPS,
 
+       AFCMOVCC,
+       AFCMOVCS,
+       AFCMOVEQ,
+       AFCMOVHI,
+       AFCMOVLS,
+       AFCMOVNE,
+       AFCMOVNU,
+       AFCMOVUN,
+
        ALAST
 };
 
index f41734f82e1672f8dd2d7ea5488101d1f5b8391c..5b7be692ed8855e5043ec3f226860c1bc8568b9d 100644 (file)
@@ -302,6 +302,11 @@ uchar      yfmvp[] =
        Yf0,    Ym,     Zo_m,   2,
        0
 };
+uchar  yfcmv[] =
+{
+       Yrf,    Yf0,    Zm_o,   2,
+       0
+};
 uchar  yfadd[] =
 {
        Ym,     Yf0,    Zm_o,   2,
@@ -730,5 +735,15 @@ Optab optab[] =
        { ACMOVWPC,     yml_rl, Pq, 0x4b },
        { ACMOVWPL,     yml_rl, Pq, 0x49 },
        { ACMOVWPS,     yml_rl, Pq, 0x4a },
+
+       { AFCMOVCC,     yfcmv,  Px, 0xdb,(00) },
+       { AFCMOVCS,     yfcmv,  Px, 0xda,(00) },
+       { AFCMOVEQ,     yfcmv,  Px, 0xda,(01) },
+       { AFCMOVHI,     yfcmv,  Px, 0xdb,(02) },
+       { AFCMOVLS,     yfcmv,  Px, 0xda,(02) },
+       { AFCMOVNE,     yfcmv,  Px, 0xdb,(01) },
+       { AFCMOVNU,     yfcmv,  Px, 0xdb,(03) },
+       { AFCMOVUN,     yfcmv,  Px, 0xda,(03) },
+
        0
 };
index 8a52d4ae73b147bef7266b5567a45682010811a5..3c670cdb1a9d9b12c58a6d69f8b69a111e88d761 100644 (file)
@@ -1004,6 +1004,10 @@ static Optable optabDA[8+8] =
 [0x05] 0,0,            "FSUBRL %e,F0",
 [0x06] 0,0,            "FDIVL  %e,F0",
 [0x07] 0,0,            "FDIVRL %e,F0",
+[0x08] 0,0,            "FCMOVCS        %f,F0",
+[0x09] 0,0,            "FCMOVEQ        %f,F0",
+[0x0a] 0,0,            "FCMOVLS        %f,F0",
+[0x0b] 0,0,            "FCMOVUN        %f,F0",
 [0x0d] R1,0,           "FUCOMPP",
 };
 
@@ -1014,6 +1018,10 @@ static Optable optabDB[8+64] =
 [0x03] 0,0,            "FMOVLP F0,%e",
 [0x05] 0,0,            "FMOVX  %e,F0",
 [0x07] 0,0,            "FMOVXP F0,%e",
+[0x08] 0,0,            "FCMOVCC        %f,F0",
+[0x09] 0,0,            "FCMOVNE        %f,F0",
+[0x0a] 0,0,            "FCMOVHI        %f,F0",
+[0x0b] 0,0,            "FCMOVNU        %f,F0",
 [0x0d] 0,0,            "FUCOMI F0,%f",
 [0x0e] 0,0,            "FCOMI  F0,%f",
 [0x2a] 0,0,            "FCLEX",