Skip to content
Snippets Groups Projects
cpu.sch 1.06 KiB
Newer Older
  • Learn to ignore specific revisions
  • macro simpl!(X) {
      ccp(X);
      simplify-cfg(X);
      lift-dc-math(X);
      gvn(X);
      phi-elim(X);
      dce(X);
      infer-schedules(X);
    }
    
    
    rarbore2's avatar
    rarbore2 committed
    no-memset(srad@scratch);
    
    phi-elim(*);
    let loop1 = outline(srad@loop1);
    let loop2 = outline(srad@loop2);
    let loop3 = outline(srad@loop3);
    simpl!(*);
    const-inline(*);
    crc(*);
    slf(*);
    write-predication(*);
    simpl!(*);
    predication(*);
    simpl!(*);
    predication(*);
    simpl!(*);
    fixpoint {
      forkify(*);
      fork-guard-elim(*);
      fork-coalesce(*);
    }
    simpl!(*);
    
    rarbore2's avatar
    rarbore2 committed
    fork-interchange[0, 1](loop1);
    
    rarbore2's avatar
    rarbore2 committed
    reduce-slf(*);
    simpl!(*);
    
    rarbore2's avatar
    rarbore2 committed
    slf(*);
    simpl!(*);
    
    
    rarbore2's avatar
    rarbore2 committed
    if !feature("seq") {
      fork-tile[32, 0, false, false](loop2);
      let split = fork-split(loop2);
      let loop2_body = outline(split.srad_1.fj1);
      simpl!(loop2, loop2_body);
      loop2 = loop2_body;
    
    rarbore2's avatar
    rarbore2 committed
    
    
    rarbore2's avatar
    rarbore2 committed
      fork-tile[32, 0, false, false](loop3);
      let split = fork-split(loop3);
      let loop3_body = outline(split.srad_2.fj1);
      simpl!(loop3, loop3_body);
      loop3 = loop3_body;
    
    rarbore2's avatar
    rarbore2 committed
    
    
    rarbore2's avatar
    rarbore2 committed
      inline(srad@loop2, srad@loop3);
      delete-uncalled(*);
    }
    
    rarbore2's avatar
    rarbore2 committed
    fork-split(extract, compress, loop1, loop2, loop3);
    unforkify(extract, compress, loop1, loop2, loop3);