isa_parser.py (11881:f0a07f1e8ee2) | isa_parser.py (12104:edd63f9c6184) |
---|---|
1# Copyright (c) 2014 ARM Limited 2# All rights reserved 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license --- 506 unchanged lines hidden (view full) --- 515 my_flags += self.flags[2] 516 return my_flags 517 518 def makeDecl(self): 519 # Note that initializations in the declarations are solely 520 # to avoid 'uninitialized variable' errors from the compiler. 521 return self.ctype + ' ' + self.base_name + ' = 0;\n'; 522 | 1# Copyright (c) 2014 ARM Limited 2# All rights reserved 3# 4# The license below extends only to copyright in the software and shall 5# not be construed as granting a license to any other intellectual 6# property including but not limited to intellectual property relating 7# to a hardware implementation of the functionality of the software 8# licensed hereunder. You may use the software subject to the license --- 506 unchanged lines hidden (view full) --- 515 my_flags += self.flags[2] 516 return my_flags 517 518 def makeDecl(self): 519 # Note that initializations in the declarations are solely 520 # to avoid 'uninitialized variable' errors from the compiler. 521 return self.ctype + ' ' + self.base_name + ' = 0;\n'; 522 |
523 524src_reg_constructor = '\n\t_srcRegIdx[_numSrcRegs++] = RegId(%s, %s);' 525dst_reg_constructor = '\n\t_destRegIdx[_numDestRegs++] = RegId(%s, %s);' 526 527 |
|
523class IntRegOperand(Operand): | 528class IntRegOperand(Operand): |
529 reg_class = 'IntRegClass' 530 |
|
524 def isReg(self): 525 return 1 526 527 def isIntReg(self): 528 return 1 529 530 def makeConstructor(self, predRead, predWrite): 531 c_src = '' 532 c_dest = '' 533 534 if self.is_src: | 531 def isReg(self): 532 return 1 533 534 def isIntReg(self): 535 return 1 536 537 def makeConstructor(self, predRead, predWrite): 538 c_src = '' 539 c_dest = '' 540 541 if self.is_src: |
535 c_src = '\n\t_srcRegIdx[_numSrcRegs++] = %s;' % (self.reg_spec) | 542 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
536 if self.hasReadPred(): 537 c_src = '\n\tif (%s) {%s\n\t}' % \ 538 (self.read_predicate, c_src) 539 540 if self.is_dest: | 543 if self.hasReadPred(): 544 c_src = '\n\tif (%s) {%s\n\t}' % \ 545 (self.read_predicate, c_src) 546 547 if self.is_dest: |
541 c_dest = '\n\t_destRegIdx[_numDestRegs++] = %s;' % \ 542 (self.reg_spec) | 548 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
543 c_dest += '\n\t_numIntDestRegs++;' 544 if self.hasWritePred(): 545 c_dest = '\n\tif (%s) {%s\n\t}' % \ 546 (self.write_predicate, c_dest) 547 548 return c_src + c_dest 549 550 def makeRead(self, predRead): --- 36 unchanged lines hidden (view full) --- 587 %s final_val = %s; 588 xc->setIntRegOperand(this, %s, final_val);\n 589 if (traceData) { traceData->setData(final_val); } 590 }''' % (wcond, self.ctype, self.base_name, windex) 591 592 return wb 593 594class FloatRegOperand(Operand): | 549 c_dest += '\n\t_numIntDestRegs++;' 550 if self.hasWritePred(): 551 c_dest = '\n\tif (%s) {%s\n\t}' % \ 552 (self.write_predicate, c_dest) 553 554 return c_src + c_dest 555 556 def makeRead(self, predRead): --- 36 unchanged lines hidden (view full) --- 593 %s final_val = %s; 594 xc->setIntRegOperand(this, %s, final_val);\n 595 if (traceData) { traceData->setData(final_val); } 596 }''' % (wcond, self.ctype, self.base_name, windex) 597 598 return wb 599 600class FloatRegOperand(Operand): |
601 reg_class = 'FloatRegClass' 602 |
|
595 def isReg(self): 596 return 1 597 598 def isFloatReg(self): 599 return 1 600 601 def makeConstructor(self, predRead, predWrite): 602 c_src = '' 603 c_dest = '' 604 605 if self.is_src: | 603 def isReg(self): 604 return 1 605 606 def isFloatReg(self): 607 return 1 608 609 def makeConstructor(self, predRead, predWrite): 610 c_src = '' 611 c_dest = '' 612 613 if self.is_src: |
606 c_src = '\n\t_srcRegIdx[_numSrcRegs++] = %s + FP_Reg_Base;' % \ 607 (self.reg_spec) | 614 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
608 609 if self.is_dest: | 615 616 if self.is_dest: |
610 c_dest = \ 611 '\n\t_destRegIdx[_numDestRegs++] = %s + FP_Reg_Base;' % \ 612 (self.reg_spec) | 617 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
613 c_dest += '\n\t_numFPDestRegs++;' 614 615 return c_src + c_dest 616 617 def makeRead(self, predRead): 618 bit_select = 0 619 if (self.ctype == 'float' or self.ctype == 'double'): 620 func = 'readFloatRegOperand' --- 28 unchanged lines hidden (view full) --- 649 { 650 %s final_val = %s; 651 %s\n 652 if (traceData) { traceData->setData(final_val); } 653 }''' % (self.ctype, self.base_name, wp) 654 return wb 655 656class CCRegOperand(Operand): | 618 c_dest += '\n\t_numFPDestRegs++;' 619 620 return c_src + c_dest 621 622 def makeRead(self, predRead): 623 bit_select = 0 624 if (self.ctype == 'float' or self.ctype == 'double'): 625 func = 'readFloatRegOperand' --- 28 unchanged lines hidden (view full) --- 654 { 655 %s final_val = %s; 656 %s\n 657 if (traceData) { traceData->setData(final_val); } 658 }''' % (self.ctype, self.base_name, wp) 659 return wb 660 661class CCRegOperand(Operand): |
662 reg_class = 'CCRegClass' 663 |
|
657 def isReg(self): 658 return 1 659 660 def isCCReg(self): 661 return 1 662 663 def makeConstructor(self, predRead, predWrite): 664 c_src = '' 665 c_dest = '' 666 667 if self.is_src: | 664 def isReg(self): 665 return 1 666 667 def isCCReg(self): 668 return 1 669 670 def makeConstructor(self, predRead, predWrite): 671 c_src = '' 672 c_dest = '' 673 674 if self.is_src: |
668 c_src = '\n\t_srcRegIdx[_numSrcRegs++] = %s + CC_Reg_Base;' % \ 669 (self.reg_spec) | 675 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
670 if self.hasReadPred(): 671 c_src = '\n\tif (%s) {%s\n\t}' % \ 672 (self.read_predicate, c_src) 673 674 if self.is_dest: | 676 if self.hasReadPred(): 677 c_src = '\n\tif (%s) {%s\n\t}' % \ 678 (self.read_predicate, c_src) 679 680 if self.is_dest: |
675 c_dest = \ 676 '\n\t_destRegIdx[_numDestRegs++] = %s + CC_Reg_Base;' % \ 677 (self.reg_spec) | 681 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
678 c_dest += '\n\t_numCCDestRegs++;' 679 if self.hasWritePred(): 680 c_dest = '\n\tif (%s) {%s\n\t}' % \ 681 (self.write_predicate, c_dest) 682 683 return c_src + c_dest 684 685 def makeRead(self, predRead): --- 36 unchanged lines hidden (view full) --- 722 %s final_val = %s; 723 xc->setCCRegOperand(this, %s, final_val);\n 724 if (traceData) { traceData->setData(final_val); } 725 }''' % (wcond, self.ctype, self.base_name, windex) 726 727 return wb 728 729class ControlRegOperand(Operand): | 682 c_dest += '\n\t_numCCDestRegs++;' 683 if self.hasWritePred(): 684 c_dest = '\n\tif (%s) {%s\n\t}' % \ 685 (self.write_predicate, c_dest) 686 687 return c_src + c_dest 688 689 def makeRead(self, predRead): --- 36 unchanged lines hidden (view full) --- 726 %s final_val = %s; 727 xc->setCCRegOperand(this, %s, final_val);\n 728 if (traceData) { traceData->setData(final_val); } 729 }''' % (wcond, self.ctype, self.base_name, windex) 730 731 return wb 732 733class ControlRegOperand(Operand): |
734 reg_class = 'MiscRegClass' 735 |
|
730 def isReg(self): 731 return 1 732 733 def isControlReg(self): 734 return 1 735 736 def makeConstructor(self, predRead, predWrite): 737 c_src = '' 738 c_dest = '' 739 740 if self.is_src: | 736 def isReg(self): 737 return 1 738 739 def isControlReg(self): 740 return 1 741 742 def makeConstructor(self, predRead, predWrite): 743 c_src = '' 744 c_dest = '' 745 746 if self.is_src: |
741 c_src = \ 742 '\n\t_srcRegIdx[_numSrcRegs++] = %s + Misc_Reg_Base;' % \ 743 (self.reg_spec) | 747 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
744 745 if self.is_dest: | 748 749 if self.is_dest: |
746 c_dest = \ 747 '\n\t_destRegIdx[_numDestRegs++] = %s + Misc_Reg_Base;' % \ 748 (self.reg_spec) | 750 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
749 750 return c_src + c_dest 751 752 def makeRead(self, predRead): 753 bit_select = 0 754 if (self.ctype == 'float' or self.ctype == 'double'): 755 error('Attempt to read control register as FP') 756 if self.read_code != None: --- 1696 unchanged lines hidden --- | 751 752 return c_src + c_dest 753 754 def makeRead(self, predRead): 755 bit_select = 0 756 if (self.ctype == 'float' or self.ctype == 'double'): 757 error('Attempt to read control register as FP') 758 if self.read_code != None: --- 1696 unchanged lines hidden --- |