Branch Coverage

blib/lib/CPU/x86_64/InstructionWriter.pm
Criterion Covered Total %
branch 282 404 69.8


line true false branch
106 61 78 unless (defined $name and defined $labels->{$name})
108 0 61 unless defined $name
117 0 61 unless @_ == 2
121 0 61 unless defined $_[1]
126 61 0 unless ref $label
130 0 61 if defined $label->{'offset'}
162 0 1 if $bytes & $bytes - 1
169 0 4 unless length $fill == 1
185 0 9 unless $bits ||= $register_bits{$dst} || $register_bits{$src}
191 8 0 $register_bits{$dst} ? :
0 8 ref $dst && ref($dst)->can('value') ? :
1 8 ref $dst eq 'ARRAY' ? :
0 9 &looks_like_number($dst) ? :
196 3 0 $register_bits{$src} ? :
0 3 ref $src && ref($src)->can('value') ? :
5 3 ref $src eq 'ARRAY' ? :
1 8 &looks_like_number($src) ? :
206 0 0 unless $bits ||= $opr_type
209 0 0 &looks_like_number($operand) ? :
0 0 ref $operand eq 'ARRAY' ? :
0 0 $opr_type ? :
220 35 82 defined $_[1] ? :
225 0 0 defined $_[1] ? :
231 0 2 unless @_ == 2
232 0 2 unless defined $_[1]
236 2 0 unless ref $label
242 0 2 unless defined $label->{'offset'}
244 0 2 unless $ofs >> 31 == $ofs >> 32
253 0 0 ref $immed ? :
254 0 0 if ref $immed
272 2 1 if ($pop_bytes) { }
273 0 2 ref $pop_bytes ? :
274 0 2 if ref $pop_bytes
285 0 4 unless @_ == 2
286 0 4 unless defined $_[1]
290 4 0 unless ref $label
296 0 10 unless defined $label->{'offset'}
299 5 5 $short ? :
413 16 169 if (CORE::not defined $mem->[0] and $mem->[1] and CORE::not defined $mem->[2] and $mem->[1] > 2147483647 || ref $mem->[1])
415 4 4 $bits == 16 ? :
4 8 $bits == 32 ? :
4 12 $bits == 64 ? :
16 0 if (lc $reg eq ($bits == 64 ? "rax" : ($bits == 32 ? "eax" : ($bits == 16 ? "ax" : "al"))))
417 4 12 if $bits == 64
418 4 12 if $bits == 16
420 8 8 ref $disp ? :
421 8 8 if (CORE::not defined $val) { }
426 0 14 unless defined $v
427 2 6 $bits == 16 ? :
2 6 $bits == 64 ? :
6 8 $v > 2147483647 ? :
439 884 2648 if $bits == 64
440 884 1764 if $bits == 32
441 882 882 if $bits == 16
442 882 0 if $bits == 8
456 28 35 if (CORE::not $immed >> 32) { }
21 14 elsif ($immed >> 31 == -1) { }
457 12 16 $reg > 7 ? :
473 24 33 if $reg > 7
481 21 28 if $reg > 7
489 20 35 if (CORE::not defined $reg) { }
492 25 10 if $reg > 3
944 3 4 $reg > 7 ? :
951 0 8 ref $imm ? :
952 6 2 $val >> 7 == $val >> 8 ? :
953 0 8 if ref $imm
967 3 4 $reg > 7 ? :
977 28 0 if (CORE::not ref $varspace || ref $nesting) { }
981 0 0 ref $varspace ? :
982 0 0 if ref $varspace
984 0 0 ref $nesting ? :
985 0 0 if ref $nesting
1084 0 6 defined $immed ? :
0 8 defined $immed ? :
6 8 $rex ? :
1111 372 274 $rex ? :
1122 354 248 $rex ? :
1134 0 420 if (CORE::not defined $reg1 && defined $reg2) { }
1139 0 0 if ($old_reg1 and $old_reg1 > 3 or $old_reg2 and $old_reg2 > 3)
1145 380 40 $reg1 > 3 || $reg2 > 3 ? :
1160 72 140 if (CORE::not defined $reg2) { }
1166 100 40 $reg2 > 3 ? :
1183 9263 0 if defined $reg
1185 7058 2205 if defined $base_reg
1187 7057 2206 if defined $index_reg
1196 9013 0 if defined $reg
1198 6867 2146 if defined $base_reg
1200 6865 2148 if defined $index_reg
1208 9009 0 if defined $reg
1210 6864 2145 if defined $base_reg
1212 6864 2145 if defined $index_reg
1221 5568 1740 if defined $base_reg
1223 5568 1740 if defined $index_reg
1227 0 7308 if (CORE::not defined $reg) { }
5040 2268 elsif ($reg > 3) { }
1229 0 0 unless CORE::not $rex and ($base_reg // 0) < 8 and ($index_reg // 0) < 8
1243 960 300 if defined $base_reg
1245 960 300 if defined $index_reg
1260 48 15 if defined $base_reg
1262 48 15 if defined $index_reg
1264 0 63 ref $disp ? :
63 0 defined $disp ? :
1269 48 15 if defined $base_reg
1271 48 15 if defined $index_reg
1274 0 63 ref $disp ? :
63 0 defined $disp ? :
1279 48 15 if defined $base_reg
1281 48 15 if defined $index_reg
1283 0 63 ref $disp ? :
63 0 defined $disp ? :
1288 48 15 if defined $base_reg
1290 48 15 if defined $index_reg
1292 0 63 ref $disp ? :
63 0 defined $disp ? :
1310 38261 11964 if (defined $base_reg) { }
1314 3188 6380 ($base_reg & 7) == 5 ? :
9564 0 $disp >> 31 == $disp >> 32 ? :
19129 9564 $disp >> 7 == $disp >> 8 ? :
9568 28693 !$disp ? :
1319 28694 9567 if (defined $index_reg) { }
3188 6379 elsif (($base_reg & 7) == 4) { }
1321 0 28694 unless $index_reg != 4
1336 0 11964 unless $disp >> 31 == $disp >> 32
1339 9564 2400 if (defined $index_reg) { }
1341 0 9564 unless $index_reg != 4
1350 4284 45941 if defined $immed
1353 31086 19139 $rex ? :
1389 132 22 $reg ? :
154 0 $value >> 31 == $value >> 32 ? :
294 154 defined $opcode8 && $value >> 7 == $value >> 8 ? :
1413 126 168 $rex ? :
66 22 $reg ? :
66 88 $rex ? :
154 0 $value >> 32 == $value >> 33 ? :
294 154 defined $opcode8 && ($value >> 7 == $value >> 8 || $value >> 8 == 16777215) ? :
1439 105 140 $rex ? :
63 21 $reg ? :
63 84 $rex ? :
147 0 $value >> 16 == $value >> 17 ? :
245 147 defined $opcode8 && ($value >> 7 == $value >> 8 || $value >> 8 == 255) ? :
1468 0 280 ref $immed ? :
1469 0 280 unless $value >> 8 == $value >> 9
1470 0 280 if (CORE::not defined $reg) { }
40 240 elsif (CORE::not $reg) { }
200 40 elsif ($reg > 3) { }
1480 0 280 if ref $immed
1488 3072 960 if defined $base_reg
1490 3072 960 if defined $index_reg
1492 4032 0 defined $disp ? :
1497 1386 0 $value >> 31 == $value >> 32 ? :
2646 1386 defined $opcode8 && $value >> 7 == $value >> 8 ? :
1507 3072 960 if defined $base_reg
1509 3072 960 if defined $index_reg
1511 4032 0 defined $disp ? :
1516 1386 0 $value >> 32 == $value >> 33 ? :
2646 1386 defined $opcode8 && ($value >> 7 == $value >> 8 || $value >> 8 == 16777215) ? :
1526 2688 840 if defined $base_reg
1528 2688 840 if defined $index_reg
1531 3528 0 defined $disp ? :
1536 1323 0 $value >> 16 == $value >> 17 ? :
2205 1323 defined $opcode8 && ($value >> 7 == $value >> 8 || $value >> 8 == 255) ? :
1546 1920 600 if defined $base_reg
1548 1920 600 if defined $index_reg
1550 2520 0 defined $disp ? :
1555 0 2520 unless $value >> 8 == $value >> 9
1574 96 636 $immed eq 1 ? :
1576 147 165 $bits == 16 ? :
189 312 $bits == 32 ? :
231 501 $bits == 64 ? :
1582 636 96 unless ($immed eq 1)
1583 0 636 ref $immed ? :
1584 0 636 if ref $immed
1601 756 3024 $immed eq 1 ? :
1603 945 945 $bits == 16 ? :
945 1890 $bits == 32 ? :
945 2835 $bits == 64 ? :
1609 3024 756 unless ($immed eq 1)
1610 0 3024 ref $immed ? :
1611 0 3024 if ref $immed
1629 0 64 unless defined $_[2]
1633 64 0 unless ref $label
1639 0 160 unless defined $label->{'offset'}
1642 80 80 $short ? :
1660 8 0 unless ref $label
1666 0 8 unless defined $label->{'offset'}
1668 0 8 unless $ofs >> 7 == $ofs >> 8
1678 0 51729 if (ref $u and ref $u ne 'SCALAR') { }
1679 0 0 unless ref($u)->can("value")
1721 0 90 if ($location < 0) { }
1731 0 90 if ($self->{'debug'})
1735 0 0 if $caller[0] ne "CPU::x86_64::InstructionWriter"
1747 0 0 unless defined $v
1749 0 0 $bits <= 64 ? :
0 0 $bits <= 32 ? :
0 0 $bits <= 16 ? :
0 0 $bits <= 8 ? :
1750 0 0 unless $bits == 64 or $v >> $bits == $v >> $bits + 1
1775 17 326 if $ofs
1779 129 214 unless my $fn = $p->{'encode'}
1787 44 170 if (length $enc != $p->{'len'})
1794 0 214 if ($@)
1795 0 0 if ($p->{'caller'}) { }