Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit 92e29fe

Browse files
committed
Implemented CSETP and CSET
1 parent 0088275 commit 92e29fe

File tree

1 file changed

+42
-5
lines changed

1 file changed

+42
-5
lines changed

lib/MaxAs/MaxAsGrammar.pm

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ my $fcmp = qr"(?<cmp>\.LT|\.EQ|\.LE|\.GT|\.NE|\.GE|\.NUM|\.NAN|\.LTU|\.EQU|\.LE
214214
my $icmp = qr"\.(?<cmp>LT|EQ|LE|GT|NE|GE)";
215215
my $bool = qr"\.(?<bool>AND|OR|XOR|PASS_B)";
216216
my $bool2 = qr"\.(?<bool2>AND|OR|XOR)";
217+
my $ccbool = qr"\.(?<ccbool>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)";
217218
my $func = qr"\.(?<func>COS|SIN|EX2|LG2|RCP|RSQ|RCP64H|RSQ64H)";
218219
my $rro = qr"\.(?<func>SINCOS|EX2)";
219220
my $add3 = qr"(?:\.(?<type>X|RS|LS))?";
@@ -363,8 +364,8 @@ our %grammar =
363364
#Predicate/CC Instructions
364365
PSET => [ { type => $cmpT, code => 0x5088000000000000, rule => qr"^$pred?PSET$bool2$bool $r0, $p12, $p29, $p39;"o, } ],
365366
PSETP => [ { type => $cmpT, code => 0x5090000000000000, rule => qr"^$pred?PSETP$bool2$bool $p3, $p0, $p12, $p29, $p39;"o, } ],
366-
CSET => [ { type => $x32T, code => 0x0000000000000000, rule => qr"^$pred?CSET[^;]*;"o, } ], #TODO
367-
CSETP => [ { type => $x32T, code => 0x0000000000000000, rule => qr"^$pred?CSETP[^;]*;"o, } ], #TODO
367+
CSET => [ { type => $x32T, code => 0x5098000000000000, rule => qr"^$pred?CSET$ccbool$bool2 $r0, $p39;"o, } ],
368+
CSETP => [ { type => $x32T, code => 0x50a0000000000000, rule => qr"^$pred?CSETP$ccbool$bool2 $p3, $p0, $p39;"o, } ],
368369
P2R => [ { type => $x32T, code => 0x38e8000000000000, rule => qr"^$pred?P2R $r0, PR, $r8, $i20w7;"o, } ],
369370
R2P => [ { type => $shftT, code => 0x38f0000000000000, rule => qr"^$pred?R2P PR, $r8, $i20w7;"o, } ],
370371

@@ -524,6 +525,45 @@ PSETP, PSET: bool2
524525
0x0000000001000000 OR
525526
0x0000000002000000 XOR
526527
528+
CSETP, CSET: ccbool
529+
0x0000000000000000 F
530+
0x0000010000000000 LT
531+
0x0000020000000000 EQ
532+
0x0000030000000000 LE
533+
0x0000040000000000 GT
534+
0x0000050000000000 NE
535+
0x0000060000000000 GE
536+
0x0000070000000000 NUM
537+
0x0000080000000000 NAN
538+
0x0000090000000000 LTU
539+
0x00000a0000000000 EQU
540+
0x00000b0000000000 LEU
541+
0x00000c0000000000 GTU
542+
0x00000d0000000000 NEU
543+
0x00000e0000000000 GEU
544+
0x00000f0000000000 UNK
545+
0x0000100000000000 OFF
546+
0x0000110000000000 LO
547+
0x0000120000000000 SFF
548+
0x0000130000000000 LS
549+
0x0000140000000000 HI
550+
0x0000150000000000 SFT
551+
0x0000160000000000 HS
552+
0x0000170000000000 OFT
553+
0x0000180000000000 CSM_TA
554+
0x0000190000000000 CSM_TR
555+
0x00001a0000000000 CSM_MX
556+
0x00001b0000000000 FCSM_TA
557+
0x00001c0000000000 FCSM_TR
558+
0x00001d0000000000 FCSM_MX
559+
0x00001e0000000000 RLE
560+
0x00001f0000000000 RGT
561+
562+
CSETP, CSET: bool2
563+
0x0000000000000000 AND
564+
0x0000000001000000 OR
565+
0x0000000002000000 XOR
566+
527567
ISETP, ISET
528568
0x0000080000000000 X
529569
@@ -1472,6 +1512,3 @@ sub getAddrVecRegisters
14721512
}
14731513

14741514
__END__
1475-
1476-
1477-

0 commit comments

Comments
 (0)