<html>
<head>
<style>
div#header {
  background-color: rgb(224,224,224);
  padding: 8px;
  margin: -8px;
  width:100%;
  float:left;
  position:fixed;
  height:24px;
}
div#columns {
  -webkit-column-count: 25;
  width: 100000px;
}
div.column {
  margin-top:24px;
  border-left: 1px solid lightgrey;
  background-color: white;
  padding: 8px;
  -webkit-column-break-inside: avoid;
  height:100000px;
  width:400px;
}
div.divleft {
  padding-left: 8px;
  float:left;
}
div.bb_visible_instrs {
  display:block;
}
div.bb_hidden {
  display:none;
}
h1 {
  font-size:16px;
}
h2 {
  font-size:14px;
}
span.operand_clicked {
  background-color: #FF3300;
}
span.instr_notclicked {
  display:block;
}
span.instr_cannot_be_clicked {
  display:block;
  color:rgb(100,100,100);
}
span.instr_clicked {
  display:block;
  background-color: #66CCFF;
}
span.instr_hidden {
  display:none;
}
span.instr_cannot_be_clicked_hidden {
  display:none;
}
</style>
</head>
<body>
<script type='text/javascript'>
// Helpers
// Map from function names to function data
var functions = {};
var function_id = 0;
var visible_function_id = -1;
// Map from instruction debug locations to all the instructions
// with that id.
var instruction_map = [];
// Map from named operands to other uses of the same operand
var operand_map = {};
// Lists all the basic blocks.
var all_basicblocks = {};
// Lists all the instructions.
var all_instructions = {};
function getFunction(func_name) {
  if (func_name in functions) {
    return functions[func_name];
  }
  alert('Missing function: ' + func_name);
}
function addOrGetFunction(func_name) {
  if (func_name in functions) {
    return functions[func_name];
  }
  functions[func_name] =
  {
    func_id : function_id++,
    passes : []
  };
  // Add this function to the pull down box.
  var select = document.getElementById('functions');
  var option = document.createElement('option');
  option.text = func_name;
  select.add(option);
  return functions[func_name];
}
function addOrGetPass(func, pass_name) {
  for (var pass_i = 0, pass_e = func.passes.length;
       pass_i != pass_e; ++pass_i) {
    var pass = func.passes[pass_i];
    if (pass.banner_name == pass_name) {
      return pass;
    }
  }
  func.passes.push(new FunctionPassDump(pass_name))
;  return func.passes[func.passes.length-1];
}
function toggleHideNonSelected(checkbox) {
  if (checkbox.checked) {
    // Hide all the basic blocks which have no visible instructions.
    for (var bb_i = 0, bb_e = all_basicblocks.length;
         bb_i != bb_e; ++bb_i) {
      var bb = all_basicblocks[bb_i];
      if (bb.className == 'bb_visible_instr' && bb.numberOfClickedInstructions == 0 && bb.numberOfClickedOperands == 0)
        bb.className = 'bb_hidden';
    }
    // Hide all the instructions and operands we haven't highlighted
    for (var instr_i = 0, instr_e = all_instructions.length;
         instr_i != instr_e; ++instr_i) {
      var instr = all_instructions[instr_i];
      if (instr.className == 'instr_notclicked' && instr.numberOfClickedOperands == 0)
        instr.className = 'instr_hidden';
      if (instr.className == 'instr_cannot_be_clicked' && instr.numberOfClickedOperands == 0)
        instr.className = 'instr_cannot_be_clicked_hidden';
    }
  } else {
    // Show all the basic blocks.
    for (var bb_i = 0, bb_e = all_basicblocks.length;
         bb_i != bb_e; ++bb_i) {
      var bb = all_basicblocks[bb_i];
      if (bb.className == 'bb_hidden')
        bb.className = 'bb_visible_instr';
    }
    // Show all the instructions and operands we haven't highlighted
    for (var instr_i = 0, instr_e = all_instructions.length; instr_i != instr_e; ++instr_i) {
      var instr = all_instructions[instr_i];
      if (instr.className == 'instr_hidden')
        instr.className = 'instr_notclicked';
      if (instr.className == 'instr_cannot_be_clicked_hidden')
        instr.className = 'instr_cannot_be_clicked';
    }
  }
}
function clickInstruction(debug_line) {
  var instrs = instruction_map[debug_line];
  for (var i = 0, e = instrs.length; i != e; ++i) {
    if (instrs[i].className == 'instr_clicked') {
      instrs[i].className = 'instr_notclicked';
      // Remove an instance of operand being clicked from the parent.
      instrs[i].parentNode.numberOfClickedInstructions--;
    } else {
      instrs[i].className = 'instr_clicked';
      // Add an instance of operand being clicked to the parent.
      instrs[i].parentNode.numberOfClickedInstructions++;
      // Make the parent visible if it was invisible.
      if (instrs[i].parentNode.className == 'bb_hidden')
        instrs[i].parentNode.className = 'bb_visible_instr';
    }
  }
}
function clickOperand(event, operand_name) {
  var operands = operand_map[operand_name];
  for (var i = 0, e = operands.length; i != e; ++i) {
    if (operands[i].className == 'operand_clicked') {
      operands[i].className = '';
      // Remove an instance of operand being clicked from the parent.
      operands[i].parentNode.numberOfClickedOperands--;
      operands[i].parentNode.parentNode.numberOfClickedOperands--;
    } else {
      operands[i].className = 'operand_clicked';
      // Add an instance of operand being clicked to the parent.
      operands[i].parentNode.numberOfClickedOperands++;
      operands[i].parentNode.parentNode.numberOfClickedOperands++;
      // Make the parent visible if it was invisible.
      if (operands[i].parentNode.className == 'instr_hidden')
        operands[i].parentNode.className = 'instr_notclicked';
      if (operands[i].parentNode.className == 'instr_cannot_be_clicked_hidden')
        operands[i].parentNode.className = 'instr_cannot_be_clicked';
      if (operands[i].parentNode.parentNode.className == 'bb_hidden')
        operands[i].parentNode.parentNode.className = 'bb_visible_instr';
    }
  }
  event.stopPropagation();
}
function setCurrentFunction(func_name) {
  var func = getFunction(func_name);
  if (visible_function_id == func.func_id)
    return;
  visible_function_id = func.func_id;
  // Clear the maps
  all_basicblocks = [];
  instruction_map = [];
  all_instructions = [];
  operand_map = {};
  var columns_div = document.getElementById('columns');
  // Clear the current content of the div
  while (columns_div.hasChildNodes()) {
    columns_div.removeChild(columns_div.lastChild);
  }
  // Create a new div for each pass in the function we're displaying
  for (var i = 0, e = func.passes.length; i != e; ++i) {
    var pass = func.passes[i];
    var new_div = document.createElement('div');
    new_div.className = 'column';
    // Give the div a header of the name of the pass
    var new_div_header = document.createElement('h1');
    new_div_header.innerHTML = pass.banner_name;
    new_div.appendChild(new_div_header);
    // Add each basic block
    for (var bb_i = 0, bb_e = pass.basic_blocks.length; bb_i != bb_e; ++bb_i) {
      var bb = pass.basic_blocks[bb_i];
      // Skip bbs which weren't generated, eg, unchanged SDAG passes.
      if (bb == undefined) continue;
      var bb_div = document.createElement('div');
      bb_div.className = 'bb_visible_instr';
      bb_div.numberOfClickedInstructions=0;
      bb_div.numberOfClickedOperands=0;
      var bb_header = document.createElement('h2');
      bb_header.innerHTML = bb.name;
      // Add the basic block to the div
      bb_div.appendChild(bb_header);
      new_div.appendChild(bb_div);
      all_basicblocks.push(bb_div);
      // Add each instruction
      for (var instr_i = 0, instr_e = bb.instrs.length; instr_i != instr_e; ++instr_i) {
        var instr = bb.instrs[instr_i];
        var instr_span = document.createElement('span');
        instr_span.numberOfClickedOperands=0;
        if (instr.dl != 0) {
          // This instruction has a debug location, so track it.
          instr_span.className='instr_notclicked';
          if (instruction_map[instr.dl] == undefined) {
            instruction_map[instr.dl] = [];
          }
          instruction_map[instr.dl].push(instr_span);
          // Make the instruction span clickable.
          instr_span.setAttribute('onclick','clickInstruction(' + instr.dl + ')');
        } else {
          // Otherwise make it clear that it cannot be clicked
          instr_span.className='instr_cannot_be_clicked';
        }
        // Scan the intruction text looking for <op>...</op> and make these
        // their own operand <span>'s inside the instruction span.
        var pendingText = instr.text;
        while (true) {
          var bb_op_idx = pendingText.indexOf("<bb-local-op>");
          if (bb_op_idx == -1) bb_op_idx = instr.text.length;
          var func_op_idx = pendingText.indexOf("<func-local-op>");
          if (func_op_idx == -1) func_op_idx = instr.text.length;
          var global_op_idx = pendingText.indexOf("<global-op>");
          if (global_op_idx == -1) global_op_idx = instr.text.length;
          var op_idx = Math.min(bb_op_idx, func_op_idx, global_op_idx);
          if (op_idx == instr.text.length) {
            instr_span.appendChild(document.createTextNode(pendingText));
            break;
          }
          // Found <*op>.  Now look for </*op>
          var end_op_string = "";
          if (bb_op_idx == op_idx) end_op_string = "</bb-local-op>";
          if (func_op_idx == op_idx) end_op_string = "</func-local-op>";
          if (global_op_idx == op_idx) end_op_string = "</global-op>";
          var end_op_idx = pendingText.indexOf(end_op_string, op_idx);
          if (end_op_idx == -1) {
            // FIXME: Should we throw an error here.
            instr_span.appendChild(document.createTextNode(pendingText));
            break;
          }
          // Found both start and end indices.  Now copy the text in between
          // First copy up to the <op>
          if (op_idx != 0) {
            instr_span.appendChild(document.createTextNode(pendingText.slice(0, op_idx)));
          }
          // Now copy the operand text
          var start_tag_len = end_op_string.length - 1;
          var end_tag_len = end_op_string.length;
          var op_text = pendingText.slice(op_idx + start_tag_len, end_op_idx);
          // Now move the index to after the </op>
          pendingText = pendingText.slice(end_op_idx + end_tag_len);
          // Make an operand span which can be clicked on.
          var operand_span = document.createElement('span');
          operand_span.appendChild(document.createTextNode(op_text));
          instr_span.appendChild(operand_span);
          // Track this operand across all uses
          // If BB local, prepend BB name to make the string unique
          if (bb_op_idx == op_idx) {
            op_text = pass.banner_name + bb.name + op_text;
          }
          // If func local, prepend func name to make the string unique
          if (func_op_idx == op_idx) {
            op_text = func_name + op_text;
          }
          if (operand_map[op_text] == undefined) {
            operand_map[op_text] = [];
          }
          operand_map[op_text].push(operand_span);
          // Make the operand span clickable.
          operand_span.setAttribute('onclick','clickOperand(event, "' + op_text + '")');
        }
        // Add the instruction to the div
        bb_div.appendChild(instr_span);
        all_instructions.push(instr_span);
      }
    }
    columns_div.appendChild(new_div);
  }
  columns_div.style.webkitColumnCount = func.passes.length;
  columns_div.style.width = (400 * func.passes.length) + 'px';
  // Make sure all instructions added are visible.
  var checkbox = document.getElementById('hide-non-selected');
  checkbox.checked = false;
}
function selectFunction(select) {
  setCurrentFunction(select.options[select.selectedIndex].value);
}
function FunctionPassDump(banner_name) {
  this.banner_name = banner_name;
  this.basic_blocks = [];
}
FunctionPassDump.prototype.setBasicBlocks = function(bbs) {
  this.basic_blocks = bbs;
}
FunctionPassDump.prototype.addBasicBlocks = function(num, bbs) {
  this.basic_blocks[num] = bbs[0];
}
function BasicBlock(bb_name) {
  this.bb_name = bb_name;
  this.instrs = [];
}
function Instruction(debug_line, instr_name, instr_text) {
  this.debug_line = debug_line;
  this.instr_description = [];
}
Instruction.prototype.addOperand = function(text) {
  this.instr_description.push({ text: text, isOperand: true });
}
Instruction.prototype.addText = function(text) {
  this.instr_description.push({ text: text, isOperand: false });
}
</script>
<div id='header'>
  <div class='divleft'>
    <label>Function</label>
    <select id='functions' onchange='selectFunction(this)'></select>
  </div>
  <div class='divleft'>
    <label>Hide non-selected</label>
  </div>
  <div class='divleft'>
    <form action=>
    <input id='hide-non-selected' type='checkbox' name='hide-not-selected' value='Hide-no-selects' onclick='toggleHideNonSelected(this)'>
    </form>
  </div>
</div>
<div id='columns'>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Expand Atomic calls in terms of either load-linked & store-conditional or cmpxchg'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Module Verifier'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Debug Info Verifier'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Canonicalize natural loops'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Lower Garbage Collection Instructions'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Remove unreachable blocks from the CFG'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Constant Hoisting'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Partially inline calls to library functions'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After CodeGen Prepare'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Rewrite Symbols'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Debug Info Verifier'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Module Verifier'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: '',
  instrs: [
{ dl : 1, text : '  <global-op>%b</global-op> = shufflevector <4 x i64> <global-op>%a</global-op>, <4 x i64> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>, !dbg !0' },
{ dl : 2, text : '  ret <4 x i64> <global-op>%b</global-op>, !dbg !2' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
var func_pass_dump = addOrGetPass(func, 'Initial selection DAG');
func_pass_dump.setBasicBlocks([{ name: 'BB#0: ',
  instrs: [
{ dl : 0, text : '<bb-local-op>N<0></bb-local-op>: ch = EntryToken' },
{ dl : 0, text : '<bb-local-op>N<1></bb-local-op>: v2i64 = Register <global-op>%vreg0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<2></bb-local-op>: v2i64 = Register <global-op>%vreg1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<3></bb-local-op>: v4i64 = undef' },
{ dl : 0, text : '<bb-local-op>N<4></bb-local-op>: i64 = Constant<0>' },
{ dl : 0, text : '<bb-local-op>N<5></bb-local-op>: i64 = Constant<2>' },
{ dl : 0, text : '<bb-local-op>N<6></bb-local-op>: i16 = TargetConstant<0>' },
{ dl : 0, text : '<bb-local-op>N<7></bb-local-op>: v2i64 = Register <global-op>%XMM0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<8></bb-local-op>: v2i64 = Register <global-op>%XMM1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<9></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<1></bb-local-op>' },
{ dl : 0, text : '<bb-local-op>N<10></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<2></bb-local-op>' },
{ dl : 0, text : '<bb-local-op>N<11></bb-local-op>: v4i64 = concat_vectors <bb-local-op>N<9></bb-local-op>, <bb-local-op>N<10></bb-local-op>' },
{ dl : 1, text : '<bb-local-op>N<12></bb-local-op>: v4i64 = vector_shuffle <bb-local-op>N<11></bb-local-op>, <bb-local-op>N<3></bb-local-op><1,3,u,u>' },
{ dl : 2, text : '<bb-local-op>N<13></bb-local-op>: v2i64 = extract_subvector <bb-local-op>N<12></bb-local-op>, <bb-local-op>N<5></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<14></bb-local-op>: v2i64 = extract_subvector <bb-local-op>N<12></bb-local-op>, <bb-local-op>N<4></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<15></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<7></bb-local-op>, <bb-local-op>N<14></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<16></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<15></bb-local-op>, <bb-local-op>N<8></bb-local-op>, <bb-local-op>N<13></bb-local-op>, <bb-local-op>N<15></bb-local-op>:1' },
{ dl : 2, text : '<bb-local-op>N<17></bb-local-op>: ch = X86ISD::RET_FLAG <bb-local-op>N<16></bb-local-op>, <bb-local-op>N<6></bb-local-op>, <bb-local-op>N<7></bb-local-op>, <bb-local-op>N<8></bb-local-op>, <bb-local-op>N<16></bb-local-op>:1' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
var func_pass_dump = addOrGetPass(func, 'Optimized lowered selection DAG');
func_pass_dump.setBasicBlocks([{ name: 'BB#0: ',
  instrs: [
{ dl : 0, text : '<bb-local-op>N<0></bb-local-op>: ch = EntryToken' },
{ dl : 0, text : '<bb-local-op>N<1></bb-local-op>: v2i64 = Register <global-op>%vreg0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<2></bb-local-op>: v2i64 = Register <global-op>%vreg1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<3></bb-local-op>: i16 = TargetConstant<0>' },
{ dl : 0, text : '<bb-local-op>N<4></bb-local-op>: v2i64 = Register <global-op>%XMM0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<5></bb-local-op>: v2i64 = Register <global-op>%XMM1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<6></bb-local-op>: v2i64 = undef' },
{ dl : 0, text : '<bb-local-op>N<7></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<1></bb-local-op>' },
{ dl : 0, text : '<bb-local-op>N<8></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<2></bb-local-op>' },
{ dl : 1, text : '<bb-local-op>N<9></bb-local-op>: v2i64 = vector_shuffle <bb-local-op>N<7></bb-local-op>, <bb-local-op>N<8></bb-local-op><1,3>' },
{ dl : 2, text : '<bb-local-op>N<10></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<9></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<11></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<10></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<6></bb-local-op>, <bb-local-op>N<10></bb-local-op>:1' },
{ dl : 2, text : '<bb-local-op>N<12></bb-local-op>: ch = X86ISD::RET_FLAG <bb-local-op>N<11></bb-local-op>, <bb-local-op>N<3></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<11></bb-local-op>:1' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
var func_pass_dump = addOrGetPass(func, 'Type-legalized selection DAG');
func_pass_dump.setBasicBlocks([{ name: 'BB#0: ',
  instrs: [
{ dl : 0, text : '<bb-local-op>N<0></bb-local-op>: ch = EntryToken' },
{ dl : 0, text : '<bb-local-op>N<1></bb-local-op>: v2i64 = Register <global-op>%vreg0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<2></bb-local-op>: v2i64 = Register <global-op>%vreg1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<3></bb-local-op>: i16 = TargetConstant<0>' },
{ dl : 0, text : '<bb-local-op>N<4></bb-local-op>: v2i64 = Register <global-op>%XMM0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<5></bb-local-op>: v2i64 = Register <global-op>%XMM1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<6></bb-local-op>: v2i64 = undef' },
{ dl : 0, text : '<bb-local-op>N<7></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<1></bb-local-op>' },
{ dl : 0, text : '<bb-local-op>N<8></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<2></bb-local-op>' },
{ dl : 1, text : '<bb-local-op>N<9></bb-local-op>: v2i64 = vector_shuffle <bb-local-op>N<7></bb-local-op>, <bb-local-op>N<8></bb-local-op><1,3>' },
{ dl : 2, text : '<bb-local-op>N<10></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<9></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<11></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<10></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<6></bb-local-op>, <bb-local-op>N<10></bb-local-op>:1' },
{ dl : 2, text : '<bb-local-op>N<12></bb-local-op>: ch = X86ISD::RET_FLAG <bb-local-op>N<11></bb-local-op>, <bb-local-op>N<3></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<11></bb-local-op>:1' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
var func_pass_dump = addOrGetPass(func, 'Legalized selection DAG');
func_pass_dump.setBasicBlocks([{ name: 'BB#0: ',
  instrs: [
{ dl : 0, text : '<bb-local-op>N<0></bb-local-op>: ch = EntryToken' },
{ dl : 0, text : '<bb-local-op>N<1></bb-local-op>: v2i64 = Register <global-op>%vreg0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<2></bb-local-op>: v2i64 = Register <global-op>%vreg1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<3></bb-local-op>: i16 = TargetConstant<0>' },
{ dl : 0, text : '<bb-local-op>N<4></bb-local-op>: v2i64 = Register <global-op>%XMM0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<5></bb-local-op>: v2i64 = Register <global-op>%XMM1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<6></bb-local-op>: v2i64 = undef' },
{ dl : 0, text : '<bb-local-op>N<7></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<1></bb-local-op>' },
{ dl : 0, text : '<bb-local-op>N<8></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<2></bb-local-op>' },
{ dl : 1, text : '<bb-local-op>N<9></bb-local-op>: v2i64 = X86ISD::UNPCKH <bb-local-op>N<7></bb-local-op>, <bb-local-op>N<8></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<10></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<9></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<11></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<10></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<6></bb-local-op>, <bb-local-op>N<10></bb-local-op>:1' },
{ dl : 2, text : '<bb-local-op>N<12></bb-local-op>: ch = X86ISD::RET_FLAG <bb-local-op>N<11></bb-local-op>, <bb-local-op>N<3></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<11></bb-local-op>:1' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
var func_pass_dump = addOrGetPass(func, 'Optimized legalized selection DAG');
func_pass_dump.setBasicBlocks([{ name: 'BB#0: ',
  instrs: [
{ dl : 0, text : '<bb-local-op>N<0></bb-local-op>: ch = EntryToken' },
{ dl : 0, text : '<bb-local-op>N<1></bb-local-op>: v2i64 = Register <global-op>%vreg0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<2></bb-local-op>: v2i64 = Register <global-op>%vreg1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<3></bb-local-op>: i16 = TargetConstant<0>' },
{ dl : 0, text : '<bb-local-op>N<4></bb-local-op>: v2i64 = Register <global-op>%XMM0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<5></bb-local-op>: v2i64 = Register <global-op>%XMM1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<6></bb-local-op>: v2i64 = undef' },
{ dl : 0, text : '<bb-local-op>N<7></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<1></bb-local-op>' },
{ dl : 0, text : '<bb-local-op>N<8></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<2></bb-local-op>' },
{ dl : 1, text : '<bb-local-op>N<9></bb-local-op>: v2i64 = X86ISD::UNPCKH <bb-local-op>N<7></bb-local-op>, <bb-local-op>N<8></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<10></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<9></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<11></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<10></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<6></bb-local-op>, <bb-local-op>N<10></bb-local-op>:1' },
{ dl : 2, text : '<bb-local-op>N<12></bb-local-op>: ch = X86ISD::RET_FLAG <bb-local-op>N<11></bb-local-op>, <bb-local-op>N<3></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<11></bb-local-op>:1' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
var func_pass_dump = addOrGetPass(func, 'Selected selection DAG');
func_pass_dump.setBasicBlocks([{ name: 'BB#0: ',
  instrs: [
{ dl : 0, text : '<bb-local-op>N<0></bb-local-op>: ch = EntryToken' },
{ dl : 0, text : '<bb-local-op>N<1></bb-local-op>: v2i64 = Register <global-op>%vreg0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<2></bb-local-op>: v2i64 = Register <global-op>%vreg1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<3></bb-local-op>: v2i64 = Register <global-op>%XMM0</global-op>' },
{ dl : 0, text : '<bb-local-op>N<4></bb-local-op>: v2i64 = Register <global-op>%XMM1</global-op>' },
{ dl : 0, text : '<bb-local-op>N<5></bb-local-op>: v2i64 = IMPLICIT_DEF' },
{ dl : 0, text : '<bb-local-op>N<6></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<1></bb-local-op>' },
{ dl : 0, text : '<bb-local-op>N<7></bb-local-op>: v2i64,ch = CopyFromReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<2></bb-local-op>' },
{ dl : 1, text : '<bb-local-op>N<8></bb-local-op>: v2i64 = PUNPCKHQDQrr <bb-local-op>N<6></bb-local-op>, <bb-local-op>N<7></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<9></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<0></bb-local-op>, <bb-local-op>N<3></bb-local-op>, <bb-local-op>N<8></bb-local-op>' },
{ dl : 2, text : '<bb-local-op>N<10></bb-local-op>: ch,glue = CopyToReg <bb-local-op>N<9></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<5></bb-local-op>, <bb-local-op>N<9></bb-local-op>:1' },
{ dl : 2, text : '<bb-local-op>N<11></bb-local-op>: ch = RETQ <bb-local-op>N<3></bb-local-op>, <bb-local-op>N<4></bb-local-op>, <bb-local-op>N<10></bb-local-op>, <bb-local-op>N<10></bb-local-op>:1' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Expand ISel Pseudo-instructions'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Tail Duplication'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Optimize machine instruction PHIs'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Slot index numbering'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Merge disjoint stack slots'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Local Stack Slot Allocation'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Remove dead machine instructions'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Early If-Conversion'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Machine Loop Invariant Code Motion'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Machine Common Subexpression Elimination'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Machine code sinking'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Peephole Optimizations'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Remove dead machine instructions'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 0, text : '<global-op>%vreg3</global-op><def> = IMPLICIT_DEF' },
        { dl : 2, text : '<global-op>%XMM1</global-op><def> = COPY <global-op>%vreg3</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Process Implicit Definitions'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Remove unreachable machine basic blocks'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Live Variable Analysis'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op><kill>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op><kill>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><kill,tied0>, <global-op>%vreg1</global-op><kill>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op><kill>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Eliminate PHI nodes for register allocation'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op><kill>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op><kill>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg0</global-op><kill,tied0>, <global-op>%vreg1</global-op><kill>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op><kill>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Two-Address instruction pass'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op><kill>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op><kill>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%vreg0</global-op><kill>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op><kill>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op><kill>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Slot index numbering'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op><kill>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op><kill>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%vreg0</global-op><kill>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op><kill>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op><kill>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Live Interval Analysis'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg0</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%vreg0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Simple Register Coalescing'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Machine Instruction Scheduler'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Debug Variable Analysis'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Live Stack Slot Analysis'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Virtual Register Map'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Live Register Matrix'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 0, text : '<global-op>%vreg1</global-op><def> = COPY <global-op>%XMM1</global-op>' },
        { dl : 0, text : '<global-op>%vreg2</global-op><def> = COPY <global-op>%XMM0</global-op>' },
        { dl : 1, text : '<global-op>%vreg2</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%vreg2</global-op><tied0>, <global-op>%vreg1</global-op>' },
        { dl : 2, text : '<global-op>%XMM0</global-op><def> = COPY <global-op>%vreg2</global-op>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Virtual Register Rewriter'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Stack Slot Coloring'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Machine Loop Invariant Code Motion'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Prologue/Epilogue Insertion & Frame Finalization'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Control Flow Optimizer'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Tail Duplication'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Machine Copy Propagation Pass'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Post-RA pseudo instruction expansion pass'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Post RA top-down list latency scheduler'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Analyze Machine Code For Garbage Collection'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After Branch Probability Basic Block Placement'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
<script type='text/javascript'>
var func = addOrGetFunction('test1');
func.passes.push(new FunctionPassDump('After StackMap Liveness Analysis'));
var func_pass_dump = func.passes[func.passes.length-1];
func_pass_dump.setBasicBlocks([{ name: 'BB#0: derived from LLVM BB %0',
  instrs: [
        { dl : 1, text : '<global-op>%XMM0</global-op><def,tied1> = PUNPCKHQDQrr <global-op>%XMM0</global-op><kill,tied0>, <global-op>%XMM1</global-op><kill>' },
        { dl : 2, text : 'RETQ <global-op>%XMM0</global-op>, <global-op>%XMM1</global-op><undef>' },
  ]
},
]);
</script>
</div>
<script type='text/javascript'>
// Set current function
selectFunction(document.getElementById('functions'));
</script>
</body>
</html>