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 |
528class IntRegOperand(Operand): |
529 reg_class = 'IntRegClass' 530 |
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: |
542 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
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: |
548 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
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 |
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: |
614 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
615 616 if self.is_dest: |
617 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
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 |
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: |
675 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
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: |
681 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
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 |
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: |
747 c_src = src_reg_constructor % (self.reg_class, self.reg_spec) |
748 749 if self.is_dest: |
750 c_dest = dst_reg_constructor % (self.reg_class, self.reg_spec) |
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 --- |