<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>