From 94dd08effd3907a945e92d07670607ac52d96d39 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Sun, 5 Jun 2022 11:07:43 +0200 Subject: vhdl-ieee-numeric: recognize is_x, to_x01, to_ux01 and to_x01z --- pyGHDL/libghdl/vhdl/nodes.py | 460 +++++++++++++++++++++-------------------- src/vhdl/vhdl-ieee-numeric.adb | 46 ++++- src/vhdl/vhdl-nodes.ads | 12 ++ 3 files changed, 284 insertions(+), 234 deletions(-) diff --git a/pyGHDL/libghdl/vhdl/nodes.py b/pyGHDL/libghdl/vhdl/nodes.py index 6b818713d..22e2f8d08 100644 --- a/pyGHDL/libghdl/vhdl/nodes.py +++ b/pyGHDL/libghdl/vhdl/nodes.py @@ -1644,232 +1644,240 @@ class Iir_Predefined(IntEnum): Ieee_Numeric_Std_Match_Suv = 447 Ieee_Numeric_Std_To_01_Uns = 448 Ieee_Numeric_Std_To_01_Sgn = 449 - Ieee_Numeric_Bit_Toint_Uns_Nat = 450 - Ieee_Numeric_Bit_Toint_Sgn_Int = 451 - Ieee_Numeric_Bit_Touns_Nat_Nat_Uns = 452 - Ieee_Numeric_Bit_Touns_Nat_Uns_Uns = 453 - Ieee_Numeric_Bit_Tosgn_Int_Nat_Sgn = 454 - Ieee_Numeric_Bit_Tosgn_Int_Sgn_Sgn = 455 - Ieee_Numeric_Std_Unsigned_To_Integer_Slv_Nat = 456 - Ieee_Numeric_Std_Unsigned_To_Slv_Nat_Nat_Slv = 457 - Ieee_Math_Real_Ceil = 458 - Ieee_Math_Real_Floor = 459 - Ieee_Math_Real_Round = 460 - Ieee_Math_Real_Log2 = 461 - Ieee_Math_Real_Sin = 462 - Ieee_Math_Real_Cos = 463 - Ieee_Math_Real_Arctan = 464 - Ieee_Math_Real_Pow = 465 - Ieee_Std_Logic_Unsigned_Add_Slv_Slv = 466 - Ieee_Std_Logic_Unsigned_Add_Slv_Int = 467 - Ieee_Std_Logic_Unsigned_Add_Int_Slv = 468 - Ieee_Std_Logic_Unsigned_Add_Slv_Log = 469 - Ieee_Std_Logic_Unsigned_Add_Log_Slv = 470 - Ieee_Std_Logic_Unsigned_Sub_Slv_Slv = 471 - Ieee_Std_Logic_Unsigned_Sub_Slv_Int = 472 - Ieee_Std_Logic_Unsigned_Sub_Int_Slv = 473 - Ieee_Std_Logic_Unsigned_Sub_Slv_Log = 474 - Ieee_Std_Logic_Unsigned_Sub_Log_Slv = 475 - Ieee_Std_Logic_Unsigned_Id_Slv = 476 - Ieee_Std_Logic_Unsigned_Mul_Slv_Slv = 477 - Ieee_Std_Logic_Unsigned_Lt_Slv_Slv = 478 - Ieee_Std_Logic_Unsigned_Lt_Slv_Int = 479 - Ieee_Std_Logic_Unsigned_Lt_Int_Slv = 480 - Ieee_Std_Logic_Unsigned_Le_Slv_Slv = 481 - Ieee_Std_Logic_Unsigned_Le_Slv_Int = 482 - Ieee_Std_Logic_Unsigned_Le_Int_Slv = 483 - Ieee_Std_Logic_Unsigned_Gt_Slv_Slv = 484 - Ieee_Std_Logic_Unsigned_Gt_Slv_Int = 485 - Ieee_Std_Logic_Unsigned_Gt_Int_Slv = 486 - Ieee_Std_Logic_Unsigned_Ge_Slv_Slv = 487 - Ieee_Std_Logic_Unsigned_Ge_Slv_Int = 488 - Ieee_Std_Logic_Unsigned_Ge_Int_Slv = 489 - Ieee_Std_Logic_Unsigned_Eq_Slv_Slv = 490 - Ieee_Std_Logic_Unsigned_Eq_Slv_Int = 491 - Ieee_Std_Logic_Unsigned_Eq_Int_Slv = 492 - Ieee_Std_Logic_Unsigned_Ne_Slv_Slv = 493 - Ieee_Std_Logic_Unsigned_Ne_Slv_Int = 494 - Ieee_Std_Logic_Unsigned_Ne_Int_Slv = 495 - Ieee_Std_Logic_Unsigned_Conv_Integer = 496 - Ieee_Std_Logic_Unsigned_Shl = 497 - Ieee_Std_Logic_Unsigned_Shr = 498 - Ieee_Std_Logic_Signed_Add_Slv_Slv = 499 - Ieee_Std_Logic_Signed_Add_Slv_Int = 500 - Ieee_Std_Logic_Signed_Add_Int_Slv = 501 - Ieee_Std_Logic_Signed_Add_Slv_Log = 502 - Ieee_Std_Logic_Signed_Add_Log_Slv = 503 - Ieee_Std_Logic_Signed_Sub_Slv_Slv = 504 - Ieee_Std_Logic_Signed_Sub_Slv_Int = 505 - Ieee_Std_Logic_Signed_Sub_Int_Slv = 506 - Ieee_Std_Logic_Signed_Sub_Slv_Log = 507 - Ieee_Std_Logic_Signed_Sub_Log_Slv = 508 - Ieee_Std_Logic_Signed_Id_Slv = 509 - Ieee_Std_Logic_Signed_Neg_Slv = 510 - Ieee_Std_Logic_Signed_Abs_Slv = 511 - Ieee_Std_Logic_Signed_Mul_Slv_Slv = 512 - Ieee_Std_Logic_Signed_Lt_Slv_Slv = 513 - Ieee_Std_Logic_Signed_Lt_Slv_Int = 514 - Ieee_Std_Logic_Signed_Lt_Int_Slv = 515 - Ieee_Std_Logic_Signed_Le_Slv_Slv = 516 - Ieee_Std_Logic_Signed_Le_Slv_Int = 517 - Ieee_Std_Logic_Signed_Le_Int_Slv = 518 - Ieee_Std_Logic_Signed_Gt_Slv_Slv = 519 - Ieee_Std_Logic_Signed_Gt_Slv_Int = 520 - Ieee_Std_Logic_Signed_Gt_Int_Slv = 521 - Ieee_Std_Logic_Signed_Ge_Slv_Slv = 522 - Ieee_Std_Logic_Signed_Ge_Slv_Int = 523 - Ieee_Std_Logic_Signed_Ge_Int_Slv = 524 - Ieee_Std_Logic_Signed_Eq_Slv_Slv = 525 - Ieee_Std_Logic_Signed_Eq_Slv_Int = 526 - Ieee_Std_Logic_Signed_Eq_Int_Slv = 527 - Ieee_Std_Logic_Signed_Ne_Slv_Slv = 528 - Ieee_Std_Logic_Signed_Ne_Slv_Int = 529 - Ieee_Std_Logic_Signed_Ne_Int_Slv = 530 - Ieee_Std_Logic_Signed_Conv_Integer = 531 - Ieee_Std_Logic_Signed_Shl = 532 - Ieee_Std_Logic_Signed_Shr = 533 - Ieee_Std_Logic_Arith_Conv_Unsigned_Int = 534 - Ieee_Std_Logic_Arith_Conv_Unsigned_Uns = 535 - Ieee_Std_Logic_Arith_Conv_Unsigned_Sgn = 536 - Ieee_Std_Logic_Arith_Conv_Unsigned_Log = 537 - Ieee_Std_Logic_Arith_Conv_Integer_Int = 538 - Ieee_Std_Logic_Arith_Conv_Integer_Uns = 539 - Ieee_Std_Logic_Arith_Conv_Integer_Sgn = 540 - Ieee_Std_Logic_Arith_Conv_Integer_Log = 541 - Ieee_Std_Logic_Arith_Conv_Vector_Int = 542 - Ieee_Std_Logic_Arith_Conv_Vector_Uns = 543 - Ieee_Std_Logic_Arith_Conv_Vector_Sgn = 544 - Ieee_Std_Logic_Arith_Conv_Vector_Log = 545 - Ieee_Std_Logic_Arith_Ext = 546 - Ieee_Std_Logic_Arith_Sxt = 547 - Ieee_Std_Logic_Arith_Id_Uns_Uns = 548 - Ieee_Std_Logic_Arith_Id_Sgn_Sgn = 549 - Ieee_Std_Logic_Arith_Neg_Sgn_Sgn = 550 - Ieee_Std_Logic_Arith_Abs_Sgn_Sgn = 551 - Ieee_Std_Logic_Arith_Shl_Uns = 552 - Ieee_Std_Logic_Arith_Shl_Sgn = 553 - Ieee_Std_Logic_Arith_Shr_Uns = 554 - Ieee_Std_Logic_Arith_Shr_Sgn = 555 - Ieee_Std_Logic_Arith_Id_Uns_Slv = 556 - Ieee_Std_Logic_Arith_Id_Sgn_Slv = 557 - Ieee_Std_Logic_Arith_Neg_Sgn_Slv = 558 - Ieee_Std_Logic_Arith_Abs_Sgn_Slv = 559 - Ieee_Std_Logic_Arith_Mul_Uns_Uns_Uns = 560 - Ieee_Std_Logic_Arith_Mul_Sgn_Sgn_Sgn = 561 - Ieee_Std_Logic_Arith_Mul_Sgn_Uns_Sgn = 562 - Ieee_Std_Logic_Arith_Mul_Uns_Sgn_Sgn = 563 - Ieee_Std_Logic_Arith_Mul_Uns_Uns_Slv = 564 - Ieee_Std_Logic_Arith_Mul_Sgn_Sgn_Slv = 565 - Ieee_Std_Logic_Arith_Mul_Sgn_Uns_Slv = 566 - Ieee_Std_Logic_Arith_Mul_Uns_Sgn_Slv = 567 - Ieee_Std_Logic_Arith_Add_Uns_Uns_Uns = 568 - Ieee_Std_Logic_Arith_Add_Sgn_Sgn_Sgn = 569 - Ieee_Std_Logic_Arith_Add_Uns_Sgn_Sgn = 570 - Ieee_Std_Logic_Arith_Add_Sgn_Uns_Sgn = 571 - Ieee_Std_Logic_Arith_Add_Uns_Int_Uns = 572 - Ieee_Std_Logic_Arith_Add_Int_Uns_Uns = 573 - Ieee_Std_Logic_Arith_Add_Sgn_Int_Sgn = 574 - Ieee_Std_Logic_Arith_Add_Int_Sgn_Sgn = 575 - Ieee_Std_Logic_Arith_Add_Uns_Log_Uns = 576 - Ieee_Std_Logic_Arith_Add_Log_Uns_Uns = 577 - Ieee_Std_Logic_Arith_Add_Sgn_Log_Sgn = 578 - Ieee_Std_Logic_Arith_Add_Log_Sgn_Sgn = 579 - Ieee_Std_Logic_Arith_Add_Uns_Uns_Slv = 580 - Ieee_Std_Logic_Arith_Add_Sgn_Sgn_Slv = 581 - Ieee_Std_Logic_Arith_Add_Uns_Sgn_Slv = 582 - Ieee_Std_Logic_Arith_Add_Sgn_Uns_Slv = 583 - Ieee_Std_Logic_Arith_Add_Uns_Int_Slv = 584 - Ieee_Std_Logic_Arith_Add_Int_Uns_Slv = 585 - Ieee_Std_Logic_Arith_Add_Sgn_Int_Slv = 586 - Ieee_Std_Logic_Arith_Add_Int_Sgn_Slv = 587 - Ieee_Std_Logic_Arith_Add_Uns_Log_Slv = 588 - Ieee_Std_Logic_Arith_Add_Log_Uns_Slv = 589 - Ieee_Std_Logic_Arith_Add_Sgn_Log_Slv = 590 - Ieee_Std_Logic_Arith_Add_Log_Sgn_Slv = 591 - Ieee_Std_Logic_Arith_Sub_Uns_Uns_Uns = 592 - Ieee_Std_Logic_Arith_Sub_Sgn_Sgn_Sgn = 593 - Ieee_Std_Logic_Arith_Sub_Uns_Sgn_Sgn = 594 - Ieee_Std_Logic_Arith_Sub_Sgn_Uns_Sgn = 595 - Ieee_Std_Logic_Arith_Sub_Uns_Int_Uns = 596 - Ieee_Std_Logic_Arith_Sub_Int_Uns_Uns = 597 - Ieee_Std_Logic_Arith_Sub_Sgn_Int_Sgn = 598 - Ieee_Std_Logic_Arith_Sub_Int_Sgn_Sgn = 599 - Ieee_Std_Logic_Arith_Sub_Uns_Log_Uns = 600 - Ieee_Std_Logic_Arith_Sub_Log_Uns_Uns = 601 - Ieee_Std_Logic_Arith_Sub_Sgn_Log_Sgn = 602 - Ieee_Std_Logic_Arith_Sub_Log_Sgn_Sgn = 603 - Ieee_Std_Logic_Arith_Sub_Uns_Uns_Slv = 604 - Ieee_Std_Logic_Arith_Sub_Sgn_Sgn_Slv = 605 - Ieee_Std_Logic_Arith_Sub_Uns_Sgn_Slv = 606 - Ieee_Std_Logic_Arith_Sub_Sgn_Uns_Slv = 607 - Ieee_Std_Logic_Arith_Sub_Uns_Int_Slv = 608 - Ieee_Std_Logic_Arith_Sub_Int_Uns_Slv = 609 - Ieee_Std_Logic_Arith_Sub_Sgn_Int_Slv = 610 - Ieee_Std_Logic_Arith_Sub_Int_Sgn_Slv = 611 - Ieee_Std_Logic_Arith_Sub_Uns_Log_Slv = 612 - Ieee_Std_Logic_Arith_Sub_Log_Uns_Slv = 613 - Ieee_Std_Logic_Arith_Sub_Sgn_Log_Slv = 614 - Ieee_Std_Logic_Arith_Sub_Log_Sgn_Slv = 615 - Ieee_Std_Logic_Arith_Lt_Uns_Uns = 616 - Ieee_Std_Logic_Arith_Lt_Sgn_Sgn = 617 - Ieee_Std_Logic_Arith_Lt_Uns_Sgn = 618 - Ieee_Std_Logic_Arith_Lt_Sgn_Uns = 619 - Ieee_Std_Logic_Arith_Lt_Uns_Int = 620 - Ieee_Std_Logic_Arith_Lt_Int_Uns = 621 - Ieee_Std_Logic_Arith_Lt_Sgn_Int = 622 - Ieee_Std_Logic_Arith_Lt_Int_Sgn = 623 - Ieee_Std_Logic_Arith_Le_Uns_Uns = 624 - Ieee_Std_Logic_Arith_Le_Sgn_Sgn = 625 - Ieee_Std_Logic_Arith_Le_Uns_Sgn = 626 - Ieee_Std_Logic_Arith_Le_Sgn_Uns = 627 - Ieee_Std_Logic_Arith_Le_Uns_Int = 628 - Ieee_Std_Logic_Arith_Le_Int_Uns = 629 - Ieee_Std_Logic_Arith_Le_Sgn_Int = 630 - Ieee_Std_Logic_Arith_Le_Int_Sgn = 631 - Ieee_Std_Logic_Arith_Gt_Uns_Uns = 632 - Ieee_Std_Logic_Arith_Gt_Sgn_Sgn = 633 - Ieee_Std_Logic_Arith_Gt_Uns_Sgn = 634 - Ieee_Std_Logic_Arith_Gt_Sgn_Uns = 635 - Ieee_Std_Logic_Arith_Gt_Uns_Int = 636 - Ieee_Std_Logic_Arith_Gt_Int_Uns = 637 - Ieee_Std_Logic_Arith_Gt_Sgn_Int = 638 - Ieee_Std_Logic_Arith_Gt_Int_Sgn = 639 - Ieee_Std_Logic_Arith_Ge_Uns_Uns = 640 - Ieee_Std_Logic_Arith_Ge_Sgn_Sgn = 641 - Ieee_Std_Logic_Arith_Ge_Uns_Sgn = 642 - Ieee_Std_Logic_Arith_Ge_Sgn_Uns = 643 - Ieee_Std_Logic_Arith_Ge_Uns_Int = 644 - Ieee_Std_Logic_Arith_Ge_Int_Uns = 645 - Ieee_Std_Logic_Arith_Ge_Sgn_Int = 646 - Ieee_Std_Logic_Arith_Ge_Int_Sgn = 647 - Ieee_Std_Logic_Arith_Eq_Uns_Uns = 648 - Ieee_Std_Logic_Arith_Eq_Sgn_Sgn = 649 - Ieee_Std_Logic_Arith_Eq_Uns_Sgn = 650 - Ieee_Std_Logic_Arith_Eq_Sgn_Uns = 651 - Ieee_Std_Logic_Arith_Eq_Uns_Int = 652 - Ieee_Std_Logic_Arith_Eq_Int_Uns = 653 - Ieee_Std_Logic_Arith_Eq_Sgn_Int = 654 - Ieee_Std_Logic_Arith_Eq_Int_Sgn = 655 - Ieee_Std_Logic_Arith_Ne_Uns_Uns = 656 - Ieee_Std_Logic_Arith_Ne_Sgn_Sgn = 657 - Ieee_Std_Logic_Arith_Ne_Uns_Sgn = 658 - Ieee_Std_Logic_Arith_Ne_Sgn_Uns = 659 - Ieee_Std_Logic_Arith_Ne_Uns_Int = 660 - Ieee_Std_Logic_Arith_Ne_Int_Uns = 661 - Ieee_Std_Logic_Arith_Ne_Sgn_Int = 662 - Ieee_Std_Logic_Arith_Ne_Int_Sgn = 663 - Ieee_Std_Logic_Misc_And_Reduce_Slv = 664 - Ieee_Std_Logic_Misc_And_Reduce_Suv = 665 - Ieee_Std_Logic_Misc_Nand_Reduce_Slv = 666 - Ieee_Std_Logic_Misc_Nand_Reduce_Suv = 667 - Ieee_Std_Logic_Misc_Or_Reduce_Slv = 668 - Ieee_Std_Logic_Misc_Or_Reduce_Suv = 669 - Ieee_Std_Logic_Misc_Nor_Reduce_Slv = 670 - Ieee_Std_Logic_Misc_Nor_Reduce_Suv = 671 - Ieee_Std_Logic_Misc_Xor_Reduce_Slv = 672 - Ieee_Std_Logic_Misc_Xor_Reduce_Suv = 673 - Ieee_Std_Logic_Misc_Xnor_Reduce_Slv = 674 - Ieee_Std_Logic_Misc_Xnor_Reduce_Suv = 675 + Ieee_Numeric_Std_To_X01_Uns = 450 + Ieee_Numeric_Std_To_X01_Sgn = 451 + Ieee_Numeric_Std_To_X01Z_Uns = 452 + Ieee_Numeric_Std_To_X01Z_Sgn = 453 + Ieee_Numeric_Std_To_UX01_Uns = 454 + Ieee_Numeric_Std_To_UX01_Sgn = 455 + Ieee_Numeric_Std_Is_X_Uns = 456 + Ieee_Numeric_Std_Is_X_Sgn = 457 + Ieee_Numeric_Bit_Toint_Uns_Nat = 458 + Ieee_Numeric_Bit_Toint_Sgn_Int = 459 + Ieee_Numeric_Bit_Touns_Nat_Nat_Uns = 460 + Ieee_Numeric_Bit_Touns_Nat_Uns_Uns = 461 + Ieee_Numeric_Bit_Tosgn_Int_Nat_Sgn = 462 + Ieee_Numeric_Bit_Tosgn_Int_Sgn_Sgn = 463 + Ieee_Numeric_Std_Unsigned_To_Integer_Slv_Nat = 464 + Ieee_Numeric_Std_Unsigned_To_Slv_Nat_Nat_Slv = 465 + Ieee_Math_Real_Ceil = 466 + Ieee_Math_Real_Floor = 467 + Ieee_Math_Real_Round = 468 + Ieee_Math_Real_Log2 = 469 + Ieee_Math_Real_Sin = 470 + Ieee_Math_Real_Cos = 471 + Ieee_Math_Real_Arctan = 472 + Ieee_Math_Real_Pow = 473 + Ieee_Std_Logic_Unsigned_Add_Slv_Slv = 474 + Ieee_Std_Logic_Unsigned_Add_Slv_Int = 475 + Ieee_Std_Logic_Unsigned_Add_Int_Slv = 476 + Ieee_Std_Logic_Unsigned_Add_Slv_Log = 477 + Ieee_Std_Logic_Unsigned_Add_Log_Slv = 478 + Ieee_Std_Logic_Unsigned_Sub_Slv_Slv = 479 + Ieee_Std_Logic_Unsigned_Sub_Slv_Int = 480 + Ieee_Std_Logic_Unsigned_Sub_Int_Slv = 481 + Ieee_Std_Logic_Unsigned_Sub_Slv_Log = 482 + Ieee_Std_Logic_Unsigned_Sub_Log_Slv = 483 + Ieee_Std_Logic_Unsigned_Id_Slv = 484 + Ieee_Std_Logic_Unsigned_Mul_Slv_Slv = 485 + Ieee_Std_Logic_Unsigned_Lt_Slv_Slv = 486 + Ieee_Std_Logic_Unsigned_Lt_Slv_Int = 487 + Ieee_Std_Logic_Unsigned_Lt_Int_Slv = 488 + Ieee_Std_Logic_Unsigned_Le_Slv_Slv = 489 + Ieee_Std_Logic_Unsigned_Le_Slv_Int = 490 + Ieee_Std_Logic_Unsigned_Le_Int_Slv = 491 + Ieee_Std_Logic_Unsigned_Gt_Slv_Slv = 492 + Ieee_Std_Logic_Unsigned_Gt_Slv_Int = 493 + Ieee_Std_Logic_Unsigned_Gt_Int_Slv = 494 + Ieee_Std_Logic_Unsigned_Ge_Slv_Slv = 495 + Ieee_Std_Logic_Unsigned_Ge_Slv_Int = 496 + Ieee_Std_Logic_Unsigned_Ge_Int_Slv = 497 + Ieee_Std_Logic_Unsigned_Eq_Slv_Slv = 498 + Ieee_Std_Logic_Unsigned_Eq_Slv_Int = 499 + Ieee_Std_Logic_Unsigned_Eq_Int_Slv = 500 + Ieee_Std_Logic_Unsigned_Ne_Slv_Slv = 501 + Ieee_Std_Logic_Unsigned_Ne_Slv_Int = 502 + Ieee_Std_Logic_Unsigned_Ne_Int_Slv = 503 + Ieee_Std_Logic_Unsigned_Conv_Integer = 504 + Ieee_Std_Logic_Unsigned_Shl = 505 + Ieee_Std_Logic_Unsigned_Shr = 506 + Ieee_Std_Logic_Signed_Add_Slv_Slv = 507 + Ieee_Std_Logic_Signed_Add_Slv_Int = 508 + Ieee_Std_Logic_Signed_Add_Int_Slv = 509 + Ieee_Std_Logic_Signed_Add_Slv_Log = 510 + Ieee_Std_Logic_Signed_Add_Log_Slv = 511 + Ieee_Std_Logic_Signed_Sub_Slv_Slv = 512 + Ieee_Std_Logic_Signed_Sub_Slv_Int = 513 + Ieee_Std_Logic_Signed_Sub_Int_Slv = 514 + Ieee_Std_Logic_Signed_Sub_Slv_Log = 515 + Ieee_Std_Logic_Signed_Sub_Log_Slv = 516 + Ieee_Std_Logic_Signed_Id_Slv = 517 + Ieee_Std_Logic_Signed_Neg_Slv = 518 + Ieee_Std_Logic_Signed_Abs_Slv = 519 + Ieee_Std_Logic_Signed_Mul_Slv_Slv = 520 + Ieee_Std_Logic_Signed_Lt_Slv_Slv = 521 + Ieee_Std_Logic_Signed_Lt_Slv_Int = 522 + Ieee_Std_Logic_Signed_Lt_Int_Slv = 523 + Ieee_Std_Logic_Signed_Le_Slv_Slv = 524 + Ieee_Std_Logic_Signed_Le_Slv_Int = 525 + Ieee_Std_Logic_Signed_Le_Int_Slv = 526 + Ieee_Std_Logic_Signed_Gt_Slv_Slv = 527 + Ieee_Std_Logic_Signed_Gt_Slv_Int = 528 + Ieee_Std_Logic_Signed_Gt_Int_Slv = 529 + Ieee_Std_Logic_Signed_Ge_Slv_Slv = 530 + Ieee_Std_Logic_Signed_Ge_Slv_Int = 531 + Ieee_Std_Logic_Signed_Ge_Int_Slv = 532 + Ieee_Std_Logic_Signed_Eq_Slv_Slv = 533 + Ieee_Std_Logic_Signed_Eq_Slv_Int = 534 + Ieee_Std_Logic_Signed_Eq_Int_Slv = 535 + Ieee_Std_Logic_Signed_Ne_Slv_Slv = 536 + Ieee_Std_Logic_Signed_Ne_Slv_Int = 537 + Ieee_Std_Logic_Signed_Ne_Int_Slv = 538 + Ieee_Std_Logic_Signed_Conv_Integer = 539 + Ieee_Std_Logic_Signed_Shl = 540 + Ieee_Std_Logic_Signed_Shr = 541 + Ieee_Std_Logic_Arith_Conv_Unsigned_Int = 542 + Ieee_Std_Logic_Arith_Conv_Unsigned_Uns = 543 + Ieee_Std_Logic_Arith_Conv_Unsigned_Sgn = 544 + Ieee_Std_Logic_Arith_Conv_Unsigned_Log = 545 + Ieee_Std_Logic_Arith_Conv_Integer_Int = 546 + Ieee_Std_Logic_Arith_Conv_Integer_Uns = 547 + Ieee_Std_Logic_Arith_Conv_Integer_Sgn = 548 + Ieee_Std_Logic_Arith_Conv_Integer_Log = 549 + Ieee_Std_Logic_Arith_Conv_Vector_Int = 550 + Ieee_Std_Logic_Arith_Conv_Vector_Uns = 551 + Ieee_Std_Logic_Arith_Conv_Vector_Sgn = 552 + Ieee_Std_Logic_Arith_Conv_Vector_Log = 553 + Ieee_Std_Logic_Arith_Ext = 554 + Ieee_Std_Logic_Arith_Sxt = 555 + Ieee_Std_Logic_Arith_Id_Uns_Uns = 556 + Ieee_Std_Logic_Arith_Id_Sgn_Sgn = 557 + Ieee_Std_Logic_Arith_Neg_Sgn_Sgn = 558 + Ieee_Std_Logic_Arith_Abs_Sgn_Sgn = 559 + Ieee_Std_Logic_Arith_Shl_Uns = 560 + Ieee_Std_Logic_Arith_Shl_Sgn = 561 + Ieee_Std_Logic_Arith_Shr_Uns = 562 + Ieee_Std_Logic_Arith_Shr_Sgn = 563 + Ieee_Std_Logic_Arith_Id_Uns_Slv = 564 + Ieee_Std_Logic_Arith_Id_Sgn_Slv = 565 + Ieee_Std_Logic_Arith_Neg_Sgn_Slv = 566 + Ieee_Std_Logic_Arith_Abs_Sgn_Slv = 567 + Ieee_Std_Logic_Arith_Mul_Uns_Uns_Uns = 568 + Ieee_Std_Logic_Arith_Mul_Sgn_Sgn_Sgn = 569 + Ieee_Std_Logic_Arith_Mul_Sgn_Uns_Sgn = 570 + Ieee_Std_Logic_Arith_Mul_Uns_Sgn_Sgn = 571 + Ieee_Std_Logic_Arith_Mul_Uns_Uns_Slv = 572 + Ieee_Std_Logic_Arith_Mul_Sgn_Sgn_Slv = 573 + Ieee_Std_Logic_Arith_Mul_Sgn_Uns_Slv = 574 + Ieee_Std_Logic_Arith_Mul_Uns_Sgn_Slv = 575 + Ieee_Std_Logic_Arith_Add_Uns_Uns_Uns = 576 + Ieee_Std_Logic_Arith_Add_Sgn_Sgn_Sgn = 577 + Ieee_Std_Logic_Arith_Add_Uns_Sgn_Sgn = 578 + Ieee_Std_Logic_Arith_Add_Sgn_Uns_Sgn = 579 + Ieee_Std_Logic_Arith_Add_Uns_Int_Uns = 580 + Ieee_Std_Logic_Arith_Add_Int_Uns_Uns = 581 + Ieee_Std_Logic_Arith_Add_Sgn_Int_Sgn = 582 + Ieee_Std_Logic_Arith_Add_Int_Sgn_Sgn = 583 + Ieee_Std_Logic_Arith_Add_Uns_Log_Uns = 584 + Ieee_Std_Logic_Arith_Add_Log_Uns_Uns = 585 + Ieee_Std_Logic_Arith_Add_Sgn_Log_Sgn = 586 + Ieee_Std_Logic_Arith_Add_Log_Sgn_Sgn = 587 + Ieee_Std_Logic_Arith_Add_Uns_Uns_Slv = 588 + Ieee_Std_Logic_Arith_Add_Sgn_Sgn_Slv = 589 + Ieee_Std_Logic_Arith_Add_Uns_Sgn_Slv = 590 + Ieee_Std_Logic_Arith_Add_Sgn_Uns_Slv = 591 + Ieee_Std_Logic_Arith_Add_Uns_Int_Slv = 592 + Ieee_Std_Logic_Arith_Add_Int_Uns_Slv = 593 + Ieee_Std_Logic_Arith_Add_Sgn_Int_Slv = 594 + Ieee_Std_Logic_Arith_Add_Int_Sgn_Slv = 595 + Ieee_Std_Logic_Arith_Add_Uns_Log_Slv = 596 + Ieee_Std_Logic_Arith_Add_Log_Uns_Slv = 597 + Ieee_Std_Logic_Arith_Add_Sgn_Log_Slv = 598 + Ieee_Std_Logic_Arith_Add_Log_Sgn_Slv = 599 + Ieee_Std_Logic_Arith_Sub_Uns_Uns_Uns = 600 + Ieee_Std_Logic_Arith_Sub_Sgn_Sgn_Sgn = 601 + Ieee_Std_Logic_Arith_Sub_Uns_Sgn_Sgn = 602 + Ieee_Std_Logic_Arith_Sub_Sgn_Uns_Sgn = 603 + Ieee_Std_Logic_Arith_Sub_Uns_Int_Uns = 604 + Ieee_Std_Logic_Arith_Sub_Int_Uns_Uns = 605 + Ieee_Std_Logic_Arith_Sub_Sgn_Int_Sgn = 606 + Ieee_Std_Logic_Arith_Sub_Int_Sgn_Sgn = 607 + Ieee_Std_Logic_Arith_Sub_Uns_Log_Uns = 608 + Ieee_Std_Logic_Arith_Sub_Log_Uns_Uns = 609 + Ieee_Std_Logic_Arith_Sub_Sgn_Log_Sgn = 610 + Ieee_Std_Logic_Arith_Sub_Log_Sgn_Sgn = 611 + Ieee_Std_Logic_Arith_Sub_Uns_Uns_Slv = 612 + Ieee_Std_Logic_Arith_Sub_Sgn_Sgn_Slv = 613 + Ieee_Std_Logic_Arith_Sub_Uns_Sgn_Slv = 614 + Ieee_Std_Logic_Arith_Sub_Sgn_Uns_Slv = 615 + Ieee_Std_Logic_Arith_Sub_Uns_Int_Slv = 616 + Ieee_Std_Logic_Arith_Sub_Int_Uns_Slv = 617 + Ieee_Std_Logic_Arith_Sub_Sgn_Int_Slv = 618 + Ieee_Std_Logic_Arith_Sub_Int_Sgn_Slv = 619 + Ieee_Std_Logic_Arith_Sub_Uns_Log_Slv = 620 + Ieee_Std_Logic_Arith_Sub_Log_Uns_Slv = 621 + Ieee_Std_Logic_Arith_Sub_Sgn_Log_Slv = 622 + Ieee_Std_Logic_Arith_Sub_Log_Sgn_Slv = 623 + Ieee_Std_Logic_Arith_Lt_Uns_Uns = 624 + Ieee_Std_Logic_Arith_Lt_Sgn_Sgn = 625 + Ieee_Std_Logic_Arith_Lt_Uns_Sgn = 626 + Ieee_Std_Logic_Arith_Lt_Sgn_Uns = 627 + Ieee_Std_Logic_Arith_Lt_Uns_Int = 628 + Ieee_Std_Logic_Arith_Lt_Int_Uns = 629 + Ieee_Std_Logic_Arith_Lt_Sgn_Int = 630 + Ieee_Std_Logic_Arith_Lt_Int_Sgn = 631 + Ieee_Std_Logic_Arith_Le_Uns_Uns = 632 + Ieee_Std_Logic_Arith_Le_Sgn_Sgn = 633 + Ieee_Std_Logic_Arith_Le_Uns_Sgn = 634 + Ieee_Std_Logic_Arith_Le_Sgn_Uns = 635 + Ieee_Std_Logic_Arith_Le_Uns_Int = 636 + Ieee_Std_Logic_Arith_Le_Int_Uns = 637 + Ieee_Std_Logic_Arith_Le_Sgn_Int = 638 + Ieee_Std_Logic_Arith_Le_Int_Sgn = 639 + Ieee_Std_Logic_Arith_Gt_Uns_Uns = 640 + Ieee_Std_Logic_Arith_Gt_Sgn_Sgn = 641 + Ieee_Std_Logic_Arith_Gt_Uns_Sgn = 642 + Ieee_Std_Logic_Arith_Gt_Sgn_Uns = 643 + Ieee_Std_Logic_Arith_Gt_Uns_Int = 644 + Ieee_Std_Logic_Arith_Gt_Int_Uns = 645 + Ieee_Std_Logic_Arith_Gt_Sgn_Int = 646 + Ieee_Std_Logic_Arith_Gt_Int_Sgn = 647 + Ieee_Std_Logic_Arith_Ge_Uns_Uns = 648 + Ieee_Std_Logic_Arith_Ge_Sgn_Sgn = 649 + Ieee_Std_Logic_Arith_Ge_Uns_Sgn = 650 + Ieee_Std_Logic_Arith_Ge_Sgn_Uns = 651 + Ieee_Std_Logic_Arith_Ge_Uns_Int = 652 + Ieee_Std_Logic_Arith_Ge_Int_Uns = 653 + Ieee_Std_Logic_Arith_Ge_Sgn_Int = 654 + Ieee_Std_Logic_Arith_Ge_Int_Sgn = 655 + Ieee_Std_Logic_Arith_Eq_Uns_Uns = 656 + Ieee_Std_Logic_Arith_Eq_Sgn_Sgn = 657 + Ieee_Std_Logic_Arith_Eq_Uns_Sgn = 658 + Ieee_Std_Logic_Arith_Eq_Sgn_Uns = 659 + Ieee_Std_Logic_Arith_Eq_Uns_Int = 660 + Ieee_Std_Logic_Arith_Eq_Int_Uns = 661 + Ieee_Std_Logic_Arith_Eq_Sgn_Int = 662 + Ieee_Std_Logic_Arith_Eq_Int_Sgn = 663 + Ieee_Std_Logic_Arith_Ne_Uns_Uns = 664 + Ieee_Std_Logic_Arith_Ne_Sgn_Sgn = 665 + Ieee_Std_Logic_Arith_Ne_Uns_Sgn = 666 + Ieee_Std_Logic_Arith_Ne_Sgn_Uns = 667 + Ieee_Std_Logic_Arith_Ne_Uns_Int = 668 + Ieee_Std_Logic_Arith_Ne_Int_Uns = 669 + Ieee_Std_Logic_Arith_Ne_Sgn_Int = 670 + Ieee_Std_Logic_Arith_Ne_Int_Sgn = 671 + Ieee_Std_Logic_Misc_And_Reduce_Slv = 672 + Ieee_Std_Logic_Misc_And_Reduce_Suv = 673 + Ieee_Std_Logic_Misc_Nand_Reduce_Slv = 674 + Ieee_Std_Logic_Misc_Nand_Reduce_Suv = 675 + Ieee_Std_Logic_Misc_Or_Reduce_Slv = 676 + Ieee_Std_Logic_Misc_Or_Reduce_Suv = 677 + Ieee_Std_Logic_Misc_Nor_Reduce_Slv = 678 + Ieee_Std_Logic_Misc_Nor_Reduce_Suv = 679 + Ieee_Std_Logic_Misc_Xor_Reduce_Slv = 680 + Ieee_Std_Logic_Misc_Xor_Reduce_Suv = 681 + Ieee_Std_Logic_Misc_Xnor_Reduce_Slv = 682 + Ieee_Std_Logic_Misc_Xnor_Reduce_Suv = 683 @export diff --git a/src/vhdl/vhdl-ieee-numeric.adb b/src/vhdl/vhdl-ieee-numeric.adb index 96432df56..73f3010ac 100644 --- a/src/vhdl/vhdl-ieee-numeric.adb +++ b/src/vhdl/vhdl-ieee-numeric.adb @@ -582,6 +582,26 @@ package body Vhdl.Ieee.Numeric is (Type_Signed => Iir_Predefined_Ieee_Numeric_Std_Find_Rightmost_Sgn, Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Find_Rightmost_Uns); + To_01_Patterns : constant Shift_Pattern_Type := + (Type_Signed => Iir_Predefined_Ieee_Numeric_Std_To_01_Sgn, + Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_To_01_Uns); + + To_X01_Patterns : constant Shift_Pattern_Type := + (Type_Signed => Iir_Predefined_Ieee_Numeric_Std_To_X01_Sgn, + Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_To_X01_Uns); + + To_X01z_Patterns : constant Shift_Pattern_Type := + (Type_Signed => Iir_Predefined_Ieee_Numeric_Std_To_X01Z_Sgn, + Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_To_X01Z_Uns); + + To_Ux01_Patterns : constant Shift_Pattern_Type := + (Type_Signed => Iir_Predefined_Ieee_Numeric_Std_To_UX01_Sgn, + Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_To_UX01_Uns); + + Is_X_Patterns : constant Shift_Pattern_Type := + (Type_Signed => Iir_Predefined_Ieee_Numeric_Std_Is_X_Sgn, + Type_Unsigned => Iir_Predefined_Ieee_Numeric_Std_Is_X_Uns); + Error : exception; procedure Extract_Declarations (Pkg_Decl : Iir_Package_Declaration; @@ -804,18 +824,20 @@ package body Vhdl.Ieee.Numeric is raise Error; end if; - case Arg1_Sign is - when Type_Unsigned => - Predefined := Iir_Predefined_Ieee_Numeric_Std_To_01_Uns; - when Type_Signed => - Predefined := Iir_Predefined_Ieee_Numeric_Std_To_01_Sgn; - when others => - raise Error; - end case; + Predefined := To_01_Patterns (Arg1_Sign); Set_Implicit_Definition (Decl, Predefined); end Handle_To_01; + procedure Handle_To_X01 (Pats : Shift_Pattern_Type) is + begin + if Arg1_Kind /= Arg_Vect then + raise Error; + end if; + + Set_Implicit_Definition (Decl, Pats (Arg1_Sign)); + end Handle_To_X01; + procedure Handle_Shift (Pats : Shift_Pattern_Type; Sh_Sign : Sign_Kind) is Res : Iir_Predefined_Functions; @@ -1037,6 +1059,14 @@ package body Vhdl.Ieee.Numeric is Handle_Unary (Red_Xor_Patterns); when Name_Xnor => Handle_Unary (Red_Xnor_Patterns); + when Name_To_X01 => + Handle_To_X01 (To_X01_Patterns); + when Name_To_X01Z => + Handle_To_X01 (To_X01z_Patterns); + when Name_To_UX01 => + Handle_To_X01 (To_Ux01_Patterns); + when Name_Is_X => + Handle_To_X01 (Is_X_Patterns); when others => null; end case; diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index fc36dd35e..f4bc84dd7 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -5956,6 +5956,18 @@ package Vhdl.Nodes is Iir_Predefined_Ieee_Numeric_Std_To_01_Uns, Iir_Predefined_Ieee_Numeric_Std_To_01_Sgn, + Iir_Predefined_Ieee_Numeric_Std_To_X01_Uns, + Iir_Predefined_Ieee_Numeric_Std_To_X01_Sgn, + + Iir_Predefined_Ieee_Numeric_Std_To_X01Z_Uns, + Iir_Predefined_Ieee_Numeric_Std_To_X01Z_Sgn, + + Iir_Predefined_Ieee_Numeric_Std_To_UX01_Uns, + Iir_Predefined_Ieee_Numeric_Std_To_UX01_Sgn, + + Iir_Predefined_Ieee_Numeric_Std_Is_X_Uns, + Iir_Predefined_Ieee_Numeric_Std_Is_X_Sgn, + -- numeric_bit -- To_Integer, To_Unsigned, to_Signed -- cgit v1.2.3