forked from OSchip/llvm-project
				
			
							parent
							
								
									a81a75c390
								
							
						
					
					
						commit
						ccdaecc448
					
				| 
						 | 
				
			
			@ -58,7 +58,6 @@ namespace {
 | 
			
		|||
	    case Alpha::LDQ:  case Alpha::LDL:
 | 
			
		||||
	    case Alpha::LDWU: case Alpha::LDBU:
 | 
			
		||||
	    case Alpha::LDT: case Alpha::LDS:
 | 
			
		||||
	      
 | 
			
		||||
	    case Alpha::STQ:  case Alpha::STL:
 | 
			
		||||
	    case Alpha::STW:  case Alpha::STB:
 | 
			
		||||
	    case Alpha::STT: case Alpha::STS:
 | 
			
		||||
| 
						 | 
				
			
			@ -89,49 +88,57 @@ namespace {
 | 
			
		|||
		  Changed = true; nopintro += 2;
 | 
			
		||||
		  count += 2;
 | 
			
		||||
		} else if (prev[2] 
 | 
			
		||||
			   && prev[2]->getOperand(2).getReg() == 
 | 
			
		||||
			   MI->getOperand(2).getReg()
 | 
			
		||||
			   && prev[2]->getOperand(1).getImmedValue() == 
 | 
			
		||||
			   MI->getOperand(1).getImmedValue()) {
 | 
			
		||||
		  prev[0] = prev[1] = prev[2] = 0;
 | 
			
		||||
		  BuildMI(MBB, MI, Alpha::BIS, 2, Alpha::R31).addReg(Alpha::R31)
 | 
			
		||||
		    .addReg(Alpha::R31);
 | 
			
		||||
		  BuildMI(MBB, MI, Alpha::BIS, 2, Alpha::R31).addReg(Alpha::R31)
 | 
			
		||||
		    .addReg(Alpha::R31);
 | 
			
		||||
		  BuildMI(MBB, MI, Alpha::BIS, 2, Alpha::R31).addReg(Alpha::R31)
 | 
			
		||||
		    .addReg(Alpha::R31);
 | 
			
		||||
		  Changed = true; nopintro += 3;
 | 
			
		||||
		  count += 3;
 | 
			
		||||
		}
 | 
			
		||||
		prev[0] = prev[1];
 | 
			
		||||
		prev[1] = prev[2];
 | 
			
		||||
		prev[2] = MI;
 | 
			
		||||
		break;
 | 
			
		||||
	      }
 | 
			
		||||
	      //fall through
 | 
			
		||||
	    case Alpha::BR:
 | 
			
		||||
	    case Alpha::JMP:
 | 
			
		||||
	      ub = true;
 | 
			
		||||
	      //fall through
 | 
			
		||||
	    default:
 | 
			
		||||
	      prev[0] = prev[1];
 | 
			
		||||
	      prev[1] = prev[2];
 | 
			
		||||
	      prev[2] = 0;
 | 
			
		||||
	      break;
 | 
			
		||||
	    }
 | 
			
		||||
	  }
 | 
			
		||||
	  if (ub || AlignAll) {
 | 
			
		||||
	    //we can align stuff for free at this point
 | 
			
		||||
	    while (count % 4) {
 | 
			
		||||
	      BuildMI(MBB, MBB.end(), Alpha::BIS, 2, Alpha::R31)
 | 
			
		||||
		.addReg(Alpha::R31).addReg(Alpha::R31);
 | 
			
		||||
	      ++count;
 | 
			
		||||
	      ++nopalign;
 | 
			
		||||
	      prev[0] = prev[1];
 | 
			
		||||
	      prev[1] = prev[2];
 | 
			
		||||
	      prev[2] = 0;
 | 
			
		||||
	    }
 | 
			
		||||
	  }
 | 
			
		||||
                           && prev[2]->getOperand(2).getReg() == 
 | 
			
		||||
                           MI->getOperand(2).getReg()
 | 
			
		||||
                           && prev[2]->getOperand(1).getImmedValue() == 
 | 
			
		||||
                           MI->getOperand(1).getImmedValue()) {
 | 
			
		||||
                  prev[0] = prev[1] = prev[2] = 0;
 | 
			
		||||
                  BuildMI(MBB, MI, Alpha::BIS, 2, Alpha::R31).addReg(Alpha::R31)
 | 
			
		||||
                    .addReg(Alpha::R31);
 | 
			
		||||
                  BuildMI(MBB, MI, Alpha::BIS, 2, Alpha::R31).addReg(Alpha::R31)
 | 
			
		||||
                    .addReg(Alpha::R31);
 | 
			
		||||
                  BuildMI(MBB, MI, Alpha::BIS, 2, Alpha::R31).addReg(Alpha::R31)
 | 
			
		||||
                    .addReg(Alpha::R31);
 | 
			
		||||
                  Changed = true; nopintro += 3;
 | 
			
		||||
                  count += 3;
 | 
			
		||||
                }
 | 
			
		||||
                prev[0] = prev[1];
 | 
			
		||||
                prev[1] = prev[2];
 | 
			
		||||
                prev[2] = MI;
 | 
			
		||||
        	break;
 | 
			
		||||
              }
 | 
			
		||||
              prev[0] = prev[1];
 | 
			
		||||
              prev[1] = prev[2];
 | 
			
		||||
              prev[2] = 0;
 | 
			
		||||
              break;
 | 
			
		||||
            case Alpha::ALTENT:
 | 
			
		||||
            case Alpha::MEMLABEL:
 | 
			
		||||
            case Alpha::PCLABEL:
 | 
			
		||||
              --count;
 | 
			
		||||
              break;
 | 
			
		||||
            case Alpha::BR:
 | 
			
		||||
            case Alpha::JMP:
 | 
			
		||||
              ub = true;
 | 
			
		||||
              //fall through
 | 
			
		||||
            default:
 | 
			
		||||
              prev[0] = prev[1];
 | 
			
		||||
              prev[1] = prev[2];
 | 
			
		||||
              prev[2] = 0;
 | 
			
		||||
              break;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          if (ub || AlignAll) {
 | 
			
		||||
            //we can align stuff for free at this point
 | 
			
		||||
            while (count % 4) {
 | 
			
		||||
              BuildMI(MBB, MBB.end(), Alpha::BIS, 2, Alpha::R31)
 | 
			
		||||
                .addReg(Alpha::R31).addReg(Alpha::R31);
 | 
			
		||||
              ++count;
 | 
			
		||||
              ++nopalign;
 | 
			
		||||
              prev[0] = prev[1];
 | 
			
		||||
              prev[1] = prev[2];
 | 
			
		||||
              prev[2] = 0;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
      }
 | 
			
		||||
      return Changed;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue