From 92e29fe58602fa07ccf0564fa97fd4a849009479 Mon Sep 17 00:00:00 2001 From: FernandoS27 Date: Sat, 1 Sep 2018 16:51:02 -0400 Subject: [PATCH 1/2] Implemented CSETP and CSET --- lib/MaxAs/MaxAsGrammar.pm | 47 ++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/lib/MaxAs/MaxAsGrammar.pm b/lib/MaxAs/MaxAsGrammar.pm index 3370f71..87feacd 100644 --- a/lib/MaxAs/MaxAsGrammar.pm +++ b/lib/MaxAs/MaxAsGrammar.pm @@ -214,6 +214,7 @@ my $fcmp = qr"(?\.LT|\.EQ|\.LE|\.GT|\.NE|\.GE|\.NUM|\.NAN|\.LTU|\.EQU|\.LE my $icmp = qr"\.(?LT|EQ|LE|GT|NE|GE)"; my $bool = qr"\.(?AND|OR|XOR|PASS_B)"; my $bool2 = qr"\.(?AND|OR|XOR)"; +my $ccbool = qr"\.(?F|LT|EQ|LE|GT|NE|GE|NUM|NAN|LTU|EQU|LEU|GTU|NEU|GEU|UNK|OFF|LO|SFF|LS|HI|SFT|HS|OFT|CSM_TA|CSM_TR|CSM_MX|FCSM_TA|RLE|RGT)"; my $func = qr"\.(?COS|SIN|EX2|LG2|RCP|RSQ|RCP64H|RSQ64H)"; my $rro = qr"\.(?SINCOS|EX2)"; my $add3 = qr"(?:\.(?X|RS|LS))?"; @@ -363,8 +364,8 @@ our %grammar = #Predicate/CC Instructions PSET => [ { type => $cmpT, code => 0x5088000000000000, rule => qr"^$pred?PSET$bool2$bool $r0, $p12, $p29, $p39;"o, } ], PSETP => [ { type => $cmpT, code => 0x5090000000000000, rule => qr"^$pred?PSETP$bool2$bool $p3, $p0, $p12, $p29, $p39;"o, } ], - CSET => [ { type => $x32T, code => 0x0000000000000000, rule => qr"^$pred?CSET[^;]*;"o, } ], #TODO - CSETP => [ { type => $x32T, code => 0x0000000000000000, rule => qr"^$pred?CSETP[^;]*;"o, } ], #TODO + CSET => [ { type => $x32T, code => 0x5098000000000000, rule => qr"^$pred?CSET$ccbool$bool2 $r0, $p39;"o, } ], + CSETP => [ { type => $x32T, code => 0x50a0000000000000, rule => qr"^$pred?CSETP$ccbool$bool2 $p3, $p0, $p39;"o, } ], P2R => [ { type => $x32T, code => 0x38e8000000000000, rule => qr"^$pred?P2R $r0, PR, $r8, $i20w7;"o, } ], R2P => [ { type => $shftT, code => 0x38f0000000000000, rule => qr"^$pred?R2P PR, $r8, $i20w7;"o, } ], @@ -524,6 +525,45 @@ PSETP, PSET: bool2 0x0000000001000000 OR 0x0000000002000000 XOR +CSETP, CSET: ccbool +0x0000000000000000 F +0x0000010000000000 LT +0x0000020000000000 EQ +0x0000030000000000 LE +0x0000040000000000 GT +0x0000050000000000 NE +0x0000060000000000 GE +0x0000070000000000 NUM +0x0000080000000000 NAN +0x0000090000000000 LTU +0x00000a0000000000 EQU +0x00000b0000000000 LEU +0x00000c0000000000 GTU +0x00000d0000000000 NEU +0x00000e0000000000 GEU +0x00000f0000000000 UNK +0x0000100000000000 OFF +0x0000110000000000 LO +0x0000120000000000 SFF +0x0000130000000000 LS +0x0000140000000000 HI +0x0000150000000000 SFT +0x0000160000000000 HS +0x0000170000000000 OFT +0x0000180000000000 CSM_TA +0x0000190000000000 CSM_TR +0x00001a0000000000 CSM_MX +0x00001b0000000000 FCSM_TA +0x00001c0000000000 FCSM_TR +0x00001d0000000000 FCSM_MX +0x00001e0000000000 RLE +0x00001f0000000000 RGT + +CSETP, CSET: bool2 +0x0000000000000000 AND +0x0000000001000000 OR +0x0000000002000000 XOR + ISETP, ISET 0x0000080000000000 X @@ -1472,6 +1512,3 @@ sub getAddrVecRegisters } __END__ - - - From 442eef8f7995dd69352878f2dd03936e9a186b12 Mon Sep 17 00:00:00 2001 From: FernandoS27 Date: Sun, 9 Sep 2018 17:22:33 -0400 Subject: [PATCH 2/2] Added CC flag on I2I and fixed control code encodings --- lib/MaxAs/MaxAsGrammar.pm | 66 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/lib/MaxAs/MaxAsGrammar.pm b/lib/MaxAs/MaxAsGrammar.pm index 87feacd..283b9d7 100644 --- a/lib/MaxAs/MaxAsGrammar.pm +++ b/lib/MaxAs/MaxAsGrammar.pm @@ -352,7 +352,7 @@ our %grammar = F2F => [ { type => $qtrT, code => 0x5ca8000000000000, rule => qr"^$pred?F2F$ftz$x2x$rnd$round$sat $r0, $cr20;"o, } ], F2I => [ { type => $qtrT, code => 0x5cb0000000000000, rule => qr"^$pred?F2I$ftz$x2x$round $r0, $cr20;"o, } ], I2F => [ { type => $qtrT, code => 0x5cb8000000000000, rule => qr"^$pred?I2F$x2x$rnd $r0, $cr20;"o, } ], - I2I => [ { type => $qtrT, code => 0x5ce0000000000000, rule => qr"^$pred?I2I$x2x$sat $r0, $cr20;"o, } ], + I2I => [ { type => $qtrT, code => 0x5ce0000000000000, rule => qr"^$pred?I2I$x2x$sat $r0cc, $cr20;"o, } ], #Movement Instructions MOV => [ { type => $x32T, code => 0x5c98078000000000, rule => qr"^$pred?MOV $r0, $icr20;"o, } ], @@ -470,7 +470,7 @@ PSET, PSETP FMNMX, FSET, FSETP, DMNMX, DSET, DSETP, IMNMX, ISET, ISETP, SEL, PSET, PSETP, BAR, VOTE 0x0000040000000000 p39not -IADD, IADD3, XMAD, LEA, IMNMX +IADD, IADD3, XMAD, LEA, IMNMX, I2I 0x0000800000000000 CC IADD32I @@ -527,37 +527,37 @@ PSETP, PSET: bool2 CSETP, CSET: ccbool 0x0000000000000000 F -0x0000010000000000 LT -0x0000020000000000 EQ -0x0000030000000000 LE -0x0000040000000000 GT -0x0000050000000000 NE -0x0000060000000000 GE -0x0000070000000000 NUM -0x0000080000000000 NAN -0x0000090000000000 LTU -0x00000a0000000000 EQU -0x00000b0000000000 LEU -0x00000c0000000000 GTU -0x00000d0000000000 NEU -0x00000e0000000000 GEU -0x00000f0000000000 UNK -0x0000100000000000 OFF -0x0000110000000000 LO -0x0000120000000000 SFF -0x0000130000000000 LS -0x0000140000000000 HI -0x0000150000000000 SFT -0x0000160000000000 HS -0x0000170000000000 OFT -0x0000180000000000 CSM_TA -0x0000190000000000 CSM_TR -0x00001a0000000000 CSM_MX -0x00001b0000000000 FCSM_TA -0x00001c0000000000 FCSM_TR -0x00001d0000000000 FCSM_MX -0x00001e0000000000 RLE -0x00001f0000000000 RGT +0x0000000000000100 LT +0x0000000000000200 EQ +0x0000000000000300 LE +0x0000000000000400 GT +0x0000000000000500 NE +0x0000000000000600 GE +0x0000000000000700 NUM +0x0000000000000800 NAN +0x0000000000000900 LTU +0x0000000000000a00 EQU +0x0000000000000b00 LEU +0x0000000000000c00 GTU +0x0000000000000d00 NEU +0x0000000000000e00 GEU +0x0000000000000f00 UNK +0x0000000000001000 OFF +0x0000000000001100 LO +0x0000000000001200 SFF +0x0000000000001300 LS +0x0000000000001400 HI +0x0000000000001500 SFT +0x0000000000001600 HS +0x0000000000001700 OFT +0x0000000000001800 CSM_TA +0x0000000000001900 CSM_TR +0x0000000000001a00 CSM_MX +0x0000000000001b00 FCSM_TA +0x0000000000001c00 FCSM_TR +0x0000000000001d00 FCSM_MX +0x0000000000001e00 RLE +0x0000000000001f00 RGT CSETP, CSET: bool2 0x0000000000000000 AND