Skip to content

Instantly share code, notes, and snippets.

@bwrsandman
Created March 10, 2019 00:38
Show Gist options
  • Save bwrsandman/d218a2d8590e5b74310cfd6dac8f234e to your computer and use it in GitHub Desktop.
Save bwrsandman/d218a2d8590e5b74310cfd6dac8f234e to your computer and use it in GitHub Desktop.
constant_propagation_pass optimization issue
O0/constant_propagation_pass.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x0000000000000000
Disassembly of section .text:
0000000000000000 <xe::cpu::compiler::passes::ConstantPropagationPass::ConstantPropagationPass()>:
using xe::cpu::hir::HIRBuilder;
using xe::cpu::hir::TypeName;
using xe::cpu::hir::Value;
ConstantPropagationPass::ConstantPropagationPass() __attribute__ ((optnone))
: ConditionalGroupSubpass() {}
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 10 sub $0x10,%rsp
8: 48 89 7d f8 mov %rdi,-0x8(%rbp)
c: 48 8b 7d f8 mov -0x8(%rbp),%rdi
10: 48 89 f8 mov %rdi,%rax
13: 48 89 7d f0 mov %rdi,-0x10(%rbp)
17: 48 89 c7 mov %rax,%rdi
1a: e8 00 00 00 00 callq 1f <xe::cpu::compiler::passes::ConstantPropagationPass::ConstantPropagationPass()+0x1f>
1f: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 26 <xe::cpu::compiler::passes::ConstantPropagationPass::ConstantPropagationPass()+0x26>
26: 48 83 c0 10 add $0x10,%rax
2a: 48 8b 7d f0 mov -0x10(%rbp),%rdi
2e: 48 89 07 mov %rax,(%rdi)
31: 48 83 c4 10 add $0x10,%rsp
35: 5d pop %rbp
36: c3 retq
37: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
3e: 00 00
0000000000000040 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()>:
ConstantPropagationPass::~ConstantPropagationPass() __attribute__ ((optnone)) {}
40: 55 push %rbp
41: 48 89 e5 mov %rsp,%rbp
44: 48 83 ec 10 sub $0x10,%rsp
48: 48 89 7d f8 mov %rdi,-0x8(%rbp)
4c: 48 8b 7d f8 mov -0x8(%rbp),%rdi
50: e8 00 00 00 00 callq 55 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()+0x15>
55: 48 83 c4 10 add $0x10,%rsp
59: 5d pop %rbp
5a: c3 retq
5b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
0000000000000060 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()>:
60: 55 push %rbp
61: 48 89 e5 mov %rsp,%rbp
64: 48 83 ec 10 sub $0x10,%rsp
68: 48 89 7d f8 mov %rdi,-0x8(%rbp)
6c: 48 8b 7d f8 mov -0x8(%rbp),%rdi
70: 48 89 7d f0 mov %rdi,-0x10(%rbp)
74: e8 c7 ff ff ff callq 40 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()>
79: 48 8b 7d f0 mov -0x10(%rbp),%rdi
7d: e8 00 00 00 00 callq 82 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()+0x22>
82: 48 83 c4 10 add $0x10,%rsp
86: 5d pop %rbp
87: c3 retq
88: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
8f: 00
0000000000000090 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)>:
bool ConstantPropagationPass::Run(HIRBuilder* builder, bool& result) __attribute__ ((optnone)) {
90: 55 push %rbp
91: 48 89 e5 mov %rsp,%rbp
94: 48 81 ec e0 01 00 00 sub $0x1e0,%rsp
9b: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
a2: 00 00
a4: 48 89 45 f8 mov %rax,-0x8(%rbp)
a8: 48 89 7d d0 mov %rdi,-0x30(%rbp)
ac: 48 89 75 c8 mov %rsi,-0x38(%rbp)
b0: 48 89 55 c0 mov %rdx,-0x40(%rbp)
b4: 48 8b 45 d0 mov -0x30(%rbp),%rax
// v2 = did_carry v1
// should become:
// v1 = 19
// v2 = 0
result = false;
b8: 48 8b 55 c0 mov -0x40(%rbp),%rdx
bc: c6 02 00 movb $0x0,(%rdx)
auto block = builder->first_block();
bf: 48 8b 7d c8 mov -0x38(%rbp),%rdi
c3: 48 89 85 88 fe ff ff mov %rax,-0x178(%rbp)
ca: e8 00 00 00 00 callq cf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3f>
cf: 48 89 45 b8 mov %rax,-0x48(%rbp)
while (block) {
d3: 48 83 7d b8 00 cmpq $0x0,-0x48(%rbp)
d8: 0f 84 3a 2a 00 00 je 2b18 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a88>
auto i = block->instr_head;
de: 48 8b 45 b8 mov -0x48(%rbp),%rax
e2: 48 8b 40 40 mov 0x40(%rax),%rax
e6: 48 89 45 b0 mov %rax,-0x50(%rbp)
while (i) {
ea: 48 83 7d b0 00 cmpq $0x0,-0x50(%rbp)
ef: 0f 84 12 2a 00 00 je 2b07 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a77>
auto v = i->dest;
f5: 48 8b 45 b0 mov -0x50(%rbp),%rax
f9: 48 8b 40 28 mov 0x28(%rax),%rax
fd: 48 89 45 a8 mov %rax,-0x58(%rbp)
switch (i->opcode->num) {
101: 48 8b 45 b0 mov -0x50(%rbp),%rax
105: 48 8b 40 18 mov 0x18(%rax),%rax
109: 8b 48 10 mov 0x10(%rax),%ecx
10c: 83 c1 fc add $0xfffffffc,%ecx
10f: 89 c8 mov %ecx,%eax
111: 83 e9 64 sub $0x64,%ecx
114: 48 89 85 80 fe ff ff mov %rax,-0x180(%rbp)
11b: 89 8d 7c fe ff ff mov %ecx,-0x184(%rbp)
121: 0f 87 ca 29 00 00 ja 2af1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a61>
127: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 12e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9e>
12e: 48 8b 8d 80 fe ff ff mov -0x180(%rbp),%rcx
135: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
139: 48 01 c2 add %rax,%rdx
13c: ff e2 jmpq *%rdx
case OPCODE_DEBUG_BREAK_TRUE:
if (i->src1.value->IsConstant()) {
13e: 48 8b 45 b0 mov -0x50(%rbp),%rax
142: 48 8b 78 30 mov 0x30(%rax),%rdi
146: e8 00 00 00 00 callq 14b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbb>
14b: a8 01 test $0x1,%al
14d: 0f 85 05 00 00 00 jne 158 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc8>
153: e9 47 00 00 00 jmpq 19f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10f>
if (i->src1.value->IsConstantTrue()) {
158: 48 8b 45 b0 mov -0x50(%rbp),%rax
15c: 48 8b 78 30 mov 0x30(%rax),%rdi
160: e8 00 00 00 00 callq 165 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd5>
165: a8 01 test $0x1,%al
167: 0f 85 05 00 00 00 jne 172 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe2>
16d: e9 1d 00 00 00 jmpq 18f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xff>
172: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 179 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe9>
i->Replace(&OPCODE_DEBUG_BREAK_info, i->flags);
179: 48 8b 7d b0 mov -0x50(%rbp),%rdi
17d: 48 8b 45 b0 mov -0x50(%rbp),%rax
181: 0f b7 50 20 movzwl 0x20(%rax),%edx
185: e8 00 00 00 00 callq 18a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfa>
} else {
18a: e9 09 00 00 00 jmpq 198 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x108>
i->Remove();
18f: 48 8b 7d b0 mov -0x50(%rbp),%rdi
193: e8 00 00 00 00 callq 198 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x108>
}
result = true;
198: 48 8b 45 c0 mov -0x40(%rbp),%rax
19c: c6 00 01 movb $0x1,(%rax)
}
break;
19f: e9 52 29 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_TRAP_TRUE:
if (i->src1.value->IsConstant()) {
1a4: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a8: 48 8b 78 30 mov 0x30(%rax),%rdi
1ac: e8 00 00 00 00 callq 1b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x121>
1b1: a8 01 test $0x1,%al
1b3: 0f 85 05 00 00 00 jne 1be <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12e>
1b9: e9 47 00 00 00 jmpq 205 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x175>
if (i->src1.value->IsConstantTrue()) {
1be: 48 8b 45 b0 mov -0x50(%rbp),%rax
1c2: 48 8b 78 30 mov 0x30(%rax),%rdi
1c6: e8 00 00 00 00 callq 1cb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13b>
1cb: a8 01 test $0x1,%al
1cd: 0f 85 05 00 00 00 jne 1d8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x148>
1d3: e9 1d 00 00 00 jmpq 1f5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x165>
1d8: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1df <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14f>
i->Replace(&OPCODE_TRAP_info, i->flags);
1df: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1e3: 48 8b 45 b0 mov -0x50(%rbp),%rax
1e7: 0f b7 50 20 movzwl 0x20(%rax),%edx
1eb: e8 00 00 00 00 callq 1f0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x160>
} else {
1f0: e9 09 00 00 00 jmpq 1fe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16e>
i->Remove();
1f5: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1f9: e8 00 00 00 00 callq 1fe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16e>
}
result = true;
1fe: 48 8b 45 c0 mov -0x40(%rbp),%rax
202: c6 00 01 movb $0x1,(%rax)
}
break;
205: e9 ec 28 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_CALL_TRUE:
if (i->src1.value->IsConstant()) {
20a: 48 8b 45 b0 mov -0x50(%rbp),%rax
20e: 48 8b 78 30 mov 0x30(%rax),%rdi
212: e8 00 00 00 00 callq 217 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x187>
217: a8 01 test $0x1,%al
219: 0f 85 05 00 00 00 jne 224 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x194>
21f: e9 5f 00 00 00 jmpq 283 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f3>
if (i->src1.value->IsConstantTrue()) {
224: 48 8b 45 b0 mov -0x50(%rbp),%rax
228: 48 8b 78 30 mov 0x30(%rax),%rdi
22c: e8 00 00 00 00 callq 231 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a1>
231: a8 01 test $0x1,%al
233: 0f 85 05 00 00 00 jne 23e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ae>
239: e9 35 00 00 00 jmpq 273 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e3>
23e: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 245 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b5>
auto symbol = i->src2.symbol;
245: 48 8b 45 b0 mov -0x50(%rbp),%rax
249: 48 8b 40 38 mov 0x38(%rax),%rax
24d: 48 89 45 a0 mov %rax,-0x60(%rbp)
i->Replace(&OPCODE_CALL_info, i->flags);
251: 48 8b 7d b0 mov -0x50(%rbp),%rdi
255: 48 8b 45 b0 mov -0x50(%rbp),%rax
259: 0f b7 50 20 movzwl 0x20(%rax),%edx
25d: e8 00 00 00 00 callq 262 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d2>
i->src1.symbol = symbol;
262: 48 8b 45 a0 mov -0x60(%rbp),%rax
266: 48 8b 75 b0 mov -0x50(%rbp),%rsi
26a: 48 89 46 30 mov %rax,0x30(%rsi)
} else {
26e: e9 09 00 00 00 jmpq 27c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ec>
i->Remove();
273: 48 8b 7d b0 mov -0x50(%rbp),%rdi
277: e8 00 00 00 00 callq 27c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ec>
}
result = true;
27c: 48 8b 45 c0 mov -0x40(%rbp),%rax
280: c6 00 01 movb $0x1,(%rax)
}
break;
283: e9 6e 28 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_CALL_INDIRECT:
if (i->src1.value->IsConstant()) {
288: 48 8b 45 b0 mov -0x50(%rbp),%rax
28c: 48 8b 78 30 mov 0x30(%rax),%rdi
290: e8 00 00 00 00 callq 295 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x205>
295: a8 01 test $0x1,%al
297: 0f 85 05 00 00 00 jne 2a2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x212>
29d: e9 5a 00 00 00 jmpq 2fc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26c>
auto function = processor_->LookupFunction(
2a2: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax
2a9: 48 8b 78 08 mov 0x8(%rax),%rdi
uint32_t(i->src1.value->constant.i32));
2ad: 48 8b 4d b0 mov -0x50(%rbp),%rcx
2b1: 48 8b 49 30 mov 0x30(%rcx),%rcx
2b5: 8b 71 20 mov 0x20(%rcx),%esi
auto function = processor_->LookupFunction(
2b8: e8 00 00 00 00 callq 2bd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22d>
2bd: 48 89 45 98 mov %rax,-0x68(%rbp)
if (!function) {
2c1: 48 83 7d 98 00 cmpq $0x0,-0x68(%rbp)
2c6: 0f 85 05 00 00 00 jne 2d1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x241>
break;
2cc: e9 25 28 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
2d1: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 2d8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x248>
}
i->Replace(&OPCODE_CALL_info, i->flags);
2d8: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2dc: 48 8b 45 b0 mov -0x50(%rbp),%rax
2e0: 0f b7 50 20 movzwl 0x20(%rax),%edx
2e4: e8 00 00 00 00 callq 2e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x259>
i->src1.symbol = function;
2e9: 48 8b 45 98 mov -0x68(%rbp),%rax
2ed: 48 8b 75 b0 mov -0x50(%rbp),%rsi
2f1: 48 89 46 30 mov %rax,0x30(%rsi)
result = true;
2f5: 48 8b 45 c0 mov -0x40(%rbp),%rax
2f9: c6 00 01 movb $0x1,(%rax)
}
break;
2fc: e9 f5 27 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_CALL_INDIRECT_TRUE:
if (i->src1.value->IsConstant()) {
301: 48 8b 45 b0 mov -0x50(%rbp),%rax
305: 48 8b 78 30 mov 0x30(%rax),%rdi
309: e8 00 00 00 00 callq 30e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27e>
30e: a8 01 test $0x1,%al
310: 0f 85 05 00 00 00 jne 31b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28b>
316: e9 60 00 00 00 jmpq 37b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2eb>
if (i->src1.value->IsConstantTrue()) {
31b: 48 8b 45 b0 mov -0x50(%rbp),%rax
31f: 48 8b 78 30 mov 0x30(%rax),%rdi
323: e8 00 00 00 00 callq 328 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x298>
328: a8 01 test $0x1,%al
32a: 0f 85 05 00 00 00 jne 335 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a5>
330: e9 36 00 00 00 jmpq 36b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2db>
335: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 33c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2ac>
auto value = i->src2.value;
33c: 48 8b 45 b0 mov -0x50(%rbp),%rax
340: 48 8b 40 38 mov 0x38(%rax),%rax
344: 48 89 45 90 mov %rax,-0x70(%rbp)
i->Replace(&OPCODE_CALL_INDIRECT_info, i->flags);
348: 48 8b 7d b0 mov -0x50(%rbp),%rdi
34c: 48 8b 45 b0 mov -0x50(%rbp),%rax
350: 0f b7 50 20 movzwl 0x20(%rax),%edx
354: e8 00 00 00 00 callq 359 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2c9>
i->set_src1(value);
359: 48 8b 7d b0 mov -0x50(%rbp),%rdi
35d: 48 8b 75 90 mov -0x70(%rbp),%rsi
361: e8 00 00 00 00 callq 366 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2d6>
} else {
366: e9 09 00 00 00 jmpq 374 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2e4>
i->Remove();
36b: 48 8b 7d b0 mov -0x50(%rbp),%rdi
36f: e8 00 00 00 00 callq 374 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2e4>
}
result = true;
374: 48 8b 45 c0 mov -0x40(%rbp),%rax
378: c6 00 01 movb $0x1,(%rax)
}
break;
37b: e9 76 27 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_BRANCH_TRUE:
if (i->src1.value->IsConstant()) {
380: 48 8b 45 b0 mov -0x50(%rbp),%rax
384: 48 8b 78 30 mov 0x30(%rax),%rdi
388: e8 00 00 00 00 callq 38d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2fd>
38d: a8 01 test $0x1,%al
38f: 0f 85 05 00 00 00 jne 39a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x30a>
395: e9 5f 00 00 00 jmpq 3f9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x369>
if (i->src1.value->IsConstantTrue()) {
39a: 48 8b 45 b0 mov -0x50(%rbp),%rax
39e: 48 8b 78 30 mov 0x30(%rax),%rdi
3a2: e8 00 00 00 00 callq 3a7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x317>
3a7: a8 01 test $0x1,%al
3a9: 0f 85 05 00 00 00 jne 3b4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x324>
3af: e9 35 00 00 00 jmpq 3e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x359>
3b4: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 3bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x32b>
auto label = i->src2.label;
3bb: 48 8b 45 b0 mov -0x50(%rbp),%rax
3bf: 48 8b 40 38 mov 0x38(%rax),%rax
3c3: 48 89 45 88 mov %rax,-0x78(%rbp)
i->Replace(&OPCODE_BRANCH_info, i->flags);
3c7: 48 8b 7d b0 mov -0x50(%rbp),%rdi
3cb: 48 8b 45 b0 mov -0x50(%rbp),%rax
3cf: 0f b7 50 20 movzwl 0x20(%rax),%edx
3d3: e8 00 00 00 00 callq 3d8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x348>
i->src1.label = label;
3d8: 48 8b 45 88 mov -0x78(%rbp),%rax
3dc: 48 8b 75 b0 mov -0x50(%rbp),%rsi
3e0: 48 89 46 30 mov %rax,0x30(%rsi)
} else {
3e4: e9 09 00 00 00 jmpq 3f2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x362>
i->Remove();
3e9: 48 8b 7d b0 mov -0x50(%rbp),%rdi
3ed: e8 00 00 00 00 callq 3f2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x362>
}
result = true;
3f2: 48 8b 45 c0 mov -0x40(%rbp),%rax
3f6: c6 00 01 movb $0x1,(%rax)
}
break;
3f9: e9 f8 26 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_BRANCH_FALSE:
if (i->src1.value->IsConstant()) {
3fe: 48 8b 45 b0 mov -0x50(%rbp),%rax
402: 48 8b 78 30 mov 0x30(%rax),%rdi
406: e8 00 00 00 00 callq 40b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x37b>
40b: a8 01 test $0x1,%al
40d: 0f 85 05 00 00 00 jne 418 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x388>
413: e9 5f 00 00 00 jmpq 477 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3e7>
if (i->src1.value->IsConstantFalse()) {
418: 48 8b 45 b0 mov -0x50(%rbp),%rax
41c: 48 8b 78 30 mov 0x30(%rax),%rdi
420: e8 00 00 00 00 callq 425 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x395>
425: a8 01 test $0x1,%al
427: 0f 85 05 00 00 00 jne 432 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3a2>
42d: e9 35 00 00 00 jmpq 467 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3d7>
432: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 439 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3a9>
auto label = i->src2.label;
439: 48 8b 45 b0 mov -0x50(%rbp),%rax
43d: 48 8b 40 38 mov 0x38(%rax),%rax
441: 48 89 45 80 mov %rax,-0x80(%rbp)
i->Replace(&OPCODE_BRANCH_info, i->flags);
445: 48 8b 7d b0 mov -0x50(%rbp),%rdi
449: 48 8b 45 b0 mov -0x50(%rbp),%rax
44d: 0f b7 50 20 movzwl 0x20(%rax),%edx
451: e8 00 00 00 00 callq 456 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3c6>
i->src1.label = label;
456: 48 8b 45 80 mov -0x80(%rbp),%rax
45a: 48 8b 75 b0 mov -0x50(%rbp),%rsi
45e: 48 89 46 30 mov %rax,0x30(%rsi)
} else {
462: e9 09 00 00 00 jmpq 470 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3e0>
i->Remove();
467: 48 8b 7d b0 mov -0x50(%rbp),%rdi
46b: e8 00 00 00 00 callq 470 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3e0>
}
result = true;
470: 48 8b 45 c0 mov -0x40(%rbp),%rax
474: c6 00 01 movb $0x1,(%rax)
}
break;
477: e9 7a 26 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_CAST:
if (i->src1.value->IsConstant()) {
47c: 48 8b 45 b0 mov -0x50(%rbp),%rax
480: 48 8b 78 30 mov 0x30(%rax),%rdi
484: e8 00 00 00 00 callq 489 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3f9>
489: a8 01 test $0x1,%al
48b: 0f 85 05 00 00 00 jne 496 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x406>
491: e9 3d 00 00 00 jmpq 4d3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x443>
TypeName target_type = v->type;
496: 48 8b 45 a8 mov -0x58(%rbp),%rax
49a: 8b 48 04 mov 0x4(%rax),%ecx
49d: 89 8d 7c ff ff ff mov %ecx,-0x84(%rbp)
v->set_from(i->src1.value);
4a3: 48 8b 7d a8 mov -0x58(%rbp),%rdi
4a7: 48 8b 45 b0 mov -0x50(%rbp),%rax
4ab: 48 8b 70 30 mov 0x30(%rax),%rsi
4af: e8 00 00 00 00 callq 4b4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x424>
v->Cast(target_type);
4b4: 48 8b 7d a8 mov -0x58(%rbp),%rdi
4b8: 8b b5 7c ff ff ff mov -0x84(%rbp),%esi
4be: e8 00 00 00 00 callq 4c3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x433>
i->Remove();
4c3: 48 8b 7d b0 mov -0x50(%rbp),%rdi
4c7: e8 00 00 00 00 callq 4cc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x43c>
result = true;
4cc: 48 8b 45 c0 mov -0x40(%rbp),%rax
4d0: c6 00 01 movb $0x1,(%rax)
}
break;
4d3: e9 1e 26 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_CONVERT:
if (i->src1.value->IsConstant()) {
4d8: 48 8b 45 b0 mov -0x50(%rbp),%rax
4dc: 48 8b 78 30 mov 0x30(%rax),%rdi
4e0: e8 00 00 00 00 callq 4e5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x455>
4e5: a8 01 test $0x1,%al
4e7: 0f 85 05 00 00 00 jne 4f2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x462>
4ed: e9 45 00 00 00 jmpq 537 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4a7>
TypeName target_type = v->type;
4f2: 48 8b 45 a8 mov -0x58(%rbp),%rax
4f6: 8b 48 04 mov 0x4(%rax),%ecx
4f9: 89 8d 78 ff ff ff mov %ecx,-0x88(%rbp)
v->set_from(i->src1.value);
4ff: 48 8b 7d a8 mov -0x58(%rbp),%rdi
503: 48 8b 45 b0 mov -0x50(%rbp),%rax
507: 48 8b 70 30 mov 0x30(%rax),%rsi
50b: e8 00 00 00 00 callq 510 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x480>
v->Convert(target_type, RoundMode(i->flags));
510: 48 8b 7d a8 mov -0x58(%rbp),%rdi
514: 8b b5 78 ff ff ff mov -0x88(%rbp),%esi
51a: 48 8b 45 b0 mov -0x50(%rbp),%rax
51e: 0f b7 50 20 movzwl 0x20(%rax),%edx
522: e8 00 00 00 00 callq 527 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x497>
i->Remove();
527: 48 8b 7d b0 mov -0x50(%rbp),%rdi
52b: e8 00 00 00 00 callq 530 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4a0>
result = true;
530: 48 8b 45 c0 mov -0x40(%rbp),%rax
534: c6 00 01 movb $0x1,(%rax)
}
break;
537: e9 ba 25 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_ROUND:
if (i->src1.value->IsConstant()) {
53c: 48 8b 45 b0 mov -0x50(%rbp),%rax
540: 48 8b 78 30 mov 0x30(%rax),%rdi
544: e8 00 00 00 00 callq 549 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4b9>
549: a8 01 test $0x1,%al
54b: 0f 85 05 00 00 00 jne 556 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4c6>
551: e9 32 00 00 00 jmpq 588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4f8>
v->set_from(i->src1.value);
556: 48 8b 7d a8 mov -0x58(%rbp),%rdi
55a: 48 8b 45 b0 mov -0x50(%rbp),%rax
55e: 48 8b 70 30 mov 0x30(%rax),%rsi
562: e8 00 00 00 00 callq 567 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4d7>
v->Round(RoundMode(i->flags));
567: 48 8b 7d a8 mov -0x58(%rbp),%rdi
56b: 48 8b 45 b0 mov -0x50(%rbp),%rax
56f: 0f b7 70 20 movzwl 0x20(%rax),%esi
573: e8 00 00 00 00 callq 578 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4e8>
i->Remove();
578: 48 8b 7d b0 mov -0x50(%rbp),%rdi
57c: e8 00 00 00 00 callq 581 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4f1>
result = true;
581: 48 8b 45 c0 mov -0x40(%rbp),%rax
585: c6 00 01 movb $0x1,(%rax)
}
break;
588: e9 69 25 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_ZERO_EXTEND:
if (i->src1.value->IsConstant()) {
58d: 48 8b 45 b0 mov -0x50(%rbp),%rax
591: 48 8b 78 30 mov 0x30(%rax),%rdi
595: e8 00 00 00 00 callq 59a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x50a>
59a: a8 01 test $0x1,%al
59c: 0f 85 05 00 00 00 jne 5a7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x517>
5a2: e9 3d 00 00 00 jmpq 5e4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x554>
TypeName target_type = v->type;
5a7: 48 8b 45 a8 mov -0x58(%rbp),%rax
5ab: 8b 48 04 mov 0x4(%rax),%ecx
5ae: 89 8d 74 ff ff ff mov %ecx,-0x8c(%rbp)
v->set_from(i->src1.value);
5b4: 48 8b 7d a8 mov -0x58(%rbp),%rdi
5b8: 48 8b 45 b0 mov -0x50(%rbp),%rax
5bc: 48 8b 70 30 mov 0x30(%rax),%rsi
5c0: e8 00 00 00 00 callq 5c5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x535>
v->ZeroExtend(target_type);
5c5: 48 8b 7d a8 mov -0x58(%rbp),%rdi
5c9: 8b b5 74 ff ff ff mov -0x8c(%rbp),%esi
5cf: e8 00 00 00 00 callq 5d4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x544>
i->Remove();
5d4: 48 8b 7d b0 mov -0x50(%rbp),%rdi
5d8: e8 00 00 00 00 callq 5dd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x54d>
result = true;
5dd: 48 8b 45 c0 mov -0x40(%rbp),%rax
5e1: c6 00 01 movb $0x1,(%rax)
}
break;
5e4: e9 0d 25 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SIGN_EXTEND:
if (i->src1.value->IsConstant()) {
5e9: 48 8b 45 b0 mov -0x50(%rbp),%rax
5ed: 48 8b 78 30 mov 0x30(%rax),%rdi
5f1: e8 00 00 00 00 callq 5f6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x566>
5f6: a8 01 test $0x1,%al
5f8: 0f 85 05 00 00 00 jne 603 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x573>
5fe: e9 3d 00 00 00 jmpq 640 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5b0>
TypeName target_type = v->type;
603: 48 8b 45 a8 mov -0x58(%rbp),%rax
607: 8b 48 04 mov 0x4(%rax),%ecx
60a: 89 8d 70 ff ff ff mov %ecx,-0x90(%rbp)
v->set_from(i->src1.value);
610: 48 8b 7d a8 mov -0x58(%rbp),%rdi
614: 48 8b 45 b0 mov -0x50(%rbp),%rax
618: 48 8b 70 30 mov 0x30(%rax),%rsi
61c: e8 00 00 00 00 callq 621 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x591>
v->SignExtend(target_type);
621: 48 8b 7d a8 mov -0x58(%rbp),%rdi
625: 8b b5 70 ff ff ff mov -0x90(%rbp),%esi
62b: e8 00 00 00 00 callq 630 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5a0>
i->Remove();
630: 48 8b 7d b0 mov -0x50(%rbp),%rdi
634: e8 00 00 00 00 callq 639 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5a9>
result = true;
639: 48 8b 45 c0 mov -0x40(%rbp),%rax
63d: c6 00 01 movb $0x1,(%rax)
}
break;
640: e9 b1 24 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_TRUNCATE:
if (i->src1.value->IsConstant()) {
645: 48 8b 45 b0 mov -0x50(%rbp),%rax
649: 48 8b 78 30 mov 0x30(%rax),%rdi
64d: e8 00 00 00 00 callq 652 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5c2>
652: a8 01 test $0x1,%al
654: 0f 85 05 00 00 00 jne 65f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5cf>
65a: e9 3d 00 00 00 jmpq 69c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x60c>
TypeName target_type = v->type;
65f: 48 8b 45 a8 mov -0x58(%rbp),%rax
663: 8b 48 04 mov 0x4(%rax),%ecx
666: 89 8d 6c ff ff ff mov %ecx,-0x94(%rbp)
v->set_from(i->src1.value);
66c: 48 8b 7d a8 mov -0x58(%rbp),%rdi
670: 48 8b 45 b0 mov -0x50(%rbp),%rax
674: 48 8b 70 30 mov 0x30(%rax),%rsi
678: e8 00 00 00 00 callq 67d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5ed>
v->Truncate(target_type);
67d: 48 8b 7d a8 mov -0x58(%rbp),%rdi
681: 8b b5 6c ff ff ff mov -0x94(%rbp),%esi
687: e8 00 00 00 00 callq 68c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5fc>
i->Remove();
68c: 48 8b 7d b0 mov -0x50(%rbp),%rdi
690: e8 00 00 00 00 callq 695 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x605>
result = true;
695: 48 8b 45 c0 mov -0x40(%rbp),%rax
699: c6 00 01 movb $0x1,(%rax)
}
break;
69c: e9 55 24 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_LOAD:
case OPCODE_LOAD_OFFSET:
if (i->src1.value->IsConstant()) {
6a1: 48 8b 45 b0 mov -0x50(%rbp),%rax
6a5: 48 8b 78 30 mov 0x30(%rax),%rdi
6a9: e8 00 00 00 00 callq 6ae <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x61e>
6ae: a8 01 test $0x1,%al
6b0: 0f 85 05 00 00 00 jne 6bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x62b>
6b6: e9 3d 03 00 00 jmpq 9f8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x968>
assert_false(i->flags & LOAD_STORE_BYTE_SWAP);
6bb: 48 8b 45 b0 mov -0x50(%rbp),%rax
6bf: 0f b7 48 20 movzwl 0x20(%rax),%ecx
6c3: 83 e1 01 and $0x1,%ecx
6c6: 83 f9 00 cmp $0x0,%ecx
6c9: 0f 95 c2 setne %dl
6cc: 80 f2 ff xor $0xff,%dl
6cf: f6 c2 01 test $0x1,%dl
6d2: 0f 85 05 00 00 00 jne 6dd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x64d>
6d8: e9 05 00 00 00 jmpq 6e2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x652>
6dd: e9 1f 00 00 00 jmpq 701 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x671>
6e2: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 6e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x659>
6e9: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 6f0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x660>
6f0: ba d7 00 00 00 mov $0xd7,%edx
6f5: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 6fc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x66c>
6fc: e8 00 00 00 00 callq 701 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x671>
auto memory = processor_->memory();
701: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax
708: 48 8b 78 08 mov 0x8(%rax),%rdi
70c: e8 00 00 00 00 callq 711 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x681>
711: 48 89 85 60 ff ff ff mov %rax,-0xa0(%rbp)
auto address = i->src1.value->constant.i32;
718: 48 8b 45 b0 mov -0x50(%rbp),%rax
71c: 48 8b 40 30 mov 0x30(%rax),%rax
720: 8b 48 20 mov 0x20(%rax),%ecx
723: 89 8d 5c ff ff ff mov %ecx,-0xa4(%rbp)
if (i->opcode->num == OPCODE_LOAD_OFFSET) {
729: 48 8b 45 b0 mov -0x50(%rbp),%rax
72d: 48 8b 40 18 mov 0x18(%rax),%rax
731: 83 78 10 25 cmpl $0x25,0x10(%rax)
735: 0f 85 17 00 00 00 jne 752 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6c2>
address += i->src2.value->constant.i32;
73b: 48 8b 45 b0 mov -0x50(%rbp),%rax
73f: 48 8b 40 38 mov 0x38(%rax),%rax
743: 8b 48 20 mov 0x20(%rax),%ecx
746: 03 8d 5c ff ff ff add -0xa4(%rbp),%ecx
74c: 89 8d 5c ff ff ff mov %ecx,-0xa4(%rbp)
}
auto mmio_range =
processor_->memory()->LookupVirtualMappedRange(address);
752: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax
759: 48 8b 78 08 mov 0x8(%rax),%rdi
75d: e8 00 00 00 00 callq 762 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6d2>
762: 8b b5 5c ff ff ff mov -0xa4(%rbp),%esi
768: 48 89 c7 mov %rax,%rdi
76b: e8 00 00 00 00 callq 770 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6e0>
auto mmio_range =
770: 48 89 85 50 ff ff ff mov %rax,-0xb0(%rbp)
if (FLAGS_inline_mmio_access && mmio_range) {
777: f6 05 00 00 00 00 01 testb $0x1,0x0(%rip) # 77e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6ee>
77e: 0f 84 4a 00 00 00 je 7ce <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x73e>
784: 48 83 bd 50 ff ff ff cmpq $0x0,-0xb0(%rbp)
78b: 00
78c: 0f 84 3c 00 00 00 je 7ce <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x73e>
792: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 799 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x709>
799: 31 d2 xor %edx,%edx
i->Replace(&OPCODE_LOAD_MMIO_info, 0);
79b: 48 8b 7d b0 mov -0x50(%rbp),%rdi
79f: e8 00 00 00 00 callq 7a4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x714>
i->src1.offset = reinterpret_cast<uint64_t>(mmio_range);
7a4: 48 8b b5 50 ff ff ff mov -0xb0(%rbp),%rsi
7ab: 48 8b 7d b0 mov -0x50(%rbp),%rdi
7af: 48 89 77 30 mov %rsi,0x30(%rdi)
i->src2.offset = address;
7b3: 48 63 b5 5c ff ff ff movslq -0xa4(%rbp),%rsi
7ba: 48 8b 7d b0 mov -0x50(%rbp),%rdi
7be: 48 89 77 38 mov %rsi,0x38(%rdi)
result = true;
7c2: 48 8b 75 c0 mov -0x40(%rbp),%rsi
7c6: c6 06 01 movb $0x1,(%rsi)
} else {
7c9: e9 25 02 00 00 jmpq 9f3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x963>
auto heap = memory->LookupHeap(address);
7ce: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi
7d5: 8b b5 5c ff ff ff mov -0xa4(%rbp),%esi
7db: e8 00 00 00 00 callq 7e0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x750>
7e0: 48 89 85 48 ff ff ff mov %rax,-0xb8(%rbp)
uint32_t protect;
if (heap && heap->QueryProtect(address, &protect) &&
7e7: 48 83 bd 48 ff ff ff cmpq $0x0,-0xb8(%rbp)
7ee: 00
7ef: 0f 84 f9 01 00 00 je 9ee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x95e>
7f5: 48 8b bd 48 ff ff ff mov -0xb8(%rbp),%rdi
7fc: 8b b5 5c ff ff ff mov -0xa4(%rbp),%esi
802: 48 8d 55 dc lea -0x24(%rbp),%rdx
806: e8 00 00 00 00 callq 80b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x77b>
80b: a8 01 test $0x1,%al
80d: 0f 85 05 00 00 00 jne 818 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x788>
813: e9 d6 01 00 00 jmpq 9ee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x95e>
!(protect & kMemoryProtectWrite) &&
818: 8b 45 dc mov -0x24(%rbp),%eax
81b: 83 e0 02 and $0x2,%eax
81e: 83 f8 00 cmp $0x0,%eax
821: 0f 85 c7 01 00 00 jne 9ee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x95e>
(protect & kMemoryProtectRead)) {
827: 8b 45 dc mov -0x24(%rbp),%eax
82a: 83 e0 01 and $0x1,%eax
82d: 83 f8 00 cmp $0x0,%eax
if (heap && heap->QueryProtect(address, &protect) &&
830: 0f 84 b8 01 00 00 je 9ee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x95e>
// Memory is readonly - can just return the value.
auto host_addr = memory->TranslateVirtual(address);
836: 48 8b bd 60 ff ff ff mov -0xa0(%rbp),%rdi
83d: 8b b5 5c ff ff ff mov -0xa4(%rbp),%esi
843: e8 00 00 00 00 callq 848 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7b8>
848: 48 89 85 40 ff ff ff mov %rax,-0xc0(%rbp)
switch (v->type) {
84f: 48 8b 45 a8 mov -0x58(%rbp),%rax
853: 8b 70 04 mov 0x4(%rax),%esi
856: 89 f0 mov %esi,%eax
858: 48 89 c7 mov %rax,%rdi
85b: 48 83 ef 06 sub $0x6,%rdi
85f: 48 89 85 70 fe ff ff mov %rax,-0x190(%rbp)
866: 48 89 bd 68 fe ff ff mov %rdi,-0x198(%rbp)
86d: 0f 87 57 01 00 00 ja 9ca <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x93a>
873: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 87a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7ea>
87a: 48 8b 8d 70 fe ff ff mov -0x190(%rbp),%rcx
881: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
885: 48 01 c2 add %rax,%rdx
888: ff e2 jmpq *%rdx
case INT8_TYPE:
v->set_constant(xe::load<uint8_t>(host_addr));
88a: 48 8b 7d a8 mov -0x58(%rbp),%rdi
88e: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax
895: 48 89 bd 60 fe ff ff mov %rdi,-0x1a0(%rbp)
89c: 48 89 c7 mov %rax,%rdi
89f: e8 00 00 00 00 callq 8a4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x814>
8a4: 48 8b bd 60 fe ff ff mov -0x1a0(%rbp),%rdi
8ab: 0f b6 f0 movzbl %al,%esi
8ae: e8 00 00 00 00 callq 8b3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x823>
i->Remove();
8b3: 48 8b 7d b0 mov -0x50(%rbp),%rdi
8b7: e8 00 00 00 00 callq 8bc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x82c>
result = true;
8bc: 48 8b 7d c0 mov -0x40(%rbp),%rdi
8c0: c6 07 01 movb $0x1,(%rdi)
break;
8c3: e9 21 01 00 00 jmpq 9e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x959>
case INT16_TYPE:
v->set_constant(xe::load<uint16_t>(host_addr));
8c8: 48 8b 7d a8 mov -0x58(%rbp),%rdi
8cc: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax
8d3: 48 89 bd 58 fe ff ff mov %rdi,-0x1a8(%rbp)
8da: 48 89 c7 mov %rax,%rdi
8dd: e8 00 00 00 00 callq 8e2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x852>
8e2: 48 8b bd 58 fe ff ff mov -0x1a8(%rbp),%rdi
8e9: 0f b7 f0 movzwl %ax,%esi
8ec: e8 00 00 00 00 callq 8f1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x861>
i->Remove();
8f1: 48 8b 7d b0 mov -0x50(%rbp),%rdi
8f5: e8 00 00 00 00 callq 8fa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x86a>
result = true;
8fa: 48 8b 7d c0 mov -0x40(%rbp),%rdi
8fe: c6 07 01 movb $0x1,(%rdi)
break;
901: e9 e3 00 00 00 jmpq 9e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x959>
case INT32_TYPE:
v->set_constant(xe::load<uint32_t>(host_addr));
906: 48 8b 7d a8 mov -0x58(%rbp),%rdi
90a: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax
911: 48 89 bd 50 fe ff ff mov %rdi,-0x1b0(%rbp)
918: 48 89 c7 mov %rax,%rdi
91b: e8 00 00 00 00 callq 920 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x890>
920: 48 8b bd 50 fe ff ff mov -0x1b0(%rbp),%rdi
927: 89 c6 mov %eax,%esi
929: e8 00 00 00 00 callq 92e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x89e>
i->Remove();
92e: 48 8b 7d b0 mov -0x50(%rbp),%rdi
932: e8 00 00 00 00 callq 937 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8a7>
result = true;
937: 48 8b 7d c0 mov -0x40(%rbp),%rdi
93b: c6 07 01 movb $0x1,(%rdi)
break;
93e: e9 a6 00 00 00 jmpq 9e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x959>
case INT64_TYPE:
v->set_constant(xe::load<uint64_t>(host_addr));
943: 48 8b 7d a8 mov -0x58(%rbp),%rdi
947: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax
94e: 48 89 bd 48 fe ff ff mov %rdi,-0x1b8(%rbp)
955: 48 89 c7 mov %rax,%rdi
958: e8 00 00 00 00 callq 95d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8cd>
95d: 48 8b bd 48 fe ff ff mov -0x1b8(%rbp),%rdi
964: 48 89 c6 mov %rax,%rsi
967: e8 00 00 00 00 callq 96c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8dc>
i->Remove();
96c: 48 8b 7d b0 mov -0x50(%rbp),%rdi
970: e8 00 00 00 00 callq 975 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8e5>
result = true;
975: 48 8b 45 c0 mov -0x40(%rbp),%rax
979: c6 00 01 movb $0x1,(%rax)
break;
97c: e9 68 00 00 00 jmpq 9e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x959>
case VEC128_TYPE:
vec128_t val;
val.low = xe::load<uint64_t>(host_addr);
981: 48 8b bd 40 ff ff ff mov -0xc0(%rbp),%rdi
988: e8 00 00 00 00 callq 98d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8fd>
98d: 48 89 45 e0 mov %rax,-0x20(%rbp)
val.high = xe::load<uint64_t>(host_addr + 8);
991: 48 8b 85 40 ff ff ff mov -0xc0(%rbp),%rax
998: 48 83 c0 08 add $0x8,%rax
99c: 48 89 c7 mov %rax,%rdi
99f: e8 00 00 00 00 callq 9a4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x914>
9a4: 48 89 45 e8 mov %rax,-0x18(%rbp)
v->set_constant(val);
9a8: 48 8b 7d a8 mov -0x58(%rbp),%rdi
9ac: 48 8d 75 e0 lea -0x20(%rbp),%rsi
9b0: e8 00 00 00 00 callq 9b5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x925>
i->Remove();
9b5: 48 8b 7d b0 mov -0x50(%rbp),%rdi
9b9: e8 00 00 00 00 callq 9be <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x92e>
result = true;
9be: 48 8b 45 c0 mov -0x40(%rbp),%rax
9c2: c6 00 01 movb $0x1,(%rax)
break;
9c5: e9 1f 00 00 00 jmpq 9e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x959>
default:
assert_unhandled_case(v->type);
9ca: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 9d1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x941>
9d1: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 9d8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x948>
9d8: ba 0b 01 00 00 mov $0x10b,%edx
9dd: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9e4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x954>
9e4: e8 00 00 00 00 callq 9e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x959>
break;
}
}
9e9: e9 00 00 00 00 jmpq 9ee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x95e>
9ee: e9 00 00 00 00 jmpq 9f3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x963>
}
}
9f3: e9 00 00 00 00 jmpq 9f8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x968>
break;
9f8: e9 f9 20 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_STORE:
case OPCODE_STORE_OFFSET:
if (FLAGS_inline_mmio_access && i->src1.value->IsConstant()) {
9fd: f6 05 00 00 00 00 01 testb $0x1,0x0(%rip) # a04 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x974>
a04: 0f 84 03 01 00 00 je b0d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa7d>
a0a: 48 8b 45 b0 mov -0x50(%rbp),%rax
a0e: 48 8b 78 30 mov 0x30(%rax),%rdi
a12: e8 00 00 00 00 callq a17 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x987>
a17: a8 01 test $0x1,%al
a19: 0f 85 05 00 00 00 jne a24 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x994>
a1f: e9 e9 00 00 00 jmpq b0d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa7d>
auto address = i->src1.value->constant.i32;
a24: 48 8b 45 b0 mov -0x50(%rbp),%rax
a28: 48 8b 40 30 mov 0x30(%rax),%rax
a2c: 8b 48 20 mov 0x20(%rax),%ecx
a2f: 89 8d 3c ff ff ff mov %ecx,-0xc4(%rbp)
if (i->opcode->num == OPCODE_STORE_OFFSET) {
a35: 48 8b 45 b0 mov -0x50(%rbp),%rax
a39: 48 8b 40 18 mov 0x18(%rax),%rax
a3d: 83 78 10 26 cmpl $0x26,0x10(%rax)
a41: 0f 85 17 00 00 00 jne a5e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9ce>
address += i->src2.value->constant.i32;
a47: 48 8b 45 b0 mov -0x50(%rbp),%rax
a4b: 48 8b 40 38 mov 0x38(%rax),%rax
a4f: 8b 48 20 mov 0x20(%rax),%ecx
a52: 03 8d 3c ff ff ff add -0xc4(%rbp),%ecx
a58: 89 8d 3c ff ff ff mov %ecx,-0xc4(%rbp)
}
auto mmio_range =
processor_->memory()->LookupVirtualMappedRange(address);
a5e: 48 8b 85 88 fe ff ff mov -0x178(%rbp),%rax
a65: 48 8b 78 08 mov 0x8(%rax),%rdi
a69: e8 00 00 00 00 callq a6e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9de>
a6e: 8b b5 3c ff ff ff mov -0xc4(%rbp),%esi
a74: 48 89 c7 mov %rax,%rdi
a77: e8 00 00 00 00 callq a7c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9ec>
auto mmio_range =
a7c: 48 89 85 30 ff ff ff mov %rax,-0xd0(%rbp)
if (mmio_range) {
a83: 48 83 bd 30 ff ff ff cmpq $0x0,-0xd0(%rbp)
a8a: 00
a8b: 0f 84 77 00 00 00 je b08 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa78>
auto value = i->src2.value;
a91: 48 8b 45 b0 mov -0x50(%rbp),%rax
a95: 48 8b 40 38 mov 0x38(%rax),%rax
a99: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp)
if (i->opcode->num == OPCODE_STORE_OFFSET) {
aa0: 48 8b 45 b0 mov -0x50(%rbp),%rax
aa4: 48 8b 40 18 mov 0x18(%rax),%rax
aa8: 83 78 10 26 cmpl $0x26,0x10(%rax)
aac: 0f 85 0f 00 00 00 jne ac1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa31>
value = i->src3.value;
ab2: 48 8b 45 b0 mov -0x50(%rbp),%rax
ab6: 48 8b 40 40 mov 0x40(%rax),%rax
aba: 48 89 85 28 ff ff ff mov %rax,-0xd8(%rbp)
ac1: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # ac8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa38>
ac8: 31 d2 xor %edx,%edx
}
i->Replace(&OPCODE_STORE_MMIO_info, 0);
aca: 48 8b 7d b0 mov -0x50(%rbp),%rdi
ace: e8 00 00 00 00 callq ad3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa43>
i->src1.offset = reinterpret_cast<uint64_t>(mmio_range);
ad3: 48 8b b5 30 ff ff ff mov -0xd0(%rbp),%rsi
ada: 48 8b 7d b0 mov -0x50(%rbp),%rdi
ade: 48 89 77 30 mov %rsi,0x30(%rdi)
i->src2.offset = address;
ae2: 48 63 b5 3c ff ff ff movslq -0xc4(%rbp),%rsi
ae9: 48 8b 7d b0 mov -0x50(%rbp),%rdi
aed: 48 89 77 38 mov %rsi,0x38(%rdi)
i->set_src3(value);
af1: 48 8b 7d b0 mov -0x50(%rbp),%rdi
af5: 48 8b b5 28 ff ff ff mov -0xd8(%rbp),%rsi
afc: e8 00 00 00 00 callq b01 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa71>
result = true;
b01: 48 8b 75 c0 mov -0x40(%rbp),%rsi
b05: c6 06 01 movb $0x1,(%rsi)
}
}
b08: e9 00 00 00 00 jmpq b0d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa7d>
break;
b0d: e9 e4 1f 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SELECT:
if (i->src1.value->IsConstant()) {
b12: 48 8b 45 b0 mov -0x50(%rbp),%rax
b16: 48 8b 78 30 mov 0x30(%rax),%rdi
b1a: e8 00 00 00 00 callq b1f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa8f>
b1f: a8 01 test $0x1,%al
b21: 0f 85 05 00 00 00 jne b2c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa9c>
b27: e9 12 01 00 00 jmpq c3e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbae>
if (i->src1.value->type != VEC128_TYPE) {
b2c: 48 8b 45 b0 mov -0x50(%rbp),%rax
b30: 48 8b 40 30 mov 0x30(%rax),%rax
b34: 83 78 04 06 cmpl $0x6,0x4(%rax)
b38: 0f 84 f6 00 00 00 je c34 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xba4>
if (i->src1.value->IsConstantTrue()) {
b3e: 48 8b 45 b0 mov -0x50(%rbp),%rax
b42: 48 8b 78 30 mov 0x30(%rax),%rdi
b46: e8 00 00 00 00 callq b4b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xabb>
b4b: a8 01 test $0x1,%al
b4d: 0f 85 05 00 00 00 jne b58 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xac8>
b53: e9 3d 00 00 00 jmpq b95 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb05>
b58: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # b5f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xacf>
b5f: 31 d2 xor %edx,%edx
auto src2 = i->src2.value;
b61: 48 8b 45 b0 mov -0x50(%rbp),%rax
b65: 48 8b 40 38 mov 0x38(%rax),%rax
b69: 48 89 85 20 ff ff ff mov %rax,-0xe0(%rbp)
i->Replace(&OPCODE_ASSIGN_info, 0);
b70: 48 8b 7d b0 mov -0x50(%rbp),%rdi
b74: e8 00 00 00 00 callq b79 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xae9>
i->set_src1(src2);
b79: 48 8b 7d b0 mov -0x50(%rbp),%rdi
b7d: 48 8b b5 20 ff ff ff mov -0xe0(%rbp),%rsi
b84: e8 00 00 00 00 callq b89 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xaf9>
result = true;
b89: 48 8b 45 c0 mov -0x40(%rbp),%rax
b8d: c6 00 01 movb $0x1,(%rax)
} else if (i->src1.value->IsConstantFalse()) {
b90: e9 9a 00 00 00 jmpq c2f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb9f>
b95: 48 8b 45 b0 mov -0x50(%rbp),%rax
b99: 48 8b 78 30 mov 0x30(%rax),%rdi
b9d: e8 00 00 00 00 callq ba2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb12>
ba2: a8 01 test $0x1,%al
ba4: 0f 85 05 00 00 00 jne baf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb1f>
baa: e9 3d 00 00 00 jmpq bec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb5c>
baf: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # bb6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb26>
bb6: 31 d2 xor %edx,%edx
auto src3 = i->src3.value;
bb8: 48 8b 45 b0 mov -0x50(%rbp),%rax
bbc: 48 8b 40 40 mov 0x40(%rax),%rax
bc0: 48 89 85 18 ff ff ff mov %rax,-0xe8(%rbp)
i->Replace(&OPCODE_ASSIGN_info, 0);
bc7: 48 8b 7d b0 mov -0x50(%rbp),%rdi
bcb: e8 00 00 00 00 callq bd0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb40>
i->set_src1(src3);
bd0: 48 8b 7d b0 mov -0x50(%rbp),%rdi
bd4: 48 8b b5 18 ff ff ff mov -0xe8(%rbp),%rsi
bdb: e8 00 00 00 00 callq be0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb50>
result = true;
be0: 48 8b 45 c0 mov -0x40(%rbp),%rax
be4: c6 00 01 movb $0x1,(%rax)
} else if (i->src2.value->IsConstant() &&
be7: e9 3e 00 00 00 jmpq c2a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb9a>
bec: 48 8b 45 b0 mov -0x50(%rbp),%rax
bf0: 48 8b 78 38 mov 0x38(%rax),%rdi
bf4: e8 00 00 00 00 callq bf9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb69>
bf9: a8 01 test $0x1,%al
bfb: 0f 85 05 00 00 00 jne c06 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb76>
c01: e9 1f 00 00 00 jmpq c25 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb95>
i->src3.value->IsConstant()) {
c06: 48 8b 45 b0 mov -0x50(%rbp),%rax
c0a: 48 8b 78 40 mov 0x40(%rax),%rdi
c0e: e8 00 00 00 00 callq c13 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb83>
} else if (i->src2.value->IsConstant() &&
c13: a8 01 test $0x1,%al
c15: 0f 85 05 00 00 00 jne c20 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb90>
c1b: e9 05 00 00 00 jmpq c25 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb95>
// TODO: Select
// v->set_from(i->src2.value);
// v->Select(i->src3.value, i->src1.value);
// i->Remove();
}
c20: e9 00 00 00 00 jmpq c25 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb95>
c25: e9 00 00 00 00 jmpq c2a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb9a>
c2a: e9 00 00 00 00 jmpq c2f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb9f>
} else {
c2f: e9 05 00 00 00 jmpq c39 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xba9>
c34: e9 00 00 00 00 jmpq c39 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xba9>
// TODO: vec128 select
}
}
c39: e9 00 00 00 00 jmpq c3e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbae>
break;
c3e: e9 b3 1e 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_IS_TRUE:
if (i->src1.value->IsConstant()) {
c43: 48 8b 45 b0 mov -0x50(%rbp),%rax
c47: 48 8b 78 30 mov 0x30(%rax),%rdi
c4b: e8 00 00 00 00 callq c50 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbc0>
c50: a8 01 test $0x1,%al
c52: 0f 85 05 00 00 00 jne c5d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbcd>
c58: e9 48 00 00 00 jmpq ca5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc15>
if (i->src1.value->IsConstantTrue()) {
c5d: 48 8b 45 b0 mov -0x50(%rbp),%rax
c61: 48 8b 78 30 mov 0x30(%rax),%rdi
c65: e8 00 00 00 00 callq c6a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbda>
c6a: a8 01 test $0x1,%al
c6c: 0f 85 05 00 00 00 jne c77 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbe7>
c72: e9 13 00 00 00 jmpq c8a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbfa>
v->set_constant(uint8_t(1));
c77: 48 8b 7d a8 mov -0x58(%rbp),%rdi
c7b: be 01 00 00 00 mov $0x1,%esi
c80: e8 00 00 00 00 callq c85 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbf5>
} else {
c85: e9 0b 00 00 00 jmpq c95 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc05>
c8a: 31 f6 xor %esi,%esi
v->set_constant(uint8_t(0));
c8c: 48 8b 7d a8 mov -0x58(%rbp),%rdi
c90: e8 00 00 00 00 callq c95 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc05>
}
i->Remove();
c95: 48 8b 7d b0 mov -0x50(%rbp),%rdi
c99: e8 00 00 00 00 callq c9e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc0e>
result = true;
c9e: 48 8b 7d c0 mov -0x40(%rbp),%rdi
ca2: c6 07 01 movb $0x1,(%rdi)
}
break;
ca5: e9 4c 1e 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_IS_FALSE:
if (i->src1.value->IsConstant()) {
caa: 48 8b 45 b0 mov -0x50(%rbp),%rax
cae: 48 8b 78 30 mov 0x30(%rax),%rdi
cb2: e8 00 00 00 00 callq cb7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc27>
cb7: a8 01 test $0x1,%al
cb9: 0f 85 05 00 00 00 jne cc4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc34>
cbf: e9 48 00 00 00 jmpq d0c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc7c>
if (i->src1.value->IsConstantFalse()) {
cc4: 48 8b 45 b0 mov -0x50(%rbp),%rax
cc8: 48 8b 78 30 mov 0x30(%rax),%rdi
ccc: e8 00 00 00 00 callq cd1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc41>
cd1: a8 01 test $0x1,%al
cd3: 0f 85 05 00 00 00 jne cde <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc4e>
cd9: e9 13 00 00 00 jmpq cf1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc61>
v->set_constant(uint8_t(1));
cde: 48 8b 7d a8 mov -0x58(%rbp),%rdi
ce2: be 01 00 00 00 mov $0x1,%esi
ce7: e8 00 00 00 00 callq cec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc5c>
} else {
cec: e9 0b 00 00 00 jmpq cfc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc6c>
cf1: 31 f6 xor %esi,%esi
v->set_constant(uint8_t(0));
cf3: 48 8b 7d a8 mov -0x58(%rbp),%rdi
cf7: e8 00 00 00 00 callq cfc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc6c>
}
i->Remove();
cfc: 48 8b 7d b0 mov -0x50(%rbp),%rdi
d00: e8 00 00 00 00 callq d05 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc75>
result = true;
d05: 48 8b 7d c0 mov -0x40(%rbp),%rdi
d09: c6 07 01 movb $0x1,(%rdi)
}
break;
d0c: e9 e5 1d 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_IS_NAN:
if (i->src1.value->IsConstant()) {
d11: 48 8b 45 b0 mov -0x50(%rbp),%rax
d15: 48 8b 78 30 mov 0x30(%rax),%rdi
d19: e8 00 00 00 00 callq d1e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc8e>
d1e: a8 01 test $0x1,%al
d20: 0f 85 05 00 00 00 jne d2b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc9b>
d26: e9 a8 00 00 00 jmpq dd3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd43>
if (i->src1.value->type == FLOAT32_TYPE &&
d2b: 48 8b 45 b0 mov -0x50(%rbp),%rax
d2f: 48 8b 40 30 mov 0x30(%rax),%rax
d33: 83 78 04 04 cmpl $0x4,0x4(%rax)
d37: 0f 85 32 00 00 00 jne d6f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcdf>
std::isnan(i->src1.value->constant.f32)) {
d3d: 48 8b 45 b0 mov -0x50(%rbp),%rax
d41: 48 8b 40 30 mov 0x30(%rax),%rax
d45: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
d4a: e8 00 00 00 00 callq d4f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcbf>
if (i->src1.value->type == FLOAT32_TYPE &&
d4f: a8 01 test $0x1,%al
d51: 0f 85 05 00 00 00 jne d5c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xccc>
d57: e9 13 00 00 00 jmpq d6f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcdf>
v->set_constant(uint8_t(1));
d5c: 48 8b 7d a8 mov -0x58(%rbp),%rdi
d60: be 01 00 00 00 mov $0x1,%esi
d65: e8 00 00 00 00 callq d6a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcda>
} else if (i->src1.value->type == FLOAT64_TYPE &&
d6a: e9 54 00 00 00 jmpq dc3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd33>
d6f: 48 8b 45 b0 mov -0x50(%rbp),%rax
d73: 48 8b 40 30 mov 0x30(%rax),%rax
d77: 83 78 04 05 cmpl $0x5,0x4(%rax)
d7b: 0f 85 32 00 00 00 jne db3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd23>
std::isnan(i->src1.value->constant.f64)) {
d81: 48 8b 45 b0 mov -0x50(%rbp),%rax
d85: 48 8b 40 30 mov 0x30(%rax),%rax
d89: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
d8e: e8 00 00 00 00 callq d93 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd03>
} else if (i->src1.value->type == FLOAT64_TYPE &&
d93: a8 01 test $0x1,%al
d95: 0f 85 05 00 00 00 jne da0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd10>
d9b: e9 13 00 00 00 jmpq db3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd23>
v->set_constant(uint8_t(1));
da0: 48 8b 7d a8 mov -0x58(%rbp),%rdi
da4: be 01 00 00 00 mov $0x1,%esi
da9: e8 00 00 00 00 callq dae <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd1e>
} else {
dae: e9 0b 00 00 00 jmpq dbe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd2e>
db3: 31 f6 xor %esi,%esi
v->set_constant(uint8_t(0));
db5: 48 8b 7d a8 mov -0x58(%rbp),%rdi
db9: e8 00 00 00 00 callq dbe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd2e>
dbe: e9 00 00 00 00 jmpq dc3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd33>
}
i->Remove();
dc3: 48 8b 7d b0 mov -0x50(%rbp),%rdi
dc7: e8 00 00 00 00 callq dcc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd3c>
result = true;
dcc: 48 8b 7d c0 mov -0x40(%rbp),%rdi
dd0: c6 07 01 movb $0x1,(%rdi)
}
break;
dd3: e9 1e 1d 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
// TODO(benvanik): compares
case OPCODE_COMPARE_EQ:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
dd8: 48 8b 45 b0 mov -0x50(%rbp),%rax
ddc: 48 8b 78 30 mov 0x30(%rax),%rdi
de0: e8 00 00 00 00 callq de5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd55>
de5: a8 01 test $0x1,%al
de7: 0f 85 05 00 00 00 jne df2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd62>
ded: e9 5f 00 00 00 jmpq e51 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdc1>
df2: 48 8b 45 b0 mov -0x50(%rbp),%rax
df6: 48 8b 78 38 mov 0x38(%rax),%rdi
dfa: e8 00 00 00 00 callq dff <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd6f>
dff: a8 01 test $0x1,%al
e01: 0f 85 05 00 00 00 jne e0c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd7c>
e07: e9 45 00 00 00 jmpq e51 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdc1>
bool value = i->src1.value->IsConstantEQ(i->src2.value);
e0c: 48 8b 45 b0 mov -0x50(%rbp),%rax
e10: 48 8b 78 30 mov 0x30(%rax),%rdi
e14: 48 8b 45 b0 mov -0x50(%rbp),%rax
e18: 48 8b 70 38 mov 0x38(%rax),%rsi
e1c: e8 00 00 00 00 callq e21 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd91>
e21: 24 01 and $0x1,%al
e23: 88 85 17 ff ff ff mov %al,-0xe9(%rbp)
i->dest->set_constant(uint8_t(value));
e29: 48 8b 75 b0 mov -0x50(%rbp),%rsi
e2d: 48 8b 7e 28 mov 0x28(%rsi),%rdi
e31: 8a 85 17 ff ff ff mov -0xe9(%rbp),%al
e37: 24 01 and $0x1,%al
e39: 0f b6 f0 movzbl %al,%esi
e3c: e8 00 00 00 00 callq e41 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdb1>
i->Remove();
e41: 48 8b 7d b0 mov -0x50(%rbp),%rdi
e45: e8 00 00 00 00 callq e4a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdba>
result = true;
e4a: 48 8b 7d c0 mov -0x40(%rbp),%rdi
e4e: c6 07 01 movb $0x1,(%rdi)
}
break;
e51: e9 a0 1c 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_NE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
e56: 48 8b 45 b0 mov -0x50(%rbp),%rax
e5a: 48 8b 78 30 mov 0x30(%rax),%rdi
e5e: e8 00 00 00 00 callq e63 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdd3>
e63: a8 01 test $0x1,%al
e65: 0f 85 05 00 00 00 jne e70 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xde0>
e6b: e9 5f 00 00 00 jmpq ecf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe3f>
e70: 48 8b 45 b0 mov -0x50(%rbp),%rax
e74: 48 8b 78 38 mov 0x38(%rax),%rdi
e78: e8 00 00 00 00 callq e7d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xded>
e7d: a8 01 test $0x1,%al
e7f: 0f 85 05 00 00 00 jne e8a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdfa>
e85: e9 45 00 00 00 jmpq ecf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe3f>
bool value = i->src1.value->IsConstantNE(i->src2.value);
e8a: 48 8b 45 b0 mov -0x50(%rbp),%rax
e8e: 48 8b 78 30 mov 0x30(%rax),%rdi
e92: 48 8b 45 b0 mov -0x50(%rbp),%rax
e96: 48 8b 70 38 mov 0x38(%rax),%rsi
e9a: e8 00 00 00 00 callq e9f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe0f>
e9f: 24 01 and $0x1,%al
ea1: 88 85 16 ff ff ff mov %al,-0xea(%rbp)
i->dest->set_constant(uint8_t(value));
ea7: 48 8b 75 b0 mov -0x50(%rbp),%rsi
eab: 48 8b 7e 28 mov 0x28(%rsi),%rdi
eaf: 8a 85 16 ff ff ff mov -0xea(%rbp),%al
eb5: 24 01 and $0x1,%al
eb7: 0f b6 f0 movzbl %al,%esi
eba: e8 00 00 00 00 callq ebf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe2f>
i->Remove();
ebf: 48 8b 7d b0 mov -0x50(%rbp),%rdi
ec3: e8 00 00 00 00 callq ec8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe38>
result = true;
ec8: 48 8b 7d c0 mov -0x40(%rbp),%rdi
ecc: c6 07 01 movb $0x1,(%rdi)
}
break;
ecf: e9 22 1c 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_SLT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
ed4: 48 8b 45 b0 mov -0x50(%rbp),%rax
ed8: 48 8b 78 30 mov 0x30(%rax),%rdi
edc: e8 00 00 00 00 callq ee1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe51>
ee1: a8 01 test $0x1,%al
ee3: 0f 85 05 00 00 00 jne eee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe5e>
ee9: e9 5f 00 00 00 jmpq f4d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xebd>
eee: 48 8b 45 b0 mov -0x50(%rbp),%rax
ef2: 48 8b 78 38 mov 0x38(%rax),%rdi
ef6: e8 00 00 00 00 callq efb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe6b>
efb: a8 01 test $0x1,%al
efd: 0f 85 05 00 00 00 jne f08 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe78>
f03: e9 45 00 00 00 jmpq f4d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xebd>
bool value = i->src1.value->IsConstantSLT(i->src2.value);
f08: 48 8b 45 b0 mov -0x50(%rbp),%rax
f0c: 48 8b 78 30 mov 0x30(%rax),%rdi
f10: 48 8b 45 b0 mov -0x50(%rbp),%rax
f14: 48 8b 70 38 mov 0x38(%rax),%rsi
f18: e8 00 00 00 00 callq f1d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe8d>
f1d: 24 01 and $0x1,%al
f1f: 88 85 15 ff ff ff mov %al,-0xeb(%rbp)
i->dest->set_constant(uint8_t(value));
f25: 48 8b 75 b0 mov -0x50(%rbp),%rsi
f29: 48 8b 7e 28 mov 0x28(%rsi),%rdi
f2d: 8a 85 15 ff ff ff mov -0xeb(%rbp),%al
f33: 24 01 and $0x1,%al
f35: 0f b6 f0 movzbl %al,%esi
f38: e8 00 00 00 00 callq f3d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xead>
i->Remove();
f3d: 48 8b 7d b0 mov -0x50(%rbp),%rdi
f41: e8 00 00 00 00 callq f46 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xeb6>
result = true;
f46: 48 8b 7d c0 mov -0x40(%rbp),%rdi
f4a: c6 07 01 movb $0x1,(%rdi)
}
break;
f4d: e9 a4 1b 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_SLE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
f52: 48 8b 45 b0 mov -0x50(%rbp),%rax
f56: 48 8b 78 30 mov 0x30(%rax),%rdi
f5a: e8 00 00 00 00 callq f5f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xecf>
f5f: a8 01 test $0x1,%al
f61: 0f 85 05 00 00 00 jne f6c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xedc>
f67: e9 5f 00 00 00 jmpq fcb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf3b>
f6c: 48 8b 45 b0 mov -0x50(%rbp),%rax
f70: 48 8b 78 38 mov 0x38(%rax),%rdi
f74: e8 00 00 00 00 callq f79 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xee9>
f79: a8 01 test $0x1,%al
f7b: 0f 85 05 00 00 00 jne f86 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xef6>
f81: e9 45 00 00 00 jmpq fcb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf3b>
bool value = i->src1.value->IsConstantSLE(i->src2.value);
f86: 48 8b 45 b0 mov -0x50(%rbp),%rax
f8a: 48 8b 78 30 mov 0x30(%rax),%rdi
f8e: 48 8b 45 b0 mov -0x50(%rbp),%rax
f92: 48 8b 70 38 mov 0x38(%rax),%rsi
f96: e8 00 00 00 00 callq f9b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf0b>
f9b: 24 01 and $0x1,%al
f9d: 88 85 14 ff ff ff mov %al,-0xec(%rbp)
i->dest->set_constant(uint8_t(value));
fa3: 48 8b 75 b0 mov -0x50(%rbp),%rsi
fa7: 48 8b 7e 28 mov 0x28(%rsi),%rdi
fab: 8a 85 14 ff ff ff mov -0xec(%rbp),%al
fb1: 24 01 and $0x1,%al
fb3: 0f b6 f0 movzbl %al,%esi
fb6: e8 00 00 00 00 callq fbb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf2b>
i->Remove();
fbb: 48 8b 7d b0 mov -0x50(%rbp),%rdi
fbf: e8 00 00 00 00 callq fc4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf34>
result = true;
fc4: 48 8b 7d c0 mov -0x40(%rbp),%rdi
fc8: c6 07 01 movb $0x1,(%rdi)
}
break;
fcb: e9 26 1b 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_SGT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
fd0: 48 8b 45 b0 mov -0x50(%rbp),%rax
fd4: 48 8b 78 30 mov 0x30(%rax),%rdi
fd8: e8 00 00 00 00 callq fdd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf4d>
fdd: a8 01 test $0x1,%al
fdf: 0f 85 05 00 00 00 jne fea <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf5a>
fe5: e9 5f 00 00 00 jmpq 1049 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfb9>
fea: 48 8b 45 b0 mov -0x50(%rbp),%rax
fee: 48 8b 78 38 mov 0x38(%rax),%rdi
ff2: e8 00 00 00 00 callq ff7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf67>
ff7: a8 01 test $0x1,%al
ff9: 0f 85 05 00 00 00 jne 1004 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf74>
fff: e9 45 00 00 00 jmpq 1049 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfb9>
bool value = i->src1.value->IsConstantSGT(i->src2.value);
1004: 48 8b 45 b0 mov -0x50(%rbp),%rax
1008: 48 8b 78 30 mov 0x30(%rax),%rdi
100c: 48 8b 45 b0 mov -0x50(%rbp),%rax
1010: 48 8b 70 38 mov 0x38(%rax),%rsi
1014: e8 00 00 00 00 callq 1019 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf89>
1019: 24 01 and $0x1,%al
101b: 88 85 13 ff ff ff mov %al,-0xed(%rbp)
i->dest->set_constant(uint8_t(value));
1021: 48 8b 75 b0 mov -0x50(%rbp),%rsi
1025: 48 8b 7e 28 mov 0x28(%rsi),%rdi
1029: 8a 85 13 ff ff ff mov -0xed(%rbp),%al
102f: 24 01 and $0x1,%al
1031: 0f b6 f0 movzbl %al,%esi
1034: e8 00 00 00 00 callq 1039 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfa9>
i->Remove();
1039: 48 8b 7d b0 mov -0x50(%rbp),%rdi
103d: e8 00 00 00 00 callq 1042 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfb2>
result = true;
1042: 48 8b 7d c0 mov -0x40(%rbp),%rdi
1046: c6 07 01 movb $0x1,(%rdi)
}
break;
1049: e9 a8 1a 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_SGE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
104e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1052: 48 8b 78 30 mov 0x30(%rax),%rdi
1056: e8 00 00 00 00 callq 105b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfcb>
105b: a8 01 test $0x1,%al
105d: 0f 85 05 00 00 00 jne 1068 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfd8>
1063: e9 5f 00 00 00 jmpq 10c7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1037>
1068: 48 8b 45 b0 mov -0x50(%rbp),%rax
106c: 48 8b 78 38 mov 0x38(%rax),%rdi
1070: e8 00 00 00 00 callq 1075 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfe5>
1075: a8 01 test $0x1,%al
1077: 0f 85 05 00 00 00 jne 1082 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xff2>
107d: e9 45 00 00 00 jmpq 10c7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1037>
bool value = i->src1.value->IsConstantSGE(i->src2.value);
1082: 48 8b 45 b0 mov -0x50(%rbp),%rax
1086: 48 8b 78 30 mov 0x30(%rax),%rdi
108a: 48 8b 45 b0 mov -0x50(%rbp),%rax
108e: 48 8b 70 38 mov 0x38(%rax),%rsi
1092: e8 00 00 00 00 callq 1097 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1007>
1097: 24 01 and $0x1,%al
1099: 88 85 12 ff ff ff mov %al,-0xee(%rbp)
i->dest->set_constant(uint8_t(value));
109f: 48 8b 75 b0 mov -0x50(%rbp),%rsi
10a3: 48 8b 7e 28 mov 0x28(%rsi),%rdi
10a7: 8a 85 12 ff ff ff mov -0xee(%rbp),%al
10ad: 24 01 and $0x1,%al
10af: 0f b6 f0 movzbl %al,%esi
10b2: e8 00 00 00 00 callq 10b7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1027>
i->Remove();
10b7: 48 8b 7d b0 mov -0x50(%rbp),%rdi
10bb: e8 00 00 00 00 callq 10c0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1030>
result = true;
10c0: 48 8b 7d c0 mov -0x40(%rbp),%rdi
10c4: c6 07 01 movb $0x1,(%rdi)
}
break;
10c7: e9 2a 1a 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_ULT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
10cc: 48 8b 45 b0 mov -0x50(%rbp),%rax
10d0: 48 8b 78 30 mov 0x30(%rax),%rdi
10d4: e8 00 00 00 00 callq 10d9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1049>
10d9: a8 01 test $0x1,%al
10db: 0f 85 05 00 00 00 jne 10e6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1056>
10e1: e9 5f 00 00 00 jmpq 1145 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10b5>
10e6: 48 8b 45 b0 mov -0x50(%rbp),%rax
10ea: 48 8b 78 38 mov 0x38(%rax),%rdi
10ee: e8 00 00 00 00 callq 10f3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1063>
10f3: a8 01 test $0x1,%al
10f5: 0f 85 05 00 00 00 jne 1100 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1070>
10fb: e9 45 00 00 00 jmpq 1145 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10b5>
bool value = i->src1.value->IsConstantULT(i->src2.value);
1100: 48 8b 45 b0 mov -0x50(%rbp),%rax
1104: 48 8b 78 30 mov 0x30(%rax),%rdi
1108: 48 8b 45 b0 mov -0x50(%rbp),%rax
110c: 48 8b 70 38 mov 0x38(%rax),%rsi
1110: e8 00 00 00 00 callq 1115 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1085>
1115: 24 01 and $0x1,%al
1117: 88 85 11 ff ff ff mov %al,-0xef(%rbp)
i->dest->set_constant(uint8_t(value));
111d: 48 8b 75 b0 mov -0x50(%rbp),%rsi
1121: 48 8b 7e 28 mov 0x28(%rsi),%rdi
1125: 8a 85 11 ff ff ff mov -0xef(%rbp),%al
112b: 24 01 and $0x1,%al
112d: 0f b6 f0 movzbl %al,%esi
1130: e8 00 00 00 00 callq 1135 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10a5>
i->Remove();
1135: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1139: e8 00 00 00 00 callq 113e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10ae>
result = true;
113e: 48 8b 7d c0 mov -0x40(%rbp),%rdi
1142: c6 07 01 movb $0x1,(%rdi)
}
break;
1145: e9 ac 19 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_ULE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
114a: 48 8b 45 b0 mov -0x50(%rbp),%rax
114e: 48 8b 78 30 mov 0x30(%rax),%rdi
1152: e8 00 00 00 00 callq 1157 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10c7>
1157: a8 01 test $0x1,%al
1159: 0f 85 05 00 00 00 jne 1164 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10d4>
115f: e9 5f 00 00 00 jmpq 11c3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1133>
1164: 48 8b 45 b0 mov -0x50(%rbp),%rax
1168: 48 8b 78 38 mov 0x38(%rax),%rdi
116c: e8 00 00 00 00 callq 1171 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10e1>
1171: a8 01 test $0x1,%al
1173: 0f 85 05 00 00 00 jne 117e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10ee>
1179: e9 45 00 00 00 jmpq 11c3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1133>
bool value = i->src1.value->IsConstantULE(i->src2.value);
117e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1182: 48 8b 78 30 mov 0x30(%rax),%rdi
1186: 48 8b 45 b0 mov -0x50(%rbp),%rax
118a: 48 8b 70 38 mov 0x38(%rax),%rsi
118e: e8 00 00 00 00 callq 1193 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1103>
1193: 24 01 and $0x1,%al
1195: 88 85 10 ff ff ff mov %al,-0xf0(%rbp)
i->dest->set_constant(uint8_t(value));
119b: 48 8b 75 b0 mov -0x50(%rbp),%rsi
119f: 48 8b 7e 28 mov 0x28(%rsi),%rdi
11a3: 8a 85 10 ff ff ff mov -0xf0(%rbp),%al
11a9: 24 01 and $0x1,%al
11ab: 0f b6 f0 movzbl %al,%esi
11ae: e8 00 00 00 00 callq 11b3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1123>
i->Remove();
11b3: 48 8b 7d b0 mov -0x50(%rbp),%rdi
11b7: e8 00 00 00 00 callq 11bc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x112c>
result = true;
11bc: 48 8b 7d c0 mov -0x40(%rbp),%rdi
11c0: c6 07 01 movb $0x1,(%rdi)
}
break;
11c3: e9 2e 19 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_UGT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
11c8: 48 8b 45 b0 mov -0x50(%rbp),%rax
11cc: 48 8b 78 30 mov 0x30(%rax),%rdi
11d0: e8 00 00 00 00 callq 11d5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1145>
11d5: a8 01 test $0x1,%al
11d7: 0f 85 05 00 00 00 jne 11e2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1152>
11dd: e9 5f 00 00 00 jmpq 1241 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11b1>
11e2: 48 8b 45 b0 mov -0x50(%rbp),%rax
11e6: 48 8b 78 38 mov 0x38(%rax),%rdi
11ea: e8 00 00 00 00 callq 11ef <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x115f>
11ef: a8 01 test $0x1,%al
11f1: 0f 85 05 00 00 00 jne 11fc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x116c>
11f7: e9 45 00 00 00 jmpq 1241 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11b1>
bool value = i->src1.value->IsConstantUGT(i->src2.value);
11fc: 48 8b 45 b0 mov -0x50(%rbp),%rax
1200: 48 8b 78 30 mov 0x30(%rax),%rdi
1204: 48 8b 45 b0 mov -0x50(%rbp),%rax
1208: 48 8b 70 38 mov 0x38(%rax),%rsi
120c: e8 00 00 00 00 callq 1211 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1181>
1211: 24 01 and $0x1,%al
1213: 88 85 0f ff ff ff mov %al,-0xf1(%rbp)
i->dest->set_constant(uint8_t(value));
1219: 48 8b 75 b0 mov -0x50(%rbp),%rsi
121d: 48 8b 7e 28 mov 0x28(%rsi),%rdi
1221: 8a 85 0f ff ff ff mov -0xf1(%rbp),%al
1227: 24 01 and $0x1,%al
1229: 0f b6 f0 movzbl %al,%esi
122c: e8 00 00 00 00 callq 1231 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11a1>
i->Remove();
1231: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1235: e8 00 00 00 00 callq 123a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11aa>
result = true;
123a: 48 8b 7d c0 mov -0x40(%rbp),%rdi
123e: c6 07 01 movb $0x1,(%rdi)
}
break;
1241: e9 b0 18 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_COMPARE_UGE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1246: 48 8b 45 b0 mov -0x50(%rbp),%rax
124a: 48 8b 78 30 mov 0x30(%rax),%rdi
124e: e8 00 00 00 00 callq 1253 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11c3>
1253: a8 01 test $0x1,%al
1255: 0f 85 05 00 00 00 jne 1260 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11d0>
125b: e9 5f 00 00 00 jmpq 12bf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x122f>
1260: 48 8b 45 b0 mov -0x50(%rbp),%rax
1264: 48 8b 78 38 mov 0x38(%rax),%rdi
1268: e8 00 00 00 00 callq 126d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11dd>
126d: a8 01 test $0x1,%al
126f: 0f 85 05 00 00 00 jne 127a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11ea>
1275: e9 45 00 00 00 jmpq 12bf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x122f>
bool value = i->src1.value->IsConstantUGE(i->src2.value);
127a: 48 8b 45 b0 mov -0x50(%rbp),%rax
127e: 48 8b 78 30 mov 0x30(%rax),%rdi
1282: 48 8b 45 b0 mov -0x50(%rbp),%rax
1286: 48 8b 70 38 mov 0x38(%rax),%rsi
128a: e8 00 00 00 00 callq 128f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11ff>
128f: 24 01 and $0x1,%al
1291: 88 85 0e ff ff ff mov %al,-0xf2(%rbp)
i->dest->set_constant(uint8_t(value));
1297: 48 8b 75 b0 mov -0x50(%rbp),%rsi
129b: 48 8b 7e 28 mov 0x28(%rsi),%rdi
129f: 8a 85 0e ff ff ff mov -0xf2(%rbp),%al
12a5: 24 01 and $0x1,%al
12a7: 0f b6 f0 movzbl %al,%esi
12aa: e8 00 00 00 00 callq 12af <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x121f>
i->Remove();
12af: 48 8b 7d b0 mov -0x50(%rbp),%rdi
12b3: e8 00 00 00 00 callq 12b8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1228>
result = true;
12b8: 48 8b 7d c0 mov -0x40(%rbp),%rdi
12bc: c6 07 01 movb $0x1,(%rdi)
}
break;
12bf: e9 32 18 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_DID_SATURATE:
// assert_true(!i->src1.value->IsConstant());
break;
12c4: e9 2d 18 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_ADD:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
12c9: 48 8b 45 b0 mov -0x50(%rbp),%rax
12cd: 48 8b 78 30 mov 0x30(%rax),%rdi
12d1: e8 00 00 00 00 callq 12d6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1246>
12d6: a8 01 test $0x1,%al
12d8: 0f 85 05 00 00 00 jne 12e3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1253>
12de: e9 52 00 00 00 jmpq 1335 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12a5>
12e3: 48 8b 45 b0 mov -0x50(%rbp),%rax
12e7: 48 8b 78 38 mov 0x38(%rax),%rdi
12eb: e8 00 00 00 00 callq 12f0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1260>
12f0: a8 01 test $0x1,%al
12f2: 0f 85 05 00 00 00 jne 12fd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x126d>
12f8: e9 38 00 00 00 jmpq 1335 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12a5>
v->set_from(i->src1.value);
12fd: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1301: 48 8b 45 b0 mov -0x50(%rbp),%rax
1305: 48 8b 70 30 mov 0x30(%rax),%rsi
1309: e8 00 00 00 00 callq 130e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x127e>
v->Add(i->src2.value);
130e: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1312: 48 8b 45 b0 mov -0x50(%rbp),%rax
1316: 48 8b 70 38 mov 0x38(%rax),%rsi
131a: e8 00 00 00 00 callq 131f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x128f>
i->Remove();
131f: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1323: 88 85 47 fe ff ff mov %al,-0x1b9(%rbp)
1329: e8 00 00 00 00 callq 132e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x129e>
result = true;
132e: 48 8b 75 c0 mov -0x40(%rbp),%rsi
1332: c6 06 01 movb $0x1,(%rsi)
}
break;
1335: e9 bc 17 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_ADD_CARRY:
if (i->src1.value->IsConstantZero() &&
133a: 48 8b 45 b0 mov -0x50(%rbp),%rax
133e: 48 8b 78 30 mov 0x30(%rax),%rdi
1342: e8 00 00 00 00 callq 1347 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12b7>
1347: a8 01 test $0x1,%al
1349: 0f 85 05 00 00 00 jne 1354 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12c4>
134f: e9 ec 00 00 00 jmpq 1440 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13b0>
i->src2.value->IsConstantZero()) {
1354: 48 8b 45 b0 mov -0x50(%rbp),%rax
1358: 48 8b 78 38 mov 0x38(%rax),%rdi
135c: e8 00 00 00 00 callq 1361 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12d1>
if (i->src1.value->IsConstantZero() &&
1361: a8 01 test $0x1,%al
1363: 0f 85 05 00 00 00 jne 136e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12de>
1369: e9 d2 00 00 00 jmpq 1440 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13b0>
Value* ca = i->src3.value;
136e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1372: 48 8b 40 40 mov 0x40(%rax),%rax
1376: 48 89 85 00 ff ff ff mov %rax,-0x100(%rbp)
if (ca->IsConstant()) {
137d: 48 8b bd 00 ff ff ff mov -0x100(%rbp),%rdi
1384: e8 00 00 00 00 callq 1389 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12f9>
1389: a8 01 test $0x1,%al
138b: 0f 85 05 00 00 00 jne 1396 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1306>
1391: e9 3a 00 00 00 jmpq 13d0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1340>
TypeName target_type = v->type;
1396: 48 8b 45 a8 mov -0x58(%rbp),%rax
139a: 8b 48 04 mov 0x4(%rax),%ecx
139d: 89 8d fc fe ff ff mov %ecx,-0x104(%rbp)
v->set_from(ca);
13a3: 48 8b 7d a8 mov -0x58(%rbp),%rdi
13a7: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi
13ae: e8 00 00 00 00 callq 13b3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1323>
v->ZeroExtend(target_type);
13b3: 48 8b 7d a8 mov -0x58(%rbp),%rdi
13b7: 8b b5 fc fe ff ff mov -0x104(%rbp),%esi
13bd: e8 00 00 00 00 callq 13c2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1332>
i->Remove();
13c2: 48 8b 7d b0 mov -0x50(%rbp),%rdi
13c6: e8 00 00 00 00 callq 13cb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x133b>
} else {
13cb: e9 69 00 00 00 jmpq 1439 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13a9>
if (i->dest->type == ca->type) {
13d0: 48 8b 45 b0 mov -0x50(%rbp),%rax
13d4: 48 8b 40 28 mov 0x28(%rax),%rax
13d8: 8b 48 04 mov 0x4(%rax),%ecx
13db: 48 8b 85 00 ff ff ff mov -0x100(%rbp),%rax
13e2: 3b 48 04 cmp 0x4(%rax),%ecx
13e5: 0f 85 27 00 00 00 jne 1412 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1382>
13eb: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 13f2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1362>
13f2: 31 d2 xor %edx,%edx
i->Replace(&OPCODE_ASSIGN_info, 0);
13f4: 48 8b 7d b0 mov -0x50(%rbp),%rdi
13f8: e8 00 00 00 00 callq 13fd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x136d>
i->set_src1(ca);
13fd: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1401: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi
1408: e8 00 00 00 00 callq 140d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x137d>
} else {
140d: e9 22 00 00 00 jmpq 1434 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13a4>
1412: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1419 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1389>
1419: 31 d2 xor %edx,%edx
i->Replace(&OPCODE_ZERO_EXTEND_info, 0);
141b: 48 8b 7d b0 mov -0x50(%rbp),%rdi
141f: e8 00 00 00 00 callq 1424 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1394>
i->set_src1(ca);
1424: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1428: 48 8b b5 00 ff ff ff mov -0x100(%rbp),%rsi
142f: e8 00 00 00 00 callq 1434 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13a4>
1434: e9 00 00 00 00 jmpq 1439 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13a9>
}
}
result = true;
1439: 48 8b 45 c0 mov -0x40(%rbp),%rax
143d: c6 00 01 movb $0x1,(%rax)
}
break;
1440: e9 b1 16 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SUB:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1445: 48 8b 45 b0 mov -0x50(%rbp),%rax
1449: 48 8b 78 30 mov 0x30(%rax),%rdi
144d: e8 00 00 00 00 callq 1452 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13c2>
1452: a8 01 test $0x1,%al
1454: 0f 85 05 00 00 00 jne 145f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13cf>
145a: e9 52 00 00 00 jmpq 14b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1421>
145f: 48 8b 45 b0 mov -0x50(%rbp),%rax
1463: 48 8b 78 38 mov 0x38(%rax),%rdi
1467: e8 00 00 00 00 callq 146c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13dc>
146c: a8 01 test $0x1,%al
146e: 0f 85 05 00 00 00 jne 1479 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13e9>
1474: e9 38 00 00 00 jmpq 14b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1421>
v->set_from(i->src1.value);
1479: 48 8b 7d a8 mov -0x58(%rbp),%rdi
147d: 48 8b 45 b0 mov -0x50(%rbp),%rax
1481: 48 8b 70 30 mov 0x30(%rax),%rsi
1485: e8 00 00 00 00 callq 148a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13fa>
v->Sub(i->src2.value);
148a: 48 8b 7d a8 mov -0x58(%rbp),%rdi
148e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1492: 48 8b 70 38 mov 0x38(%rax),%rsi
1496: e8 00 00 00 00 callq 149b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x140b>
i->Remove();
149b: 48 8b 7d b0 mov -0x50(%rbp),%rdi
149f: 88 85 46 fe ff ff mov %al,-0x1ba(%rbp)
14a5: e8 00 00 00 00 callq 14aa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x141a>
result = true;
14aa: 48 8b 75 c0 mov -0x40(%rbp),%rsi
14ae: c6 06 01 movb $0x1,(%rsi)
}
break;
14b1: e9 40 16 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_MUL:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
14b6: 48 8b 45 b0 mov -0x50(%rbp),%rax
14ba: 48 8b 78 30 mov 0x30(%rax),%rdi
14be: e8 00 00 00 00 callq 14c3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1433>
14c3: a8 01 test $0x1,%al
14c5: 0f 85 05 00 00 00 jne 14d0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1440>
14cb: e9 51 00 00 00 jmpq 1521 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1491>
14d0: 48 8b 45 b0 mov -0x50(%rbp),%rax
14d4: 48 8b 78 38 mov 0x38(%rax),%rdi
14d8: e8 00 00 00 00 callq 14dd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x144d>
14dd: a8 01 test $0x1,%al
14df: 0f 85 05 00 00 00 jne 14ea <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x145a>
14e5: e9 37 00 00 00 jmpq 1521 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1491>
v->set_from(i->src1.value);
14ea: 48 8b 7d a8 mov -0x58(%rbp),%rdi
14ee: 48 8b 45 b0 mov -0x50(%rbp),%rax
14f2: 48 8b 70 30 mov 0x30(%rax),%rsi
14f6: e8 00 00 00 00 callq 14fb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x146b>
v->Mul(i->src2.value);
14fb: 48 8b 7d a8 mov -0x58(%rbp),%rdi
14ff: 48 8b 45 b0 mov -0x50(%rbp),%rax
1503: 48 8b 70 38 mov 0x38(%rax),%rsi
1507: e8 00 00 00 00 callq 150c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x147c>
i->Remove();
150c: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1510: e8 00 00 00 00 callq 1515 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1485>
result = true;
1515: 48 8b 45 c0 mov -0x40(%rbp),%rax
1519: c6 00 01 movb $0x1,(%rax)
} else if (i->src1.value->IsConstant() ||
151c: e9 0c 02 00 00 jmpq 172d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x169d>
1521: 48 8b 45 b0 mov -0x50(%rbp),%rax
1525: 48 8b 78 30 mov 0x30(%rax),%rdi
1529: e8 00 00 00 00 callq 152e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x149e>
152e: a8 01 test $0x1,%al
1530: 0f 85 1a 00 00 00 jne 1550 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14c0>
i->src2.value->IsConstant()) {
1536: 48 8b 45 b0 mov -0x50(%rbp),%rax
153a: 48 8b 78 38 mov 0x38(%rax),%rdi
153e: e8 00 00 00 00 callq 1543 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14b3>
} else if (i->src1.value->IsConstant() ||
1543: a8 01 test $0x1,%al
1545: 0f 85 05 00 00 00 jne 1550 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14c0>
154b: e9 d8 01 00 00 jmpq 1728 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1698>
// Reorder the sources to make things simpler.
// s1 = non-const, s2 = const
auto s1 =
i->src1.value->IsConstant() ? i->src2.value : i->src1.value;
1550: 48 8b 45 b0 mov -0x50(%rbp),%rax
1554: 48 8b 78 30 mov 0x30(%rax),%rdi
1558: e8 00 00 00 00 callq 155d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14cd>
155d: a8 01 test $0x1,%al
155f: 0f 85 05 00 00 00 jne 156a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14da>
1565: e9 14 00 00 00 jmpq 157e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14ee>
156a: 48 8b 45 b0 mov -0x50(%rbp),%rax
156e: 48 8b 40 38 mov 0x38(%rax),%rax
1572: 48 89 85 38 fe ff ff mov %rax,-0x1c8(%rbp)
1579: e9 0f 00 00 00 jmpq 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14fd>
157e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1582: 48 8b 40 30 mov 0x30(%rax),%rax
1586: 48 89 85 38 fe ff ff mov %rax,-0x1c8(%rbp)
158d: 48 8b 85 38 fe ff ff mov -0x1c8(%rbp),%rax
auto s1 =
1594: 48 89 85 f0 fe ff ff mov %rax,-0x110(%rbp)
auto s2 =
i->src1.value->IsConstant() ? i->src1.value : i->src2.value;
159b: 48 8b 45 b0 mov -0x50(%rbp),%rax
159f: 48 8b 78 30 mov 0x30(%rax),%rdi
15a3: e8 00 00 00 00 callq 15a8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
15a8: a8 01 test $0x1,%al
15aa: 0f 85 05 00 00 00 jne 15b5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1525>
15b0: e9 14 00 00 00 jmpq 15c9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1539>
15b5: 48 8b 45 b0 mov -0x50(%rbp),%rax
15b9: 48 8b 40 30 mov 0x30(%rax),%rax
15bd: 48 89 85 30 fe ff ff mov %rax,-0x1d0(%rbp)
15c4: e9 0f 00 00 00 jmpq 15d8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1548>
15c9: 48 8b 45 b0 mov -0x50(%rbp),%rax
15cd: 48 8b 40 38 mov 0x38(%rax),%rax
15d1: 48 89 85 30 fe ff ff mov %rax,-0x1d0(%rbp)
15d8: 48 8b 85 30 fe ff ff mov -0x1d0(%rbp),%rax
auto s2 =
15df: 48 89 85 e8 fe ff ff mov %rax,-0x118(%rbp)
// Multiplication by one = no-op
if (s2->type != VEC128_TYPE && s2->IsConstantOne()) {
15e6: 48 8b 85 e8 fe ff ff mov -0x118(%rbp),%rax
15ed: 83 78 04 06 cmpl $0x6,0x4(%rax)
15f1: 0f 84 47 00 00 00 je 163e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15ae>
15f7: 48 8b bd e8 fe ff ff mov -0x118(%rbp),%rdi
15fe: e8 00 00 00 00 callq 1603 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1573>
1603: a8 01 test $0x1,%al
1605: 0f 85 05 00 00 00 jne 1610 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1580>
160b: e9 2e 00 00 00 jmpq 163e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15ae>
1610: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1617 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1587>
1617: 31 d2 xor %edx,%edx
i->Replace(&OPCODE_ASSIGN_info, 0);
1619: 48 8b 7d b0 mov -0x50(%rbp),%rdi
161d: e8 00 00 00 00 callq 1622 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1592>
i->set_src1(s1);
1622: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1626: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi
162d: e8 00 00 00 00 callq 1632 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15a2>
result = true;
1632: 48 8b 75 c0 mov -0x40(%rbp),%rsi
1636: c6 06 01 movb $0x1,(%rsi)
} else if (s2->type == VEC128_TYPE) {
1639: e9 e5 00 00 00 jmpq 1723 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1693>
163e: 48 8b 85 e8 fe ff ff mov -0x118(%rbp),%rax
1645: 83 78 04 06 cmpl $0x6,0x4(%rax)
1649: 0f 85 cf 00 00 00 jne 171e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x168e>
164f: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 1657 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15c7>
1656: 00
auto& c = s2->constant;
1657: 48 8b 85 e8 fe ff ff mov -0x118(%rbp),%rax
165e: 48 83 c0 20 add $0x20,%rax
1662: 48 89 85 e0 fe ff ff mov %rax,-0x120(%rbp)
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
1669: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax
1670: c5 fa 10 08 vmovss (%rax),%xmm1
1674: c5 f8 2e c8 vucomiss %xmm0,%xmm1
1678: 0f 85 9b 00 00 00 jne 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
167e: 0f 8a 95 00 00 00 jp 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
1684: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 168c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15fc>
168b: 00
168c: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax
1693: c5 fa 10 48 04 vmovss 0x4(%rax),%xmm1
1698: c5 f8 2e c8 vucomiss %xmm0,%xmm1
169c: 0f 85 77 00 00 00 jne 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
16a2: 0f 8a 71 00 00 00 jp 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
16a8: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 16b0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1620>
16af: 00
c.v128.f32[2] == 1.f && c.v128.f32[3] == 1.f) {
16b0: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax
16b7: c5 fa 10 48 08 vmovss 0x8(%rax),%xmm1
16bc: c5 f8 2e c8 vucomiss %xmm0,%xmm1
16c0: 0f 85 53 00 00 00 jne 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
16c6: 0f 8a 4d 00 00 00 jp 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
16cc: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 16d4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1644>
16d3: 00
16d4: 48 8b 85 e0 fe ff ff mov -0x120(%rbp),%rax
16db: c5 fa 10 48 0c vmovss 0xc(%rax),%xmm1
16e0: c5 f8 2e c8 vucomiss %xmm0,%xmm1
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
16e4: 0f 85 2f 00 00 00 jne 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
16ea: 0f 8a 29 00 00 00 jp 1719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1689>
16f0: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 16f7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1667>
16f7: 31 d2 xor %edx,%edx
i->Replace(&OPCODE_ASSIGN_info, 0);
16f9: 48 8b 7d b0 mov -0x50(%rbp),%rdi
16fd: e8 00 00 00 00 callq 1702 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1672>
i->set_src1(s1);
1702: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1706: 48 8b b5 f0 fe ff ff mov -0x110(%rbp),%rsi
170d: e8 00 00 00 00 callq 1712 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1682>
result = true;
1712: 48 8b 75 c0 mov -0x40(%rbp),%rsi
1716: c6 06 01 movb $0x1,(%rsi)
}
}
1719: e9 00 00 00 00 jmpq 171e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x168e>
171e: e9 00 00 00 00 jmpq 1723 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1693>
}
1723: e9 00 00 00 00 jmpq 1728 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1698>
1728: e9 00 00 00 00 jmpq 172d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x169d>
break;
172d: e9 c4 13 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_MUL_HI:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1732: 48 8b 45 b0 mov -0x50(%rbp),%rax
1736: 48 8b 78 30 mov 0x30(%rax),%rdi
173a: e8 00 00 00 00 callq 173f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16af>
173f: a8 01 test $0x1,%al
1741: 0f 85 05 00 00 00 jne 174c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16bc>
1747: e9 65 00 00 00 jmpq 17b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1721>
174c: 48 8b 45 b0 mov -0x50(%rbp),%rax
1750: 48 8b 78 38 mov 0x38(%rax),%rdi
1754: e8 00 00 00 00 callq 1759 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16c9>
1759: a8 01 test $0x1,%al
175b: 0f 85 05 00 00 00 jne 1766 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16d6>
1761: e9 4b 00 00 00 jmpq 17b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1721>
v->set_from(i->src1.value);
1766: 48 8b 7d a8 mov -0x58(%rbp),%rdi
176a: 48 8b 45 b0 mov -0x50(%rbp),%rax
176e: 48 8b 70 30 mov 0x30(%rax),%rsi
1772: e8 00 00 00 00 callq 1777 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16e7>
v->MulHi(i->src2.value, (i->flags & ARITHMETIC_UNSIGNED) != 0);
1777: 48 8b 7d a8 mov -0x58(%rbp),%rdi
177b: 48 8b 45 b0 mov -0x50(%rbp),%rax
177f: 48 8b 70 38 mov 0x38(%rax),%rsi
1783: 48 8b 45 b0 mov -0x50(%rbp),%rax
1787: 0f b7 48 20 movzwl 0x20(%rax),%ecx
178b: 83 e1 04 and $0x4,%ecx
178e: 83 f9 00 cmp $0x0,%ecx
1791: 0f 95 c2 setne %dl
1794: 0f b6 ca movzbl %dl,%ecx
1797: 83 e1 01 and $0x1,%ecx
179a: 89 ca mov %ecx,%edx
179c: e8 00 00 00 00 callq 17a1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1711>
i->Remove();
17a1: 48 8b 7d b0 mov -0x50(%rbp),%rdi
17a5: e8 00 00 00 00 callq 17aa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x171a>
result = true;
17aa: 48 8b 45 c0 mov -0x40(%rbp),%rax
17ae: c6 00 01 movb $0x1,(%rax)
}
break;
17b1: e9 40 13 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_DIV:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
17b6: 48 8b 45 b0 mov -0x50(%rbp),%rax
17ba: 48 8b 78 30 mov 0x30(%rax),%rdi
17be: e8 00 00 00 00 callq 17c3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1733>
17c3: a8 01 test $0x1,%al
17c5: 0f 85 05 00 00 00 jne 17d0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1740>
17cb: e9 6a 00 00 00 jmpq 183a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x17aa>
17d0: 48 8b 45 b0 mov -0x50(%rbp),%rax
17d4: 48 8b 78 38 mov 0x38(%rax),%rdi
17d8: e8 00 00 00 00 callq 17dd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x174d>
17dd: a8 01 test $0x1,%al
17df: 0f 85 05 00 00 00 jne 17ea <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x175a>
17e5: e9 50 00 00 00 jmpq 183a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x17aa>
v->set_from(i->src1.value);
17ea: 48 8b 7d a8 mov -0x58(%rbp),%rdi
17ee: 48 8b 45 b0 mov -0x50(%rbp),%rax
17f2: 48 8b 70 30 mov 0x30(%rax),%rsi
17f6: e8 00 00 00 00 callq 17fb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x176b>
v->Div(i->src2.value, (i->flags & ARITHMETIC_UNSIGNED) != 0);
17fb: 48 8b 7d a8 mov -0x58(%rbp),%rdi
17ff: 48 8b 45 b0 mov -0x50(%rbp),%rax
1803: 48 8b 70 38 mov 0x38(%rax),%rsi
1807: 48 8b 45 b0 mov -0x50(%rbp),%rax
180b: 0f b7 48 20 movzwl 0x20(%rax),%ecx
180f: 83 e1 04 and $0x4,%ecx
1812: 83 f9 00 cmp $0x0,%ecx
1815: 0f 95 c2 setne %dl
1818: 0f b6 ca movzbl %dl,%ecx
181b: 83 e1 01 and $0x1,%ecx
181e: 89 ca mov %ecx,%edx
1820: e8 00 00 00 00 callq 1825 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1795>
i->Remove();
1825: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1829: e8 00 00 00 00 callq 182e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x179e>
result = true;
182e: 48 8b 45 c0 mov -0x40(%rbp),%rax
1832: c6 00 01 movb $0x1,(%rax)
} else if (i->src2.value->IsConstant()) {
1835: e9 74 01 00 00 jmpq 19ae <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x191e>
183a: 48 8b 45 b0 mov -0x50(%rbp),%rax
183e: 48 8b 78 38 mov 0x38(%rax),%rdi
1842: e8 00 00 00 00 callq 1847 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x17b7>
1847: a8 01 test $0x1,%al
1849: 0f 85 05 00 00 00 jne 1854 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x17c4>
184f: e9 55 01 00 00 jmpq 19a9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1919>
// Division by one = no-op.
Value* src1 = i->src1.value;
1854: 48 8b 45 b0 mov -0x50(%rbp),%rax
1858: 48 8b 40 30 mov 0x30(%rax),%rax
185c: 48 89 85 d8 fe ff ff mov %rax,-0x128(%rbp)
if (i->src2.value->type != VEC128_TYPE &&
1863: 48 8b 45 b0 mov -0x50(%rbp),%rax
1867: 48 8b 40 38 mov 0x38(%rax),%rax
186b: 83 78 04 06 cmpl $0x6,0x4(%rax)
186f: 0f 84 48 00 00 00 je 18bd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x182d>
i->src2.value->IsConstantOne()) {
1875: 48 8b 45 b0 mov -0x50(%rbp),%rax
1879: 48 8b 78 38 mov 0x38(%rax),%rdi
187d: e8 00 00 00 00 callq 1882 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x17f2>
if (i->src2.value->type != VEC128_TYPE &&
1882: a8 01 test $0x1,%al
1884: 0f 85 05 00 00 00 jne 188f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x17ff>
188a: e9 2e 00 00 00 jmpq 18bd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x182d>
188f: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1896 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1806>
1896: 31 d2 xor %edx,%edx
i->Replace(&OPCODE_ASSIGN_info, 0);
1898: 48 8b 7d b0 mov -0x50(%rbp),%rdi
189c: e8 00 00 00 00 callq 18a1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1811>
i->set_src1(src1);
18a1: 48 8b 7d b0 mov -0x50(%rbp),%rdi
18a5: 48 8b b5 d8 fe ff ff mov -0x128(%rbp),%rsi
18ac: e8 00 00 00 00 callq 18b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1821>
result = true;
18b1: 48 8b 75 c0 mov -0x40(%rbp),%rsi
18b5: c6 06 01 movb $0x1,(%rsi)
} else if (i->src2.value->type == VEC128_TYPE) {
18b8: e9 e7 00 00 00 jmpq 19a4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1914>
18bd: 48 8b 45 b0 mov -0x50(%rbp),%rax
18c1: 48 8b 40 38 mov 0x38(%rax),%rax
18c5: 83 78 04 06 cmpl $0x6,0x4(%rax)
18c9: 0f 85 d0 00 00 00 jne 199f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190f>
18cf: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 18d7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1847>
18d6: 00
auto& c = i->src2.value->constant;
18d7: 48 8b 45 b0 mov -0x50(%rbp),%rax
18db: 48 8b 40 38 mov 0x38(%rax),%rax
18df: 48 83 c0 20 add $0x20,%rax
18e3: 48 89 85 d0 fe ff ff mov %rax,-0x130(%rbp)
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
18ea: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax
18f1: c5 fa 10 08 vmovss (%rax),%xmm1
18f5: c5 f8 2e c8 vucomiss %xmm0,%xmm1
18f9: 0f 85 9b 00 00 00 jne 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
18ff: 0f 8a 95 00 00 00 jp 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
1905: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 190d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x187d>
190c: 00
190d: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax
1914: c5 fa 10 48 04 vmovss 0x4(%rax),%xmm1
1919: c5 f8 2e c8 vucomiss %xmm0,%xmm1
191d: 0f 85 77 00 00 00 jne 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
1923: 0f 8a 71 00 00 00 jp 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
1929: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 1931 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x18a1>
1930: 00
c.v128.f32[2] == 1.f && c.v128.f32[3] == 1.f) {
1931: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax
1938: c5 fa 10 48 08 vmovss 0x8(%rax),%xmm1
193d: c5 f8 2e c8 vucomiss %xmm0,%xmm1
1941: 0f 85 53 00 00 00 jne 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
1947: 0f 8a 4d 00 00 00 jp 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
194d: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 1955 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x18c5>
1954: 00
1955: 48 8b 85 d0 fe ff ff mov -0x130(%rbp),%rax
195c: c5 fa 10 48 0c vmovss 0xc(%rax),%xmm1
1961: c5 f8 2e c8 vucomiss %xmm0,%xmm1
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
1965: 0f 85 2f 00 00 00 jne 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
196b: 0f 8a 29 00 00 00 jp 199a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190a>
1971: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1978 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x18e8>
1978: 31 d2 xor %edx,%edx
i->Replace(&OPCODE_ASSIGN_info, 0);
197a: 48 8b 7d b0 mov -0x50(%rbp),%rdi
197e: e8 00 00 00 00 callq 1983 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x18f3>
i->set_src1(src1);
1983: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1987: 48 8b b5 d8 fe ff ff mov -0x128(%rbp),%rsi
198e: e8 00 00 00 00 callq 1993 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1903>
result = true;
1993: 48 8b 75 c0 mov -0x40(%rbp),%rsi
1997: c6 06 01 movb $0x1,(%rsi)
}
}
199a: e9 00 00 00 00 jmpq 199f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x190f>
199f: e9 00 00 00 00 jmpq 19a4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1914>
}
19a4: e9 00 00 00 00 jmpq 19a9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1919>
19a9: e9 00 00 00 00 jmpq 19ae <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x191e>
break;
19ae: e9 43 11 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_MUL_ADD:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
19b3: 48 8b 45 b0 mov -0x50(%rbp),%rax
19b7: 48 8b 78 30 mov 0x30(%rax),%rdi
19bb: e8 00 00 00 00 callq 19c0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1930>
19c0: a8 01 test $0x1,%al
19c2: 0f 85 05 00 00 00 jne 19cd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x193d>
19c8: e9 05 01 00 00 jmpq 1ad2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a42>
19cd: 48 8b 45 b0 mov -0x50(%rbp),%rax
19d1: 48 8b 78 38 mov 0x38(%rax),%rdi
19d5: e8 00 00 00 00 callq 19da <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x194a>
19da: a8 01 test $0x1,%al
19dc: 0f 85 05 00 00 00 jne 19e7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1957>
19e2: e9 eb 00 00 00 jmpq 1ad2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a42>
if (i->src3.value->IsConstant()) {
19e7: 48 8b 45 b0 mov -0x50(%rbp),%rax
19eb: 48 8b 78 40 mov 0x40(%rax),%rdi
19ef: e8 00 00 00 00 callq 19f4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1964>
19f4: a8 01 test $0x1,%al
19f6: 0f 85 05 00 00 00 jne 1a01 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1971>
19fc: e9 47 00 00 00 jmpq 1a48 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x19b8>
v->set_from(i->src1.value);
1a01: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1a05: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a09: 48 8b 70 30 mov 0x30(%rax),%rsi
1a0d: e8 00 00 00 00 callq 1a12 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1982>
Value::MulAdd(v, i->src1.value, i->src2.value, i->src3.value);
1a12: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1a16: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a1a: 48 8b 70 30 mov 0x30(%rax),%rsi
1a1e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a22: 48 8b 50 38 mov 0x38(%rax),%rdx
1a26: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a2a: 48 8b 48 40 mov 0x40(%rax),%rcx
1a2e: e8 00 00 00 00 callq 1a33 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x19a3>
i->Remove();
1a33: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1a37: e8 00 00 00 00 callq 1a3c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x19ac>
result = true;
1a3c: 48 8b 45 c0 mov -0x40(%rbp),%rax
1a40: c6 00 01 movb $0x1,(%rax)
} else {
1a43: e9 85 00 00 00 jmpq 1acd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a3d>
// Multiply part is constant.
Value* mul = builder->AllocValue();
1a48: 48 8b 7d c8 mov -0x38(%rbp),%rdi
1a4c: be 03 00 00 00 mov $0x3,%esi
1a51: e8 00 00 00 00 callq 1a56 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x19c6>
1a56: 48 89 85 c8 fe ff ff mov %rax,-0x138(%rbp)
mul->set_from(i->src1.value);
1a5d: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi
1a64: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a68: 48 8b 70 30 mov 0x30(%rax),%rsi
1a6c: e8 00 00 00 00 callq 1a71 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x19e1>
mul->Mul(i->src2.value);
1a71: 48 8b bd c8 fe ff ff mov -0x138(%rbp),%rdi
1a78: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a7c: 48 8b 70 38 mov 0x38(%rax),%rsi
1a80: e8 00 00 00 00 callq 1a85 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x19f5>
1a85: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1a8c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x19fc>
1a8c: 31 d2 xor %edx,%edx
Value* add = i->src3.value;
1a8e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1a92: 48 8b 40 40 mov 0x40(%rax),%rax
1a96: 48 89 85 c0 fe ff ff mov %rax,-0x140(%rbp)
i->Replace(&OPCODE_ADD_info, 0);
1a9d: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1aa1: e8 00 00 00 00 callq 1aa6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a16>
i->set_src1(mul);
1aa6: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1aaa: 48 8b b5 c8 fe ff ff mov -0x138(%rbp),%rsi
1ab1: e8 00 00 00 00 callq 1ab6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a26>
i->set_src2(add);
1ab6: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1aba: 48 8b b5 c0 fe ff ff mov -0x140(%rbp),%rsi
1ac1: e8 00 00 00 00 callq 1ac6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a36>
result = true;
1ac6: 48 8b 45 c0 mov -0x40(%rbp),%rax
1aca: c6 00 01 movb $0x1,(%rax)
}
}
1acd: e9 00 00 00 00 jmpq 1ad2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a42>
break;
1ad2: e9 1f 10 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_MUL_SUB:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1ad7: 48 8b 45 b0 mov -0x50(%rbp),%rax
1adb: 48 8b 78 30 mov 0x30(%rax),%rdi
1adf: e8 00 00 00 00 callq 1ae4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a54>
1ae4: a8 01 test $0x1,%al
1ae6: 0f 85 05 00 00 00 jne 1af1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a61>
1aec: e9 05 01 00 00 jmpq 1bf6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b66>
1af1: 48 8b 45 b0 mov -0x50(%rbp),%rax
1af5: 48 8b 78 38 mov 0x38(%rax),%rdi
1af9: e8 00 00 00 00 callq 1afe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a6e>
1afe: a8 01 test $0x1,%al
1b00: 0f 85 05 00 00 00 jne 1b0b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a7b>
1b06: e9 eb 00 00 00 jmpq 1bf6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b66>
// Multiply part is constant.
if (i->src3.value->IsConstant()) {
1b0b: 48 8b 45 b0 mov -0x50(%rbp),%rax
1b0f: 48 8b 78 40 mov 0x40(%rax),%rdi
1b13: e8 00 00 00 00 callq 1b18 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a88>
1b18: a8 01 test $0x1,%al
1b1a: 0f 85 05 00 00 00 jne 1b25 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1a95>
1b20: e9 47 00 00 00 jmpq 1b6c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1adc>
v->set_from(i->src1.value);
1b25: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1b29: 48 8b 45 b0 mov -0x50(%rbp),%rax
1b2d: 48 8b 70 30 mov 0x30(%rax),%rsi
1b31: e8 00 00 00 00 callq 1b36 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1aa6>
Value::MulSub(v, i->src1.value, i->src2.value, i->src3.value);
1b36: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1b3a: 48 8b 45 b0 mov -0x50(%rbp),%rax
1b3e: 48 8b 70 30 mov 0x30(%rax),%rsi
1b42: 48 8b 45 b0 mov -0x50(%rbp),%rax
1b46: 48 8b 50 38 mov 0x38(%rax),%rdx
1b4a: 48 8b 45 b0 mov -0x50(%rbp),%rax
1b4e: 48 8b 48 40 mov 0x40(%rax),%rcx
1b52: e8 00 00 00 00 callq 1b57 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ac7>
i->Remove();
1b57: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1b5b: e8 00 00 00 00 callq 1b60 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ad0>
result = true;
1b60: 48 8b 45 c0 mov -0x40(%rbp),%rax
1b64: c6 00 01 movb $0x1,(%rax)
} else {
1b67: e9 85 00 00 00 jmpq 1bf1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b61>
// Multiply part is constant.
Value* mul = builder->AllocValue();
1b6c: 48 8b 7d c8 mov -0x38(%rbp),%rdi
1b70: be 03 00 00 00 mov $0x3,%esi
1b75: e8 00 00 00 00 callq 1b7a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1aea>
1b7a: 48 89 85 b8 fe ff ff mov %rax,-0x148(%rbp)
mul->set_from(i->src1.value);
1b81: 48 8b bd b8 fe ff ff mov -0x148(%rbp),%rdi
1b88: 48 8b 45 b0 mov -0x50(%rbp),%rax
1b8c: 48 8b 70 30 mov 0x30(%rax),%rsi
1b90: e8 00 00 00 00 callq 1b95 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b05>
mul->Mul(i->src2.value);
1b95: 48 8b bd b8 fe ff ff mov -0x148(%rbp),%rdi
1b9c: 48 8b 45 b0 mov -0x50(%rbp),%rax
1ba0: 48 8b 70 38 mov 0x38(%rax),%rsi
1ba4: e8 00 00 00 00 callq 1ba9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b19>
1ba9: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1bb0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b20>
1bb0: 31 d2 xor %edx,%edx
Value* add = i->src3.value;
1bb2: 48 8b 45 b0 mov -0x50(%rbp),%rax
1bb6: 48 8b 40 40 mov 0x40(%rax),%rax
1bba: 48 89 85 b0 fe ff ff mov %rax,-0x150(%rbp)
i->Replace(&OPCODE_SUB_info, 0);
1bc1: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1bc5: e8 00 00 00 00 callq 1bca <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b3a>
i->set_src1(mul);
1bca: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1bce: 48 8b b5 b8 fe ff ff mov -0x148(%rbp),%rsi
1bd5: e8 00 00 00 00 callq 1bda <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b4a>
i->set_src2(add);
1bda: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1bde: 48 8b b5 b0 fe ff ff mov -0x150(%rbp),%rsi
1be5: e8 00 00 00 00 callq 1bea <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b5a>
result = true;
1bea: 48 8b 45 c0 mov -0x40(%rbp),%rax
1bee: c6 00 01 movb $0x1,(%rax)
}
}
1bf1: e9 00 00 00 00 jmpq 1bf6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b66>
break;
1bf6: e9 fb 0e 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_MAX:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1bfb: 48 8b 45 b0 mov -0x50(%rbp),%rax
1bff: 48 8b 78 30 mov 0x30(%rax),%rdi
1c03: e8 00 00 00 00 callq 1c08 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b78>
1c08: a8 01 test $0x1,%al
1c0a: 0f 85 05 00 00 00 jne 1c15 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b85>
1c10: e9 4c 00 00 00 jmpq 1c61 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1bd1>
1c15: 48 8b 45 b0 mov -0x50(%rbp),%rax
1c19: 48 8b 78 38 mov 0x38(%rax),%rdi
1c1d: e8 00 00 00 00 callq 1c22 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b92>
1c22: a8 01 test $0x1,%al
1c24: 0f 85 05 00 00 00 jne 1c2f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1b9f>
1c2a: e9 32 00 00 00 jmpq 1c61 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1bd1>
v->set_from(i->src1.value);
1c2f: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1c33: 48 8b 45 b0 mov -0x50(%rbp),%rax
1c37: 48 8b 70 30 mov 0x30(%rax),%rsi
1c3b: e8 00 00 00 00 callq 1c40 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1bb0>
v->Max(i->src2.value);
1c40: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1c44: 48 8b 45 b0 mov -0x50(%rbp),%rax
1c48: 48 8b 70 38 mov 0x38(%rax),%rsi
1c4c: e8 00 00 00 00 callq 1c51 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1bc1>
i->Remove();
1c51: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1c55: e8 00 00 00 00 callq 1c5a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1bca>
result = true;
1c5a: 48 8b 45 c0 mov -0x40(%rbp),%rax
1c5e: c6 00 01 movb $0x1,(%rax)
}
break;
1c61: e9 90 0e 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_NEG:
if (i->src1.value->IsConstant()) {
1c66: 48 8b 45 b0 mov -0x50(%rbp),%rax
1c6a: 48 8b 78 30 mov 0x30(%rax),%rdi
1c6e: e8 00 00 00 00 callq 1c73 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1be3>
1c73: a8 01 test $0x1,%al
1c75: 0f 85 05 00 00 00 jne 1c80 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1bf0>
1c7b: e9 2a 00 00 00 jmpq 1caa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c1a>
v->set_from(i->src1.value);
1c80: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1c84: 48 8b 45 b0 mov -0x50(%rbp),%rax
1c88: 48 8b 70 30 mov 0x30(%rax),%rsi
1c8c: e8 00 00 00 00 callq 1c91 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c01>
v->Neg();
1c91: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1c95: e8 00 00 00 00 callq 1c9a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c0a>
i->Remove();
1c9a: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1c9e: e8 00 00 00 00 callq 1ca3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c13>
result = true;
1ca3: 48 8b 45 c0 mov -0x40(%rbp),%rax
1ca7: c6 00 01 movb $0x1,(%rax)
}
break;
1caa: e9 47 0e 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_ABS:
if (i->src1.value->IsConstant()) {
1caf: 48 8b 45 b0 mov -0x50(%rbp),%rax
1cb3: 48 8b 78 30 mov 0x30(%rax),%rdi
1cb7: e8 00 00 00 00 callq 1cbc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c2c>
1cbc: a8 01 test $0x1,%al
1cbe: 0f 85 05 00 00 00 jne 1cc9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c39>
1cc4: e9 2a 00 00 00 jmpq 1cf3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c63>
v->set_from(i->src1.value);
1cc9: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1ccd: 48 8b 45 b0 mov -0x50(%rbp),%rax
1cd1: 48 8b 70 30 mov 0x30(%rax),%rsi
1cd5: e8 00 00 00 00 callq 1cda <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c4a>
v->Abs();
1cda: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1cde: e8 00 00 00 00 callq 1ce3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c53>
i->Remove();
1ce3: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1ce7: e8 00 00 00 00 callq 1cec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c5c>
result = true;
1cec: 48 8b 45 c0 mov -0x40(%rbp),%rax
1cf0: c6 00 01 movb $0x1,(%rax)
}
break;
1cf3: e9 fe 0d 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SQRT:
if (i->src1.value->IsConstant()) {
1cf8: 48 8b 45 b0 mov -0x50(%rbp),%rax
1cfc: 48 8b 78 30 mov 0x30(%rax),%rdi
1d00: e8 00 00 00 00 callq 1d05 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c75>
1d05: a8 01 test $0x1,%al
1d07: 0f 85 05 00 00 00 jne 1d12 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c82>
1d0d: e9 2a 00 00 00 jmpq 1d3c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1cac>
v->set_from(i->src1.value);
1d12: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1d16: 48 8b 45 b0 mov -0x50(%rbp),%rax
1d1a: 48 8b 70 30 mov 0x30(%rax),%rsi
1d1e: e8 00 00 00 00 callq 1d23 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c93>
v->Sqrt();
1d23: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1d27: e8 00 00 00 00 callq 1d2c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1c9c>
i->Remove();
1d2c: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1d30: e8 00 00 00 00 callq 1d35 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ca5>
result = true;
1d35: 48 8b 45 c0 mov -0x40(%rbp),%rax
1d39: c6 00 01 movb $0x1,(%rax)
}
break;
1d3c: e9 b5 0d 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_RSQRT:
if (i->src1.value->IsConstant()) {
1d41: 48 8b 45 b0 mov -0x50(%rbp),%rax
1d45: 48 8b 78 30 mov 0x30(%rax),%rdi
1d49: e8 00 00 00 00 callq 1d4e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1cbe>
1d4e: a8 01 test $0x1,%al
1d50: 0f 85 05 00 00 00 jne 1d5b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ccb>
1d56: e9 2a 00 00 00 jmpq 1d85 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1cf5>
v->set_from(i->src1.value);
1d5b: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1d5f: 48 8b 45 b0 mov -0x50(%rbp),%rax
1d63: 48 8b 70 30 mov 0x30(%rax),%rsi
1d67: e8 00 00 00 00 callq 1d6c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1cdc>
v->RSqrt();
1d6c: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1d70: e8 00 00 00 00 callq 1d75 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ce5>
i->Remove();
1d75: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1d79: e8 00 00 00 00 callq 1d7e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1cee>
result = true;
1d7e: 48 8b 45 c0 mov -0x40(%rbp),%rax
1d82: c6 00 01 movb $0x1,(%rax)
}
break;
1d85: e9 6c 0d 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_RECIP:
if (i->src1.value->IsConstant()) {
1d8a: 48 8b 45 b0 mov -0x50(%rbp),%rax
1d8e: 48 8b 78 30 mov 0x30(%rax),%rdi
1d92: e8 00 00 00 00 callq 1d97 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d07>
1d97: a8 01 test $0x1,%al
1d99: 0f 85 05 00 00 00 jne 1da4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d14>
1d9f: e9 2a 00 00 00 jmpq 1dce <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d3e>
v->set_from(i->src1.value);
1da4: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1da8: 48 8b 45 b0 mov -0x50(%rbp),%rax
1dac: 48 8b 70 30 mov 0x30(%rax),%rsi
1db0: e8 00 00 00 00 callq 1db5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d25>
v->Recip();
1db5: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1db9: e8 00 00 00 00 callq 1dbe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d2e>
i->Remove();
1dbe: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1dc2: e8 00 00 00 00 callq 1dc7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d37>
result = true;
1dc7: 48 8b 45 c0 mov -0x40(%rbp),%rax
1dcb: c6 00 01 movb $0x1,(%rax)
}
break;
1dce: e9 23 0d 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_AND:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1dd3: 48 8b 45 b0 mov -0x50(%rbp),%rax
1dd7: 48 8b 78 30 mov 0x30(%rax),%rdi
1ddb: e8 00 00 00 00 callq 1de0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d50>
1de0: a8 01 test $0x1,%al
1de2: 0f 85 05 00 00 00 jne 1ded <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d5d>
1de8: e9 4c 00 00 00 jmpq 1e39 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1da9>
1ded: 48 8b 45 b0 mov -0x50(%rbp),%rax
1df1: 48 8b 78 38 mov 0x38(%rax),%rdi
1df5: e8 00 00 00 00 callq 1dfa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d6a>
1dfa: a8 01 test $0x1,%al
1dfc: 0f 85 05 00 00 00 jne 1e07 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d77>
1e02: e9 32 00 00 00 jmpq 1e39 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1da9>
v->set_from(i->src1.value);
1e07: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1e0b: 48 8b 45 b0 mov -0x50(%rbp),%rax
1e0f: 48 8b 70 30 mov 0x30(%rax),%rsi
1e13: e8 00 00 00 00 callq 1e18 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d88>
v->And(i->src2.value);
1e18: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1e1c: 48 8b 45 b0 mov -0x50(%rbp),%rax
1e20: 48 8b 70 38 mov 0x38(%rax),%rsi
1e24: e8 00 00 00 00 callq 1e29 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d99>
i->Remove();
1e29: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1e2d: e8 00 00 00 00 callq 1e32 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1da2>
result = true;
1e32: 48 8b 45 c0 mov -0x40(%rbp),%rax
1e36: c6 00 01 movb $0x1,(%rax)
}
break;
1e39: e9 b8 0c 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_OR:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1e3e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1e42: 48 8b 78 30 mov 0x30(%rax),%rdi
1e46: e8 00 00 00 00 callq 1e4b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1dbb>
1e4b: a8 01 test $0x1,%al
1e4d: 0f 85 05 00 00 00 jne 1e58 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1dc8>
1e53: e9 4c 00 00 00 jmpq 1ea4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e14>
1e58: 48 8b 45 b0 mov -0x50(%rbp),%rax
1e5c: 48 8b 78 38 mov 0x38(%rax),%rdi
1e60: e8 00 00 00 00 callq 1e65 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1dd5>
1e65: a8 01 test $0x1,%al
1e67: 0f 85 05 00 00 00 jne 1e72 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1de2>
1e6d: e9 32 00 00 00 jmpq 1ea4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e14>
v->set_from(i->src1.value);
1e72: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1e76: 48 8b 45 b0 mov -0x50(%rbp),%rax
1e7a: 48 8b 70 30 mov 0x30(%rax),%rsi
1e7e: e8 00 00 00 00 callq 1e83 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1df3>
v->Or(i->src2.value);
1e83: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1e87: 48 8b 45 b0 mov -0x50(%rbp),%rax
1e8b: 48 8b 70 38 mov 0x38(%rax),%rsi
1e8f: e8 00 00 00 00 callq 1e94 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e04>
i->Remove();
1e94: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1e98: e8 00 00 00 00 callq 1e9d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e0d>
result = true;
1e9d: 48 8b 45 c0 mov -0x40(%rbp),%rax
1ea1: c6 00 01 movb $0x1,(%rax)
}
break;
1ea4: e9 4d 0c 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_XOR:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1ea9: 48 8b 45 b0 mov -0x50(%rbp),%rax
1ead: 48 8b 78 30 mov 0x30(%rax),%rdi
1eb1: e8 00 00 00 00 callq 1eb6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e26>
1eb6: a8 01 test $0x1,%al
1eb8: 0f 85 05 00 00 00 jne 1ec3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e33>
1ebe: e9 51 00 00 00 jmpq 1f14 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e84>
1ec3: 48 8b 45 b0 mov -0x50(%rbp),%rax
1ec7: 48 8b 78 38 mov 0x38(%rax),%rdi
1ecb: e8 00 00 00 00 callq 1ed0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e40>
1ed0: a8 01 test $0x1,%al
1ed2: 0f 85 05 00 00 00 jne 1edd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e4d>
1ed8: e9 37 00 00 00 jmpq 1f14 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e84>
v->set_from(i->src1.value);
1edd: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1ee1: 48 8b 45 b0 mov -0x50(%rbp),%rax
1ee5: 48 8b 70 30 mov 0x30(%rax),%rsi
1ee9: e8 00 00 00 00 callq 1eee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e5e>
v->Xor(i->src2.value);
1eee: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1ef2: 48 8b 45 b0 mov -0x50(%rbp),%rax
1ef6: 48 8b 70 38 mov 0x38(%rax),%rsi
1efa: e8 00 00 00 00 callq 1eff <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e6f>
i->Remove();
1eff: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1f03: e8 00 00 00 00 callq 1f08 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e78>
result = true;
1f08: 48 8b 45 c0 mov -0x40(%rbp),%rax
1f0c: c6 00 01 movb $0x1,(%rax)
} else if (!i->src1.value->IsConstant() &&
1f0f: e9 65 00 00 00 jmpq 1f79 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ee9>
1f14: 48 8b 45 b0 mov -0x50(%rbp),%rax
1f18: 48 8b 78 30 mov 0x30(%rax),%rdi
1f1c: e8 00 00 00 00 callq 1f21 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e91>
1f21: a8 01 test $0x1,%al
1f23: 0f 85 4b 00 00 00 jne 1f74 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ee4>
!i->src2.value->IsConstant() &&
1f29: 48 8b 45 b0 mov -0x50(%rbp),%rax
1f2d: 48 8b 78 38 mov 0x38(%rax),%rdi
1f31: e8 00 00 00 00 callq 1f36 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ea6>
1f36: a8 01 test $0x1,%al
1f38: 0f 85 36 00 00 00 jne 1f74 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ee4>
i->src1.value == i->src2.value) {
1f3e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1f42: 48 8b 40 30 mov 0x30(%rax),%rax
1f46: 48 8b 4d b0 mov -0x50(%rbp),%rcx
1f4a: 48 3b 41 38 cmp 0x38(%rcx),%rax
} else if (!i->src1.value->IsConstant() &&
1f4e: 0f 85 20 00 00 00 jne 1f74 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ee4>
v->set_zero(v->type);
1f54: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1f58: 48 8b 45 a8 mov -0x58(%rbp),%rax
1f5c: 8b 70 04 mov 0x4(%rax),%esi
1f5f: e8 00 00 00 00 callq 1f64 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ed4>
i->Remove();
1f64: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1f68: e8 00 00 00 00 callq 1f6d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1edd>
result = true;
1f6d: 48 8b 45 c0 mov -0x40(%rbp),%rax
1f71: c6 00 01 movb $0x1,(%rax)
1f74: e9 00 00 00 00 jmpq 1f79 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ee9>
}
break;
1f79: e9 78 0b 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_NOT:
if (i->src1.value->IsConstant()) {
1f7e: 48 8b 45 b0 mov -0x50(%rbp),%rax
1f82: 48 8b 78 30 mov 0x30(%rax),%rdi
1f86: e8 00 00 00 00 callq 1f8b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1efb>
1f8b: a8 01 test $0x1,%al
1f8d: 0f 85 05 00 00 00 jne 1f98 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f08>
1f93: e9 2a 00 00 00 jmpq 1fc2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f32>
v->set_from(i->src1.value);
1f98: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1f9c: 48 8b 45 b0 mov -0x50(%rbp),%rax
1fa0: 48 8b 70 30 mov 0x30(%rax),%rsi
1fa4: e8 00 00 00 00 callq 1fa9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f19>
v->Not();
1fa9: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1fad: e8 00 00 00 00 callq 1fb2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f22>
i->Remove();
1fb2: 48 8b 7d b0 mov -0x50(%rbp),%rdi
1fb6: e8 00 00 00 00 callq 1fbb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f2b>
result = true;
1fbb: 48 8b 45 c0 mov -0x40(%rbp),%rax
1fbf: c6 00 01 movb $0x1,(%rax)
}
break;
1fc2: e9 2f 0b 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SHL:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1fc7: 48 8b 45 b0 mov -0x50(%rbp),%rax
1fcb: 48 8b 78 30 mov 0x30(%rax),%rdi
1fcf: e8 00 00 00 00 callq 1fd4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f44>
1fd4: a8 01 test $0x1,%al
1fd6: 0f 85 05 00 00 00 jne 1fe1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f51>
1fdc: e9 51 00 00 00 jmpq 2032 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1fa2>
1fe1: 48 8b 45 b0 mov -0x50(%rbp),%rax
1fe5: 48 8b 78 38 mov 0x38(%rax),%rdi
1fe9: e8 00 00 00 00 callq 1fee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f5e>
1fee: a8 01 test $0x1,%al
1ff0: 0f 85 05 00 00 00 jne 1ffb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f6b>
1ff6: e9 37 00 00 00 jmpq 2032 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1fa2>
v->set_from(i->src1.value);
1ffb: 48 8b 7d a8 mov -0x58(%rbp),%rdi
1fff: 48 8b 45 b0 mov -0x50(%rbp),%rax
2003: 48 8b 70 30 mov 0x30(%rax),%rsi
2007: e8 00 00 00 00 callq 200c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f7c>
v->Shl(i->src2.value);
200c: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2010: 48 8b 45 b0 mov -0x50(%rbp),%rax
2014: 48 8b 70 38 mov 0x38(%rax),%rsi
2018: e8 00 00 00 00 callq 201d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f8d>
i->Remove();
201d: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2021: e8 00 00 00 00 callq 2026 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f96>
result = true;
2026: 48 8b 45 c0 mov -0x40(%rbp),%rax
202a: c6 00 01 movb $0x1,(%rax)
} else if (i->src2.value->IsConstantZero()) {
202d: e9 57 00 00 00 jmpq 2089 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ff9>
2032: 48 8b 45 b0 mov -0x50(%rbp),%rax
2036: 48 8b 78 38 mov 0x38(%rax),%rdi
203a: e8 00 00 00 00 callq 203f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1faf>
203f: a8 01 test $0x1,%al
2041: 0f 85 05 00 00 00 jne 204c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1fbc>
2047: e9 38 00 00 00 jmpq 2084 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ff4>
204c: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 2053 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1fc3>
2053: 31 d2 xor %edx,%edx
auto src1 = i->src1.value;
2055: 48 8b 45 b0 mov -0x50(%rbp),%rax
2059: 48 8b 40 30 mov 0x30(%rax),%rax
205d: 48 89 85 a8 fe ff ff mov %rax,-0x158(%rbp)
i->Replace(&OPCODE_ASSIGN_info, 0);
2064: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2068: e8 00 00 00 00 callq 206d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1fdd>
i->set_src1(src1);
206d: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2071: 48 8b b5 a8 fe ff ff mov -0x158(%rbp),%rsi
2078: e8 00 00 00 00 callq 207d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1fed>
result = true;
207d: 48 8b 45 c0 mov -0x40(%rbp),%rax
2081: c6 00 01 movb $0x1,(%rax)
2084: e9 00 00 00 00 jmpq 2089 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ff9>
}
break;
2089: e9 68 0a 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SHR:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
208e: 48 8b 45 b0 mov -0x50(%rbp),%rax
2092: 48 8b 78 30 mov 0x30(%rax),%rdi
2096: e8 00 00 00 00 callq 209b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x200b>
209b: a8 01 test $0x1,%al
209d: 0f 85 05 00 00 00 jne 20a8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2018>
20a3: e9 51 00 00 00 jmpq 20f9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2069>
20a8: 48 8b 45 b0 mov -0x50(%rbp),%rax
20ac: 48 8b 78 38 mov 0x38(%rax),%rdi
20b0: e8 00 00 00 00 callq 20b5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2025>
20b5: a8 01 test $0x1,%al
20b7: 0f 85 05 00 00 00 jne 20c2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2032>
20bd: e9 37 00 00 00 jmpq 20f9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2069>
v->set_from(i->src1.value);
20c2: 48 8b 7d a8 mov -0x58(%rbp),%rdi
20c6: 48 8b 45 b0 mov -0x50(%rbp),%rax
20ca: 48 8b 70 30 mov 0x30(%rax),%rsi
20ce: e8 00 00 00 00 callq 20d3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2043>
v->Shr(i->src2.value);
20d3: 48 8b 7d a8 mov -0x58(%rbp),%rdi
20d7: 48 8b 45 b0 mov -0x50(%rbp),%rax
20db: 48 8b 70 38 mov 0x38(%rax),%rsi
20df: e8 00 00 00 00 callq 20e4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2054>
i->Remove();
20e4: 48 8b 7d b0 mov -0x50(%rbp),%rdi
20e8: e8 00 00 00 00 callq 20ed <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x205d>
result = true;
20ed: 48 8b 45 c0 mov -0x40(%rbp),%rax
20f1: c6 00 01 movb $0x1,(%rax)
} else if (i->src2.value->IsConstantZero()) {
20f4: e9 57 00 00 00 jmpq 2150 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20c0>
20f9: 48 8b 45 b0 mov -0x50(%rbp),%rax
20fd: 48 8b 78 38 mov 0x38(%rax),%rdi
2101: e8 00 00 00 00 callq 2106 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2076>
2106: a8 01 test $0x1,%al
2108: 0f 85 05 00 00 00 jne 2113 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2083>
210e: e9 38 00 00 00 jmpq 214b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20bb>
2113: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 211a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x208a>
211a: 31 d2 xor %edx,%edx
auto src1 = i->src1.value;
211c: 48 8b 45 b0 mov -0x50(%rbp),%rax
2120: 48 8b 40 30 mov 0x30(%rax),%rax
2124: 48 89 85 a0 fe ff ff mov %rax,-0x160(%rbp)
i->Replace(&OPCODE_ASSIGN_info, 0);
212b: 48 8b 7d b0 mov -0x50(%rbp),%rdi
212f: e8 00 00 00 00 callq 2134 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20a4>
i->set_src1(src1);
2134: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2138: 48 8b b5 a0 fe ff ff mov -0x160(%rbp),%rsi
213f: e8 00 00 00 00 callq 2144 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20b4>
result = true;
2144: 48 8b 45 c0 mov -0x40(%rbp),%rax
2148: c6 00 01 movb $0x1,(%rax)
214b: e9 00 00 00 00 jmpq 2150 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20c0>
}
break;
2150: e9 a1 09 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SHA:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2155: 48 8b 45 b0 mov -0x50(%rbp),%rax
2159: 48 8b 78 30 mov 0x30(%rax),%rdi
215d: e8 00 00 00 00 callq 2162 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20d2>
2162: a8 01 test $0x1,%al
2164: 0f 85 05 00 00 00 jne 216f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20df>
216a: e9 4c 00 00 00 jmpq 21bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x212b>
216f: 48 8b 45 b0 mov -0x50(%rbp),%rax
2173: 48 8b 78 38 mov 0x38(%rax),%rdi
2177: e8 00 00 00 00 callq 217c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20ec>
217c: a8 01 test $0x1,%al
217e: 0f 85 05 00 00 00 jne 2189 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20f9>
2184: e9 32 00 00 00 jmpq 21bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x212b>
v->set_from(i->src1.value);
2189: 48 8b 7d a8 mov -0x58(%rbp),%rdi
218d: 48 8b 45 b0 mov -0x50(%rbp),%rax
2191: 48 8b 70 30 mov 0x30(%rax),%rsi
2195: e8 00 00 00 00 callq 219a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x210a>
v->Sha(i->src2.value);
219a: 48 8b 7d a8 mov -0x58(%rbp),%rdi
219e: 48 8b 45 b0 mov -0x50(%rbp),%rax
21a2: 48 8b 70 38 mov 0x38(%rax),%rsi
21a6: e8 00 00 00 00 callq 21ab <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x211b>
i->Remove();
21ab: 48 8b 7d b0 mov -0x50(%rbp),%rdi
21af: e8 00 00 00 00 callq 21b4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2124>
result = true;
21b4: 48 8b 45 c0 mov -0x40(%rbp),%rax
21b8: c6 00 01 movb $0x1,(%rax)
}
break;
21bb: e9 36 09 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
// TODO(benvanik): ROTATE_LEFT
case OPCODE_BYTE_SWAP:
if (i->src1.value->IsConstant()) {
21c0: 48 8b 45 b0 mov -0x50(%rbp),%rax
21c4: 48 8b 78 30 mov 0x30(%rax),%rdi
21c8: e8 00 00 00 00 callq 21cd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x213d>
21cd: a8 01 test $0x1,%al
21cf: 0f 85 05 00 00 00 jne 21da <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x214a>
21d5: e9 2a 00 00 00 jmpq 2204 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2174>
v->set_from(i->src1.value);
21da: 48 8b 7d a8 mov -0x58(%rbp),%rdi
21de: 48 8b 45 b0 mov -0x50(%rbp),%rax
21e2: 48 8b 70 30 mov 0x30(%rax),%rsi
21e6: e8 00 00 00 00 callq 21eb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x215b>
v->ByteSwap();
21eb: 48 8b 7d a8 mov -0x58(%rbp),%rdi
21ef: e8 00 00 00 00 callq 21f4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2164>
i->Remove();
21f4: 48 8b 7d b0 mov -0x50(%rbp),%rdi
21f8: e8 00 00 00 00 callq 21fd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x216d>
result = true;
21fd: 48 8b 45 c0 mov -0x40(%rbp),%rax
2201: c6 00 01 movb $0x1,(%rax)
}
break;
2204: e9 ed 08 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_CNTLZ:
if (i->src1.value->IsConstant()) {
2209: 48 8b 45 b0 mov -0x50(%rbp),%rax
220d: 48 8b 78 30 mov 0x30(%rax),%rdi
2211: e8 00 00 00 00 callq 2216 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2186>
2216: a8 01 test $0x1,%al
2218: 0f 85 05 00 00 00 jne 2223 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2193>
221e: e9 31 00 00 00 jmpq 2254 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21c4>
v->set_zero(v->type);
2223: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2227: 48 8b 45 a8 mov -0x58(%rbp),%rax
222b: 8b 70 04 mov 0x4(%rax),%esi
222e: e8 00 00 00 00 callq 2233 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21a3>
v->CountLeadingZeros(i->src1.value);
2233: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2237: 48 8b 45 b0 mov -0x50(%rbp),%rax
223b: 48 8b 70 30 mov 0x30(%rax),%rsi
223f: e8 00 00 00 00 callq 2244 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21b4>
i->Remove();
2244: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2248: e8 00 00 00 00 callq 224d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21bd>
result = true;
224d: 48 8b 45 c0 mov -0x40(%rbp),%rax
2251: c6 00 01 movb $0x1,(%rax)
}
break;
2254: e9 9d 08 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
// TODO(benvanik): INSERT/EXTRACT
// TODO(benvanik): PERMUTE/SWIZZLE
case OPCODE_EXTRACT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2259: 48 8b 45 b0 mov -0x50(%rbp),%rax
225d: 48 8b 78 30 mov 0x30(%rax),%rdi
2261: e8 00 00 00 00 callq 2266 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21d6>
2266: a8 01 test $0x1,%al
2268: 0f 85 05 00 00 00 jne 2273 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21e3>
226e: e9 53 00 00 00 jmpq 22c6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2236>
2273: 48 8b 45 b0 mov -0x50(%rbp),%rax
2277: 48 8b 78 38 mov 0x38(%rax),%rdi
227b: e8 00 00 00 00 callq 2280 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21f0>
2280: a8 01 test $0x1,%al
2282: 0f 85 05 00 00 00 jne 228d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21fd>
2288: e9 39 00 00 00 jmpq 22c6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2236>
v->set_zero(v->type);
228d: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2291: 48 8b 45 a8 mov -0x58(%rbp),%rax
2295: 8b 70 04 mov 0x4(%rax),%esi
2298: e8 00 00 00 00 callq 229d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x220d>
v->Extract(i->src1.value, i->src2.value);
229d: 48 8b 7d a8 mov -0x58(%rbp),%rdi
22a1: 48 8b 45 b0 mov -0x50(%rbp),%rax
22a5: 48 8b 70 30 mov 0x30(%rax),%rsi
22a9: 48 8b 45 b0 mov -0x50(%rbp),%rax
22ad: 48 8b 50 38 mov 0x38(%rax),%rdx
22b1: e8 00 00 00 00 callq 22b6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2226>
i->Remove();
22b6: 48 8b 7d b0 mov -0x50(%rbp),%rdi
22ba: e8 00 00 00 00 callq 22bf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x222f>
result = true;
22bf: 48 8b 45 c0 mov -0x40(%rbp),%rax
22c3: c6 00 01 movb $0x1,(%rax)
}
break;
22c6: e9 2b 08 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_SPLAT:
if (i->src1.value->IsConstant()) {
22cb: 48 8b 45 b0 mov -0x50(%rbp),%rax
22cf: 48 8b 78 30 mov 0x30(%rax),%rdi
22d3: e8 00 00 00 00 callq 22d8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2248>
22d8: a8 01 test $0x1,%al
22da: 0f 85 05 00 00 00 jne 22e5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2255>
22e0: e9 31 00 00 00 jmpq 2316 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2286>
v->set_zero(v->type);
22e5: 48 8b 7d a8 mov -0x58(%rbp),%rdi
22e9: 48 8b 45 a8 mov -0x58(%rbp),%rax
22ed: 8b 70 04 mov 0x4(%rax),%esi
22f0: e8 00 00 00 00 callq 22f5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2265>
v->Splat(i->src1.value);
22f5: 48 8b 7d a8 mov -0x58(%rbp),%rdi
22f9: 48 8b 45 b0 mov -0x50(%rbp),%rax
22fd: 48 8b 70 30 mov 0x30(%rax),%rsi
2301: e8 00 00 00 00 callq 2306 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2276>
i->Remove();
2306: 48 8b 7d b0 mov -0x50(%rbp),%rdi
230a: e8 00 00 00 00 callq 230f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x227f>
result = true;
230f: 48 8b 45 c0 mov -0x40(%rbp),%rax
2313: c6 00 01 movb $0x1,(%rax)
}
break;
2316: e9 db 07 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_COMPARE_EQ:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
231b: 48 8b 45 b0 mov -0x50(%rbp),%rax
231f: 48 8b 78 30 mov 0x30(%rax),%rdi
2323: e8 00 00 00 00 callq 2328 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2298>
2328: a8 01 test $0x1,%al
232a: 0f 85 05 00 00 00 jne 2335 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22a5>
2330: e9 54 00 00 00 jmpq 2389 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22f9>
2335: 48 8b 45 b0 mov -0x50(%rbp),%rax
2339: 48 8b 78 38 mov 0x38(%rax),%rdi
233d: e8 00 00 00 00 callq 2342 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22b2>
2342: a8 01 test $0x1,%al
2344: 0f 85 05 00 00 00 jne 234f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22bf>
234a: e9 3a 00 00 00 jmpq 2389 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22f9>
v->set_from(i->src1.value);
234f: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2353: 48 8b 45 b0 mov -0x50(%rbp),%rax
2357: 48 8b 70 30 mov 0x30(%rax),%rsi
235b: e8 00 00 00 00 callq 2360 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22d0>
v->VectorCompareEQ(i->src2.value, hir::TypeName(i->flags));
2360: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2364: 48 8b 45 b0 mov -0x50(%rbp),%rax
2368: 48 8b 70 38 mov 0x38(%rax),%rsi
236c: 48 8b 45 b0 mov -0x50(%rbp),%rax
2370: 0f b7 50 20 movzwl 0x20(%rax),%edx
2374: e8 00 00 00 00 callq 2379 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22e9>
i->Remove();
2379: 48 8b 7d b0 mov -0x50(%rbp),%rdi
237d: e8 00 00 00 00 callq 2382 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22f2>
result = true;
2382: 48 8b 45 c0 mov -0x40(%rbp),%rax
2386: c6 00 01 movb $0x1,(%rax)
}
break;
2389: e9 68 07 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_COMPARE_SGT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
238e: 48 8b 45 b0 mov -0x50(%rbp),%rax
2392: 48 8b 78 30 mov 0x30(%rax),%rdi
2396: e8 00 00 00 00 callq 239b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x230b>
239b: a8 01 test $0x1,%al
239d: 0f 85 05 00 00 00 jne 23a8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2318>
23a3: e9 54 00 00 00 jmpq 23fc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x236c>
23a8: 48 8b 45 b0 mov -0x50(%rbp),%rax
23ac: 48 8b 78 38 mov 0x38(%rax),%rdi
23b0: e8 00 00 00 00 callq 23b5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2325>
23b5: a8 01 test $0x1,%al
23b7: 0f 85 05 00 00 00 jne 23c2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2332>
23bd: e9 3a 00 00 00 jmpq 23fc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x236c>
v->set_from(i->src1.value);
23c2: 48 8b 7d a8 mov -0x58(%rbp),%rdi
23c6: 48 8b 45 b0 mov -0x50(%rbp),%rax
23ca: 48 8b 70 30 mov 0x30(%rax),%rsi
23ce: e8 00 00 00 00 callq 23d3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2343>
v->VectorCompareSGT(i->src2.value, hir::TypeName(i->flags));
23d3: 48 8b 7d a8 mov -0x58(%rbp),%rdi
23d7: 48 8b 45 b0 mov -0x50(%rbp),%rax
23db: 48 8b 70 38 mov 0x38(%rax),%rsi
23df: 48 8b 45 b0 mov -0x50(%rbp),%rax
23e3: 0f b7 50 20 movzwl 0x20(%rax),%edx
23e7: e8 00 00 00 00 callq 23ec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x235c>
i->Remove();
23ec: 48 8b 7d b0 mov -0x50(%rbp),%rdi
23f0: e8 00 00 00 00 callq 23f5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2365>
result = true;
23f5: 48 8b 45 c0 mov -0x40(%rbp),%rax
23f9: c6 00 01 movb $0x1,(%rax)
}
break;
23fc: e9 f5 06 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_COMPARE_SGE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2401: 48 8b 45 b0 mov -0x50(%rbp),%rax
2405: 48 8b 78 30 mov 0x30(%rax),%rdi
2409: e8 00 00 00 00 callq 240e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x237e>
240e: a8 01 test $0x1,%al
2410: 0f 85 05 00 00 00 jne 241b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x238b>
2416: e9 54 00 00 00 jmpq 246f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23df>
241b: 48 8b 45 b0 mov -0x50(%rbp),%rax
241f: 48 8b 78 38 mov 0x38(%rax),%rdi
2423: e8 00 00 00 00 callq 2428 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2398>
2428: a8 01 test $0x1,%al
242a: 0f 85 05 00 00 00 jne 2435 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23a5>
2430: e9 3a 00 00 00 jmpq 246f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23df>
v->set_from(i->src1.value);
2435: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2439: 48 8b 45 b0 mov -0x50(%rbp),%rax
243d: 48 8b 70 30 mov 0x30(%rax),%rsi
2441: e8 00 00 00 00 callq 2446 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23b6>
v->VectorCompareSGE(i->src2.value, hir::TypeName(i->flags));
2446: 48 8b 7d a8 mov -0x58(%rbp),%rdi
244a: 48 8b 45 b0 mov -0x50(%rbp),%rax
244e: 48 8b 70 38 mov 0x38(%rax),%rsi
2452: 48 8b 45 b0 mov -0x50(%rbp),%rax
2456: 0f b7 50 20 movzwl 0x20(%rax),%edx
245a: e8 00 00 00 00 callq 245f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23cf>
i->Remove();
245f: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2463: e8 00 00 00 00 callq 2468 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23d8>
result = true;
2468: 48 8b 45 c0 mov -0x40(%rbp),%rax
246c: c6 00 01 movb $0x1,(%rax)
}
break;
246f: e9 82 06 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_COMPARE_UGT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2474: 48 8b 45 b0 mov -0x50(%rbp),%rax
2478: 48 8b 78 30 mov 0x30(%rax),%rdi
247c: e8 00 00 00 00 callq 2481 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23f1>
2481: a8 01 test $0x1,%al
2483: 0f 85 05 00 00 00 jne 248e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23fe>
2489: e9 54 00 00 00 jmpq 24e2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2452>
248e: 48 8b 45 b0 mov -0x50(%rbp),%rax
2492: 48 8b 78 38 mov 0x38(%rax),%rdi
2496: e8 00 00 00 00 callq 249b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x240b>
249b: a8 01 test $0x1,%al
249d: 0f 85 05 00 00 00 jne 24a8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2418>
24a3: e9 3a 00 00 00 jmpq 24e2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2452>
v->set_from(i->src1.value);
24a8: 48 8b 7d a8 mov -0x58(%rbp),%rdi
24ac: 48 8b 45 b0 mov -0x50(%rbp),%rax
24b0: 48 8b 70 30 mov 0x30(%rax),%rsi
24b4: e8 00 00 00 00 callq 24b9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2429>
v->VectorCompareUGT(i->src2.value, hir::TypeName(i->flags));
24b9: 48 8b 7d a8 mov -0x58(%rbp),%rdi
24bd: 48 8b 45 b0 mov -0x50(%rbp),%rax
24c1: 48 8b 70 38 mov 0x38(%rax),%rsi
24c5: 48 8b 45 b0 mov -0x50(%rbp),%rax
24c9: 0f b7 50 20 movzwl 0x20(%rax),%edx
24cd: e8 00 00 00 00 callq 24d2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2442>
i->Remove();
24d2: 48 8b 7d b0 mov -0x50(%rbp),%rdi
24d6: e8 00 00 00 00 callq 24db <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x244b>
result = true;
24db: 48 8b 45 c0 mov -0x40(%rbp),%rax
24df: c6 00 01 movb $0x1,(%rax)
}
break;
24e2: e9 0f 06 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_COMPARE_UGE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
24e7: 48 8b 45 b0 mov -0x50(%rbp),%rax
24eb: 48 8b 78 30 mov 0x30(%rax),%rdi
24ef: e8 00 00 00 00 callq 24f4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2464>
24f4: a8 01 test $0x1,%al
24f6: 0f 85 05 00 00 00 jne 2501 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2471>
24fc: e9 54 00 00 00 jmpq 2555 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24c5>
2501: 48 8b 45 b0 mov -0x50(%rbp),%rax
2505: 48 8b 78 38 mov 0x38(%rax),%rdi
2509: e8 00 00 00 00 callq 250e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x247e>
250e: a8 01 test $0x1,%al
2510: 0f 85 05 00 00 00 jne 251b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x248b>
2516: e9 3a 00 00 00 jmpq 2555 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24c5>
v->set_from(i->src1.value);
251b: 48 8b 7d a8 mov -0x58(%rbp),%rdi
251f: 48 8b 45 b0 mov -0x50(%rbp),%rax
2523: 48 8b 70 30 mov 0x30(%rax),%rsi
2527: e8 00 00 00 00 callq 252c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x249c>
v->VectorCompareUGE(i->src2.value, hir::TypeName(i->flags));
252c: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2530: 48 8b 45 b0 mov -0x50(%rbp),%rax
2534: 48 8b 70 38 mov 0x38(%rax),%rsi
2538: 48 8b 45 b0 mov -0x50(%rbp),%rax
253c: 0f b7 50 20 movzwl 0x20(%rax),%edx
2540: e8 00 00 00 00 callq 2545 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24b5>
i->Remove();
2545: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2549: e8 00 00 00 00 callq 254e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24be>
result = true;
254e: 48 8b 45 c0 mov -0x40(%rbp),%rax
2552: c6 00 01 movb $0x1,(%rax)
}
break;
2555: e9 9c 05 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_CONVERT_F2I:
if (i->src1.value->IsConstant()) {
255a: 48 8b 45 b0 mov -0x50(%rbp),%rax
255e: 48 8b 78 30 mov 0x30(%rax),%rdi
2562: e8 00 00 00 00 callq 2567 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24d7>
2567: a8 01 test $0x1,%al
2569: 0f 85 05 00 00 00 jne 2574 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24e4>
256f: e9 4e 00 00 00 jmpq 25c2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2532>
v->set_zero(VEC128_TYPE);
2574: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2578: be 06 00 00 00 mov $0x6,%esi
257d: e8 00 00 00 00 callq 2582 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24f2>
v->VectorConvertF2I(i->src1.value,
2582: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2586: 48 8b 45 b0 mov -0x50(%rbp),%rax
258a: 48 8b 70 30 mov 0x30(%rax),%rsi
!!(i->flags & ARITHMETIC_UNSIGNED));
258e: 48 8b 45 b0 mov -0x50(%rbp),%rax
2592: 0f b7 48 20 movzwl 0x20(%rax),%ecx
2596: 83 e1 04 and $0x4,%ecx
2599: 83 f9 00 cmp $0x0,%ecx
259c: 0f 95 c2 setne %dl
259f: 80 f2 ff xor $0xff,%dl
25a2: 80 f2 ff xor $0xff,%dl
v->VectorConvertF2I(i->src1.value,
25a5: 0f b6 ca movzbl %dl,%ecx
25a8: 83 e1 01 and $0x1,%ecx
25ab: 89 ca mov %ecx,%edx
25ad: e8 00 00 00 00 callq 25b2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2522>
i->Remove();
25b2: 48 8b 7d b0 mov -0x50(%rbp),%rdi
25b6: e8 00 00 00 00 callq 25bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x252b>
result = true;
25bb: 48 8b 45 c0 mov -0x40(%rbp),%rax
25bf: c6 00 01 movb $0x1,(%rax)
}
break;
25c2: e9 2f 05 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_CONVERT_I2F:
if (i->src1.value->IsConstant()) {
25c7: 48 8b 45 b0 mov -0x50(%rbp),%rax
25cb: 48 8b 78 30 mov 0x30(%rax),%rdi
25cf: e8 00 00 00 00 callq 25d4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2544>
25d4: a8 01 test $0x1,%al
25d6: 0f 85 05 00 00 00 jne 25e1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2551>
25dc: e9 4e 00 00 00 jmpq 262f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x259f>
v->set_zero(VEC128_TYPE);
25e1: 48 8b 7d a8 mov -0x58(%rbp),%rdi
25e5: be 06 00 00 00 mov $0x6,%esi
25ea: e8 00 00 00 00 callq 25ef <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x255f>
v->VectorConvertI2F(i->src1.value,
25ef: 48 8b 7d a8 mov -0x58(%rbp),%rdi
25f3: 48 8b 45 b0 mov -0x50(%rbp),%rax
25f7: 48 8b 70 30 mov 0x30(%rax),%rsi
!!(i->flags & ARITHMETIC_UNSIGNED));
25fb: 48 8b 45 b0 mov -0x50(%rbp),%rax
25ff: 0f b7 48 20 movzwl 0x20(%rax),%ecx
2603: 83 e1 04 and $0x4,%ecx
2606: 83 f9 00 cmp $0x0,%ecx
2609: 0f 95 c2 setne %dl
260c: 80 f2 ff xor $0xff,%dl
260f: 80 f2 ff xor $0xff,%dl
v->VectorConvertI2F(i->src1.value,
2612: 0f b6 ca movzbl %dl,%ecx
2615: 83 e1 01 and $0x1,%ecx
2618: 89 ca mov %ecx,%edx
261a: e8 00 00 00 00 callq 261f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x258f>
i->Remove();
261f: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2623: e8 00 00 00 00 callq 2628 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2598>
result = true;
2628: 48 8b 45 c0 mov -0x40(%rbp),%rax
262c: c6 00 01 movb $0x1,(%rax)
}
break;
262f: e9 c2 04 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_SHL:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2634: 48 8b 45 b0 mov -0x50(%rbp),%rax
2638: 48 8b 78 30 mov 0x30(%rax),%rdi
263c: e8 00 00 00 00 callq 2641 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x25b1>
2641: a8 01 test $0x1,%al
2643: 0f 85 05 00 00 00 jne 264e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x25be>
2649: e9 54 00 00 00 jmpq 26a2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2612>
264e: 48 8b 45 b0 mov -0x50(%rbp),%rax
2652: 48 8b 78 38 mov 0x38(%rax),%rdi
2656: e8 00 00 00 00 callq 265b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x25cb>
265b: a8 01 test $0x1,%al
265d: 0f 85 05 00 00 00 jne 2668 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x25d8>
2663: e9 3a 00 00 00 jmpq 26a2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2612>
v->set_from(i->src1.value);
2668: 48 8b 7d a8 mov -0x58(%rbp),%rdi
266c: 48 8b 45 b0 mov -0x50(%rbp),%rax
2670: 48 8b 70 30 mov 0x30(%rax),%rsi
2674: e8 00 00 00 00 callq 2679 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x25e9>
v->VectorShl(i->src2.value, hir::TypeName(i->flags));
2679: 48 8b 7d a8 mov -0x58(%rbp),%rdi
267d: 48 8b 45 b0 mov -0x50(%rbp),%rax
2681: 48 8b 70 38 mov 0x38(%rax),%rsi
2685: 48 8b 45 b0 mov -0x50(%rbp),%rax
2689: 0f b7 50 20 movzwl 0x20(%rax),%edx
268d: e8 00 00 00 00 callq 2692 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2602>
i->Remove();
2692: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2696: e8 00 00 00 00 callq 269b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x260b>
result = true;
269b: 48 8b 45 c0 mov -0x40(%rbp),%rax
269f: c6 00 01 movb $0x1,(%rax)
}
break;
26a2: e9 4f 04 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_SHR:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
26a7: 48 8b 45 b0 mov -0x50(%rbp),%rax
26ab: 48 8b 78 30 mov 0x30(%rax),%rdi
26af: e8 00 00 00 00 callq 26b4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2624>
26b4: a8 01 test $0x1,%al
26b6: 0f 85 05 00 00 00 jne 26c1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2631>
26bc: e9 54 00 00 00 jmpq 2715 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2685>
26c1: 48 8b 45 b0 mov -0x50(%rbp),%rax
26c5: 48 8b 78 38 mov 0x38(%rax),%rdi
26c9: e8 00 00 00 00 callq 26ce <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x263e>
26ce: a8 01 test $0x1,%al
26d0: 0f 85 05 00 00 00 jne 26db <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x264b>
26d6: e9 3a 00 00 00 jmpq 2715 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2685>
v->set_from(i->src1.value);
26db: 48 8b 7d a8 mov -0x58(%rbp),%rdi
26df: 48 8b 45 b0 mov -0x50(%rbp),%rax
26e3: 48 8b 70 30 mov 0x30(%rax),%rsi
26e7: e8 00 00 00 00 callq 26ec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x265c>
v->VectorShr(i->src2.value, hir::TypeName(i->flags));
26ec: 48 8b 7d a8 mov -0x58(%rbp),%rdi
26f0: 48 8b 45 b0 mov -0x50(%rbp),%rax
26f4: 48 8b 70 38 mov 0x38(%rax),%rsi
26f8: 48 8b 45 b0 mov -0x50(%rbp),%rax
26fc: 0f b7 50 20 movzwl 0x20(%rax),%edx
2700: e8 00 00 00 00 callq 2705 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2675>
i->Remove();
2705: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2709: e8 00 00 00 00 callq 270e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x267e>
result = true;
270e: 48 8b 45 c0 mov -0x40(%rbp),%rax
2712: c6 00 01 movb $0x1,(%rax)
}
break;
2715: e9 dc 03 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_ROTATE_LEFT:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
271a: 48 8b 45 b0 mov -0x50(%rbp),%rax
271e: 48 8b 78 30 mov 0x30(%rax),%rdi
2722: e8 00 00 00 00 callq 2727 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2697>
2727: a8 01 test $0x1,%al
2729: 0f 85 05 00 00 00 jne 2734 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26a4>
272f: e9 54 00 00 00 jmpq 2788 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26f8>
2734: 48 8b 45 b0 mov -0x50(%rbp),%rax
2738: 48 8b 78 38 mov 0x38(%rax),%rdi
273c: e8 00 00 00 00 callq 2741 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26b1>
2741: a8 01 test $0x1,%al
2743: 0f 85 05 00 00 00 jne 274e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26be>
2749: e9 3a 00 00 00 jmpq 2788 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26f8>
v->set_from(i->src1.value);
274e: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2752: 48 8b 45 b0 mov -0x50(%rbp),%rax
2756: 48 8b 70 30 mov 0x30(%rax),%rsi
275a: e8 00 00 00 00 callq 275f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26cf>
v->VectorRol(i->src2.value, hir::TypeName(i->flags));
275f: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2763: 48 8b 45 b0 mov -0x50(%rbp),%rax
2767: 48 8b 70 38 mov 0x38(%rax),%rsi
276b: 48 8b 45 b0 mov -0x50(%rbp),%rax
276f: 0f b7 50 20 movzwl 0x20(%rax),%edx
2773: e8 00 00 00 00 callq 2778 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26e8>
i->Remove();
2778: 48 8b 7d b0 mov -0x50(%rbp),%rdi
277c: e8 00 00 00 00 callq 2781 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26f1>
result = true;
2781: 48 8b 45 c0 mov -0x40(%rbp),%rax
2785: c6 00 01 movb $0x1,(%rax)
}
break;
2788: e9 69 03 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_ADD:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
278d: 48 8b 45 b0 mov -0x50(%rbp),%rax
2791: 48 8b 78 30 mov 0x30(%rax),%rdi
2795: e8 00 00 00 00 callq 279a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x270a>
279a: a8 01 test $0x1,%al
279c: 0f 85 05 00 00 00 jne 27a7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2717>
27a2: e9 bb 00 00 00 jmpq 2862 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27d2>
27a7: 48 8b 45 b0 mov -0x50(%rbp),%rax
27ab: 48 8b 78 38 mov 0x38(%rax),%rdi
27af: e8 00 00 00 00 callq 27b4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2724>
27b4: a8 01 test $0x1,%al
27b6: 0f 85 05 00 00 00 jne 27c1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2731>
27bc: e9 a1 00 00 00 jmpq 2862 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27d2>
v->set_from(i->src1.value);
27c1: 48 8b 7d a8 mov -0x58(%rbp),%rdi
27c5: 48 8b 45 b0 mov -0x50(%rbp),%rax
27c9: 48 8b 70 30 mov 0x30(%rax),%rsi
27cd: e8 00 00 00 00 callq 27d2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2742>
uint32_t arith_flags = i->flags >> 8;
27d2: 48 8b 45 b0 mov -0x50(%rbp),%rax
27d6: 0f b7 48 20 movzwl 0x20(%rax),%ecx
27da: c1 f9 08 sar $0x8,%ecx
27dd: 89 8d 9c fe ff ff mov %ecx,-0x164(%rbp)
v->VectorAdd(i->src2.value, hir::TypeName(i->flags & 0xFF),
27e3: 48 8b 7d a8 mov -0x58(%rbp),%rdi
27e7: 48 8b 45 b0 mov -0x50(%rbp),%rax
27eb: 48 8b 70 38 mov 0x38(%rax),%rsi
27ef: 48 8b 45 b0 mov -0x50(%rbp),%rax
27f3: 0f b7 48 20 movzwl 0x20(%rax),%ecx
27f7: 81 e1 ff 00 00 00 and $0xff,%ecx
!!(arith_flags & ARITHMETIC_UNSIGNED),
27fd: 8b 95 9c fe ff ff mov -0x164(%rbp),%edx
2803: 83 e2 04 and $0x4,%edx
2806: 83 fa 00 cmp $0x0,%edx
2809: 41 0f 95 c0 setne %r8b
280d: 41 80 f0 ff xor $0xff,%r8b
2811: 41 80 f0 ff xor $0xff,%r8b
!!(arith_flags & ARITHMETIC_SATURATE));
2815: 8b 95 9c fe ff ff mov -0x164(%rbp),%edx
281b: 83 e2 08 and $0x8,%edx
281e: 83 fa 00 cmp $0x0,%edx
2821: 41 0f 95 c1 setne %r9b
2825: 41 80 f1 ff xor $0xff,%r9b
2829: 41 80 f1 ff xor $0xff,%r9b
v->VectorAdd(i->src2.value, hir::TypeName(i->flags & 0xFF),
282d: 41 0f b6 d0 movzbl %r8b,%edx
2831: 83 e2 01 and $0x1,%edx
2834: 45 0f b6 d1 movzbl %r9b,%r10d
2838: 41 83 e2 01 and $0x1,%r10d
283c: 89 95 2c fe ff ff mov %edx,-0x1d4(%rbp)
2842: 89 ca mov %ecx,%edx
2844: 8b 8d 2c fe ff ff mov -0x1d4(%rbp),%ecx
284a: 45 89 d0 mov %r10d,%r8d
284d: e8 00 00 00 00 callq 2852 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27c2>
i->Remove();
2852: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2856: e8 00 00 00 00 callq 285b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27cb>
result = true;
285b: 48 8b 45 c0 mov -0x40(%rbp),%rax
285f: c6 00 01 movb $0x1,(%rax)
}
break;
2862: e9 8f 02 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_SUB:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2867: 48 8b 45 b0 mov -0x50(%rbp),%rax
286b: 48 8b 78 30 mov 0x30(%rax),%rdi
286f: e8 00 00 00 00 callq 2874 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27e4>
2874: a8 01 test $0x1,%al
2876: 0f 85 05 00 00 00 jne 2881 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27f1>
287c: e9 bb 00 00 00 jmpq 293c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28ac>
2881: 48 8b 45 b0 mov -0x50(%rbp),%rax
2885: 48 8b 78 38 mov 0x38(%rax),%rdi
2889: e8 00 00 00 00 callq 288e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27fe>
288e: a8 01 test $0x1,%al
2890: 0f 85 05 00 00 00 jne 289b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x280b>
2896: e9 a1 00 00 00 jmpq 293c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28ac>
v->set_from(i->src1.value);
289b: 48 8b 7d a8 mov -0x58(%rbp),%rdi
289f: 48 8b 45 b0 mov -0x50(%rbp),%rax
28a3: 48 8b 70 30 mov 0x30(%rax),%rsi
28a7: e8 00 00 00 00 callq 28ac <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x281c>
uint32_t arith_flags = i->flags >> 8;
28ac: 48 8b 45 b0 mov -0x50(%rbp),%rax
28b0: 0f b7 48 20 movzwl 0x20(%rax),%ecx
28b4: c1 f9 08 sar $0x8,%ecx
28b7: 89 8d 98 fe ff ff mov %ecx,-0x168(%rbp)
v->VectorSub(i->src2.value, hir::TypeName(i->flags & 0xFF),
28bd: 48 8b 7d a8 mov -0x58(%rbp),%rdi
28c1: 48 8b 45 b0 mov -0x50(%rbp),%rax
28c5: 48 8b 70 38 mov 0x38(%rax),%rsi
28c9: 48 8b 45 b0 mov -0x50(%rbp),%rax
28cd: 0f b7 48 20 movzwl 0x20(%rax),%ecx
28d1: 81 e1 ff 00 00 00 and $0xff,%ecx
!!(arith_flags & ARITHMETIC_UNSIGNED),
28d7: 8b 95 98 fe ff ff mov -0x168(%rbp),%edx
28dd: 83 e2 04 and $0x4,%edx
28e0: 83 fa 00 cmp $0x0,%edx
28e3: 41 0f 95 c0 setne %r8b
28e7: 41 80 f0 ff xor $0xff,%r8b
28eb: 41 80 f0 ff xor $0xff,%r8b
!!(arith_flags & ARITHMETIC_SATURATE));
28ef: 8b 95 98 fe ff ff mov -0x168(%rbp),%edx
28f5: 83 e2 08 and $0x8,%edx
28f8: 83 fa 00 cmp $0x0,%edx
28fb: 41 0f 95 c1 setne %r9b
28ff: 41 80 f1 ff xor $0xff,%r9b
2903: 41 80 f1 ff xor $0xff,%r9b
v->VectorSub(i->src2.value, hir::TypeName(i->flags & 0xFF),
2907: 41 0f b6 d0 movzbl %r8b,%edx
290b: 83 e2 01 and $0x1,%edx
290e: 45 0f b6 d1 movzbl %r9b,%r10d
2912: 41 83 e2 01 and $0x1,%r10d
2916: 89 95 28 fe ff ff mov %edx,-0x1d8(%rbp)
291c: 89 ca mov %ecx,%edx
291e: 8b 8d 28 fe ff ff mov -0x1d8(%rbp),%ecx
2924: 45 89 d0 mov %r10d,%r8d
2927: e8 00 00 00 00 callq 292c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x289c>
i->Remove();
292c: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2930: e8 00 00 00 00 callq 2935 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28a5>
result = true;
2935: 48 8b 45 c0 mov -0x40(%rbp),%rax
2939: c6 00 01 movb $0x1,(%rax)
}
break;
293c: e9 b5 01 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_DOT_PRODUCT_3:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2941: 48 8b 45 b0 mov -0x50(%rbp),%rax
2945: 48 8b 78 30 mov 0x30(%rax),%rdi
2949: e8 00 00 00 00 callq 294e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28be>
294e: a8 01 test $0x1,%al
2950: 0f 85 05 00 00 00 jne 295b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28cb>
2956: e9 4c 00 00 00 jmpq 29a7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2917>
295b: 48 8b 45 b0 mov -0x50(%rbp),%rax
295f: 48 8b 78 38 mov 0x38(%rax),%rdi
2963: e8 00 00 00 00 callq 2968 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28d8>
2968: a8 01 test $0x1,%al
296a: 0f 85 05 00 00 00 jne 2975 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28e5>
2970: e9 32 00 00 00 jmpq 29a7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2917>
v->set_from(i->src1.value);
2975: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2979: 48 8b 45 b0 mov -0x50(%rbp),%rax
297d: 48 8b 70 30 mov 0x30(%rax),%rsi
2981: e8 00 00 00 00 callq 2986 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28f6>
v->DotProduct3(i->src2.value);
2986: 48 8b 7d a8 mov -0x58(%rbp),%rdi
298a: 48 8b 45 b0 mov -0x50(%rbp),%rax
298e: 48 8b 70 38 mov 0x38(%rax),%rsi
2992: e8 00 00 00 00 callq 2997 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2907>
i->Remove();
2997: 48 8b 7d b0 mov -0x50(%rbp),%rdi
299b: e8 00 00 00 00 callq 29a0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2910>
result = true;
29a0: 48 8b 45 c0 mov -0x40(%rbp),%rax
29a4: c6 00 01 movb $0x1,(%rax)
}
break;
29a7: e9 4a 01 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_DOT_PRODUCT_4:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
29ac: 48 8b 45 b0 mov -0x50(%rbp),%rax
29b0: 48 8b 78 30 mov 0x30(%rax),%rdi
29b4: e8 00 00 00 00 callq 29b9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2929>
29b9: a8 01 test $0x1,%al
29bb: 0f 85 05 00 00 00 jne 29c6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2936>
29c1: e9 4c 00 00 00 jmpq 2a12 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2982>
29c6: 48 8b 45 b0 mov -0x50(%rbp),%rax
29ca: 48 8b 78 38 mov 0x38(%rax),%rdi
29ce: e8 00 00 00 00 callq 29d3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2943>
29d3: a8 01 test $0x1,%al
29d5: 0f 85 05 00 00 00 jne 29e0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2950>
29db: e9 32 00 00 00 jmpq 2a12 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2982>
v->set_from(i->src1.value);
29e0: 48 8b 7d a8 mov -0x58(%rbp),%rdi
29e4: 48 8b 45 b0 mov -0x50(%rbp),%rax
29e8: 48 8b 70 30 mov 0x30(%rax),%rsi
29ec: e8 00 00 00 00 callq 29f1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2961>
v->DotProduct4(i->src2.value);
29f1: 48 8b 7d a8 mov -0x58(%rbp),%rdi
29f5: 48 8b 45 b0 mov -0x50(%rbp),%rax
29f9: 48 8b 70 38 mov 0x38(%rax),%rsi
29fd: e8 00 00 00 00 callq 2a02 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2972>
i->Remove();
2a02: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2a06: e8 00 00 00 00 callq 2a0b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x297b>
result = true;
2a0b: 48 8b 45 c0 mov -0x40(%rbp),%rax
2a0f: c6 00 01 movb $0x1,(%rax)
}
break;
2a12: e9 df 00 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
case OPCODE_VECTOR_AVERAGE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
2a17: 48 8b 45 b0 mov -0x50(%rbp),%rax
2a1b: 48 8b 78 30 mov 0x30(%rax),%rdi
2a1f: e8 00 00 00 00 callq 2a24 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2994>
2a24: a8 01 test $0x1,%al
2a26: 0f 85 05 00 00 00 jne 2a31 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x29a1>
2a2c: e9 bb 00 00 00 jmpq 2aec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a5c>
2a31: 48 8b 45 b0 mov -0x50(%rbp),%rax
2a35: 48 8b 78 38 mov 0x38(%rax),%rdi
2a39: e8 00 00 00 00 callq 2a3e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x29ae>
2a3e: a8 01 test $0x1,%al
2a40: 0f 85 05 00 00 00 jne 2a4b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x29bb>
2a46: e9 a1 00 00 00 jmpq 2aec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a5c>
v->set_from(i->src1.value);
2a4b: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2a4f: 48 8b 45 b0 mov -0x50(%rbp),%rax
2a53: 48 8b 70 30 mov 0x30(%rax),%rsi
2a57: e8 00 00 00 00 callq 2a5c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x29cc>
uint32_t arith_flags = i->flags >> 8;
2a5c: 48 8b 45 b0 mov -0x50(%rbp),%rax
2a60: 0f b7 48 20 movzwl 0x20(%rax),%ecx
2a64: c1 f9 08 sar $0x8,%ecx
2a67: 89 8d 94 fe ff ff mov %ecx,-0x16c(%rbp)
v->VectorAverage(i->src2.value, hir::TypeName(i->flags & 0xFF),
2a6d: 48 8b 7d a8 mov -0x58(%rbp),%rdi
2a71: 48 8b 45 b0 mov -0x50(%rbp),%rax
2a75: 48 8b 70 38 mov 0x38(%rax),%rsi
2a79: 48 8b 45 b0 mov -0x50(%rbp),%rax
2a7d: 0f b7 48 20 movzwl 0x20(%rax),%ecx
2a81: 81 e1 ff 00 00 00 and $0xff,%ecx
!!(arith_flags & ARITHMETIC_UNSIGNED),
2a87: 8b 95 94 fe ff ff mov -0x16c(%rbp),%edx
2a8d: 83 e2 04 and $0x4,%edx
2a90: 83 fa 00 cmp $0x0,%edx
2a93: 41 0f 95 c0 setne %r8b
2a97: 41 80 f0 ff xor $0xff,%r8b
2a9b: 41 80 f0 ff xor $0xff,%r8b
!!(arith_flags & ARITHMETIC_SATURATE));
2a9f: 8b 95 94 fe ff ff mov -0x16c(%rbp),%edx
2aa5: 83 e2 08 and $0x8,%edx
2aa8: 83 fa 00 cmp $0x0,%edx
2aab: 41 0f 95 c1 setne %r9b
2aaf: 41 80 f1 ff xor $0xff,%r9b
2ab3: 41 80 f1 ff xor $0xff,%r9b
v->VectorAverage(i->src2.value, hir::TypeName(i->flags & 0xFF),
2ab7: 41 0f b6 d0 movzbl %r8b,%edx
2abb: 83 e2 01 and $0x1,%edx
2abe: 45 0f b6 d1 movzbl %r9b,%r10d
2ac2: 41 83 e2 01 and $0x1,%r10d
2ac6: 89 95 24 fe ff ff mov %edx,-0x1dc(%rbp)
2acc: 89 ca mov %ecx,%edx
2ace: 8b 8d 24 fe ff ff mov -0x1dc(%rbp),%ecx
2ad4: 45 89 d0 mov %r10d,%r8d
2ad7: e8 00 00 00 00 callq 2adc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a4c>
i->Remove();
2adc: 48 8b 7d b0 mov -0x50(%rbp),%rdi
2ae0: e8 00 00 00 00 callq 2ae5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a55>
result = true;
2ae5: 48 8b 45 c0 mov -0x40(%rbp),%rax
2ae9: c6 00 01 movb $0x1,(%rax)
}
break;
2aec: e9 05 00 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
default:
// Ignored.
break;
2af1: e9 00 00 00 00 jmpq 2af6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a66>
}
i = i->next;
2af6: 48 8b 45 b0 mov -0x50(%rbp),%rax
2afa: 48 8b 40 08 mov 0x8(%rax),%rax
2afe: 48 89 45 b0 mov %rax,-0x50(%rbp)
while (i) {
2b02: e9 e3 d5 ff ff jmpq ea <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5a>
}
block = block->next;
2b07: 48 8b 45 b8 mov -0x48(%rbp),%rax
2b0b: 48 8b 40 08 mov 0x8(%rax),%rax
2b0f: 48 89 45 b8 mov %rax,-0x48(%rbp)
while (block) {
2b13: e9 bb d5 ff ff jmpq d3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x43>
2b18: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
2b1f: 00 00
2b21: 48 8b 4d f8 mov -0x8(%rbp),%rcx
2b25: 48 39 c8 cmp %rcx,%rax
2b28: 0f 85 10 00 00 00 jne 2b3e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2aae>
}
return true;
2b2e: b0 01 mov $0x1,%al
2b30: 24 01 and $0x1,%al
2b32: 0f b6 c0 movzbl %al,%eax
2b35: 48 81 c4 e0 01 00 00 add $0x1e0,%rsp
2b3c: 5d pop %rbp
2b3d: c3 retq
2b3e: e8 00 00 00 00 callq 2b43 <.L__PRETTY_FUNCTION__._ZNK2xe3cpu3hir5Value13IsConstantOneEv+0x2641>
Disassembly of section .text.startup:
0000000000000000 <__cxx_global_var_init>:
DEFINE_bool(inline_mmio_access, true, "Inline constant MMIO loads and stores.");
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 10 sub $0x10,%rsp
8: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # f <__cxx_global_var_init+0xf>
f: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 16 <__cxx_global_var_init+0x16>
16: 48 8d 15 00 00 00 00 lea 0x0(%rip),%rdx # 1d <__cxx_global_var_init+0x1d>
1d: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 24 <__cxx_global_var_init+0x24>
24: 4c 8d 05 00 00 00 00 lea 0x0(%rip),%r8 # 2b <__cxx_global_var_init+0x2b>
2b: 4c 8d 0d 00 00 00 00 lea 0x0(%rip),%r9 # 32 <__cxx_global_var_init+0x32>
32: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 39 <__cxx_global_var_init+0x39>
39: 48 89 04 24 mov %rax,(%rsp)
3d: e8 00 00 00 00 callq 42 <__cxx_global_var_init+0x42>
42: 48 83 c4 10 add $0x10,%rsp
46: 5d pop %rbp
47: c3 retq
48: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
4f: 00
0000000000000050 <_GLOBAL__sub_I_constant_propagation_pass.cc>:
50: 55 push %rbp
51: 48 89 e5 mov %rsp,%rbp
54: e8 a7 ff ff ff callq 0 <__cxx_global_var_init>
59: 5d pop %rbp
5a: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir10HIRBuilder11first_blockEv:
0000000000000000 <xe::cpu::hir::HIRBuilder::first_block() const>:
std::vector<Value*>& locals() __attribute__ ((optnone)) { return locals_; }
uint32_t max_value_ordinal() const __attribute__ ((optnone)) { return next_value_ordinal_; }
Block* first_block() const __attribute__ ((optnone)) { return block_head_; }
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 48 8b 7d f8 mov -0x8(%rbp),%rdi
c: 48 8b 47 38 mov 0x38(%rdi),%rax
10: 5d pop %rbp
11: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value10IsConstantEv:
0000000000000000 <xe::cpu::hir::Value::IsConstant() const>:
type = other->type;
flags = other->flags;
constant.v128 = other->constant.v128;
}
inline bool IsConstant() const { return !!(flags & VALUE_IS_CONSTANT); }
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 48 8b 7d f8 mov -0x8(%rbp),%rdi
c: 8b 47 08 mov 0x8(%rdi),%eax
f: 83 e0 02 and $0x2,%eax
12: 83 f8 00 cmp $0x0,%eax
15: 0f 95 c1 setne %cl
18: 80 f1 ff xor $0xff,%cl
1b: 80 f1 ff xor $0xff,%cl
1e: 80 e1 01 and $0x1,%cl
21: 0f b6 c1 movzbl %cl,%eax
24: 5d pop %rbp
25: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value14IsConstantTrueEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantTrue() const>:
bool IsConstantTrue() const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 48 89 7d f0 mov %rdi,-0x10(%rbp)
c: 48 8b 7d f0 mov -0x10(%rbp),%rdi
if (type == VEC128_TYPE) {
10: 83 7f 04 06 cmpl $0x6,0x4(%rdi)
14: 48 89 7d e8 mov %rdi,-0x18(%rbp)
18: 0f 85 1f 00 00 00 jne 3d <xe::cpu::hir::Value::IsConstantTrue() const+0x3d>
assert_always();
1e: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 25 <xe::cpu::hir::Value::IsConstantTrue() const+0x25>
25: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 2c <xe::cpu::hir::Value::IsConstantTrue() const+0x2c>
2c: ba b6 00 00 00 mov $0xb6,%edx
31: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 38 <xe::cpu::hir::Value::IsConstantTrue() const+0x38>
38: e8 00 00 00 00 callq 3d <xe::cpu::hir::Value::IsConstantTrue() const+0x3d>
}
if (flags & VALUE_IS_CONSTANT) {
3d: 48 8b 45 e8 mov -0x18(%rbp),%rax
41: 8b 48 08 mov 0x8(%rax),%ecx
44: 83 e1 02 and $0x2,%ecx
47: 83 f9 00 cmp $0x0,%ecx
4a: 0f 84 47 01 00 00 je 197 <xe::cpu::hir::Value::IsConstantTrue() const+0x197>
switch (type) {
50: 48 8b 45 e8 mov -0x18(%rbp),%rax
54: 8b 48 04 mov 0x4(%rax),%ecx
57: 89 ca mov %ecx,%edx
59: 48 89 d6 mov %rdx,%rsi
5c: 48 83 ee 06 sub $0x6,%rsi
60: 48 89 55 e0 mov %rdx,-0x20(%rbp)
64: 48 89 75 d8 mov %rsi,-0x28(%rbp)
68: 0f 87 0a 01 00 00 ja 178 <xe::cpu::hir::Value::IsConstantTrue() const+0x178>
6e: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 75 <xe::cpu::hir::Value::IsConstantTrue() const+0x75>
75: 48 8b 4d e0 mov -0x20(%rbp),%rcx
79: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
7d: 48 01 c2 add %rax,%rdx
80: ff e2 jmpq *%rdx
case INT8_TYPE:
return !!constant.i8;
82: 48 8b 45 e8 mov -0x18(%rbp),%rax
86: 80 78 20 00 cmpb $0x0,0x20(%rax)
8a: 0f 95 c1 setne %cl
8d: 80 f1 ff xor $0xff,%cl
90: 80 f1 ff xor $0xff,%cl
93: 80 e1 01 and $0x1,%cl
96: 88 4d ff mov %cl,-0x1(%rbp)
99: e9 fd 00 00 00 jmpq 19b <xe::cpu::hir::Value::IsConstantTrue() const+0x19b>
case INT16_TYPE:
return !!constant.i16;
9e: 48 8b 45 e8 mov -0x18(%rbp),%rax
a2: 66 83 78 20 00 cmpw $0x0,0x20(%rax)
a7: 0f 95 c1 setne %cl
aa: 80 f1 ff xor $0xff,%cl
ad: 80 f1 ff xor $0xff,%cl
b0: 80 e1 01 and $0x1,%cl
b3: 88 4d ff mov %cl,-0x1(%rbp)
b6: e9 e0 00 00 00 jmpq 19b <xe::cpu::hir::Value::IsConstantTrue() const+0x19b>
case INT32_TYPE:
return !!constant.i32;
bb: 48 8b 45 e8 mov -0x18(%rbp),%rax
bf: 83 78 20 00 cmpl $0x0,0x20(%rax)
c3: 0f 95 c1 setne %cl
c6: 80 f1 ff xor $0xff,%cl
c9: 80 f1 ff xor $0xff,%cl
cc: 80 e1 01 and $0x1,%cl
cf: 88 4d ff mov %cl,-0x1(%rbp)
d2: e9 c4 00 00 00 jmpq 19b <xe::cpu::hir::Value::IsConstantTrue() const+0x19b>
case INT64_TYPE:
return !!constant.i64;
d7: 48 8b 45 e8 mov -0x18(%rbp),%rax
db: 48 83 78 20 00 cmpq $0x0,0x20(%rax)
e0: 0f 95 c1 setne %cl
e3: 80 f1 ff xor $0xff,%cl
e6: 80 f1 ff xor $0xff,%cl
e9: 80 e1 01 and $0x1,%cl
ec: 88 4d ff mov %cl,-0x1(%rbp)
ef: e9 a7 00 00 00 jmpq 19b <xe::cpu::hir::Value::IsConstantTrue() const+0x19b>
case FLOAT32_TYPE:
return !!constant.f32;
f4: 48 8b 45 e8 mov -0x18(%rbp),%rax
f8: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
fd: c5 f0 57 c9 vxorps %xmm1,%xmm1,%xmm1
101: c5 f8 2e c1 vucomiss %xmm1,%xmm0
105: 0f 95 c1 setne %cl
108: 0f 9a c2 setp %dl
10b: 08 d1 or %dl,%cl
10d: 80 f1 ff xor $0xff,%cl
110: 80 f1 ff xor $0xff,%cl
113: 80 e1 01 and $0x1,%cl
116: 88 4d ff mov %cl,-0x1(%rbp)
119: e9 7d 00 00 00 jmpq 19b <xe::cpu::hir::Value::IsConstantTrue() const+0x19b>
case FLOAT64_TYPE:
return !!constant.f64;
11e: 48 8b 45 e8 mov -0x18(%rbp),%rax
122: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
127: c5 f0 57 c9 vxorps %xmm1,%xmm1,%xmm1
12b: c5 f9 2e c1 vucomisd %xmm1,%xmm0
12f: 0f 95 c1 setne %cl
132: 0f 9a c2 setp %dl
135: 08 d1 or %dl,%cl
137: 80 f1 ff xor $0xff,%cl
13a: 80 f1 ff xor $0xff,%cl
13d: 80 e1 01 and $0x1,%cl
140: 88 4d ff mov %cl,-0x1(%rbp)
143: e9 53 00 00 00 jmpq 19b <xe::cpu::hir::Value::IsConstantTrue() const+0x19b>
case VEC128_TYPE:
return constant.v128.low || constant.v128.high;
148: 48 8b 45 e8 mov -0x18(%rbp),%rax
14c: 48 83 78 20 00 cmpq $0x0,0x20(%rax)
151: b1 01 mov $0x1,%cl
153: 88 4d d7 mov %cl,-0x29(%rbp)
156: 0f 85 0f 00 00 00 jne 16b <xe::cpu::hir::Value::IsConstantTrue() const+0x16b>
15c: 48 8b 45 e8 mov -0x18(%rbp),%rax
160: 48 83 78 28 00 cmpq $0x0,0x28(%rax)
165: 0f 95 c1 setne %cl
168: 88 4d d7 mov %cl,-0x29(%rbp)
16b: 8a 45 d7 mov -0x29(%rbp),%al
16e: 24 01 and $0x1,%al
170: 88 45 ff mov %al,-0x1(%rbp)
173: e9 23 00 00 00 jmpq 19b <xe::cpu::hir::Value::IsConstantTrue() const+0x19b>
default:
assert_unhandled_case(type);
178: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 17f <xe::cpu::hir::Value::IsConstantTrue() const+0x17f>
17f: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 186 <xe::cpu::hir::Value::IsConstantTrue() const+0x186>
186: ba c9 00 00 00 mov $0xc9,%edx
18b: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 192 <xe::cpu::hir::Value::IsConstantTrue() const+0x192>
192: e8 00 00 00 00 callq 197 <xe::cpu::hir::Value::IsConstantTrue() const+0x197>
return false;
}
} else {
return false;
197: c6 45 ff 00 movb $0x0,-0x1(%rbp)
}
}
19b: 8a 45 ff mov -0x1(%rbp),%al
19e: 24 01 and $0x1,%al
1a0: 0f b6 c0 movzbl %al,%eax
1a3: 48 83 c4 30 add $0x30,%rsp
1a7: 5d pop %rbp
1a8: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value15IsConstantFalseEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantFalse() const>:
bool IsConstantFalse() const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 48 89 7d f0 mov %rdi,-0x10(%rbp)
c: 48 8b 7d f0 mov -0x10(%rbp),%rdi
if (flags & VALUE_IS_CONSTANT) {
10: 8b 47 08 mov 0x8(%rdi),%eax
13: 83 e0 02 and $0x2,%eax
16: 83 f8 00 cmp $0x0,%eax
19: 48 89 7d e8 mov %rdi,-0x18(%rbp)
1d: 0f 84 37 01 00 00 je 15a <xe::cpu::hir::Value::IsConstantFalse() const+0x15a>
switch (type) {
23: 48 8b 45 e8 mov -0x18(%rbp),%rax
27: 8b 48 04 mov 0x4(%rax),%ecx
2a: 89 ca mov %ecx,%edx
2c: 48 89 d6 mov %rdx,%rsi
2f: 48 83 ee 06 sub $0x6,%rsi
33: 48 89 55 e0 mov %rdx,-0x20(%rbp)
37: 48 89 75 d8 mov %rsi,-0x28(%rbp)
3b: 0f 87 fa 00 00 00 ja 13b <xe::cpu::hir::Value::IsConstantFalse() const+0x13b>
41: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 48 <xe::cpu::hir::Value::IsConstantFalse() const+0x48>
48: 48 8b 4d e0 mov -0x20(%rbp),%rcx
4c: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
50: 48 01 c2 add %rax,%rdx
53: ff e2 jmpq *%rdx
case INT8_TYPE:
return !constant.i8;
55: 48 8b 45 e8 mov -0x18(%rbp),%rax
59: 80 78 20 00 cmpb $0x0,0x20(%rax)
5d: 0f 95 c1 setne %cl
60: 80 f1 ff xor $0xff,%cl
63: 80 e1 01 and $0x1,%cl
66: 88 4d ff mov %cl,-0x1(%rbp)
69: e9 f0 00 00 00 jmpq 15e <xe::cpu::hir::Value::IsConstantFalse() const+0x15e>
case INT16_TYPE:
return !constant.i16;
6e: 48 8b 45 e8 mov -0x18(%rbp),%rax
72: 66 83 78 20 00 cmpw $0x0,0x20(%rax)
77: 0f 95 c1 setne %cl
7a: 80 f1 ff xor $0xff,%cl
7d: 80 e1 01 and $0x1,%cl
80: 88 4d ff mov %cl,-0x1(%rbp)
83: e9 d6 00 00 00 jmpq 15e <xe::cpu::hir::Value::IsConstantFalse() const+0x15e>
case INT32_TYPE:
return !constant.i32;
88: 48 8b 45 e8 mov -0x18(%rbp),%rax
8c: 83 78 20 00 cmpl $0x0,0x20(%rax)
90: 0f 95 c1 setne %cl
93: 80 f1 ff xor $0xff,%cl
96: 80 e1 01 and $0x1,%cl
99: 88 4d ff mov %cl,-0x1(%rbp)
9c: e9 bd 00 00 00 jmpq 15e <xe::cpu::hir::Value::IsConstantFalse() const+0x15e>
case INT64_TYPE:
return !constant.i64;
a1: 48 8b 45 e8 mov -0x18(%rbp),%rax
a5: 48 83 78 20 00 cmpq $0x0,0x20(%rax)
aa: 0f 95 c1 setne %cl
ad: 80 f1 ff xor $0xff,%cl
b0: 80 e1 01 and $0x1,%cl
b3: 88 4d ff mov %cl,-0x1(%rbp)
b6: e9 a3 00 00 00 jmpq 15e <xe::cpu::hir::Value::IsConstantFalse() const+0x15e>
case FLOAT32_TYPE:
return !constant.f32;
bb: 48 8b 45 e8 mov -0x18(%rbp),%rax
bf: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
c4: c5 f0 57 c9 vxorps %xmm1,%xmm1,%xmm1
c8: c5 f8 2e c1 vucomiss %xmm1,%xmm0
cc: 0f 95 c1 setne %cl
cf: 0f 9a c2 setp %dl
d2: 08 d1 or %dl,%cl
d4: 80 f1 ff xor $0xff,%cl
d7: 80 e1 01 and $0x1,%cl
da: 88 4d ff mov %cl,-0x1(%rbp)
dd: e9 7c 00 00 00 jmpq 15e <xe::cpu::hir::Value::IsConstantFalse() const+0x15e>
case FLOAT64_TYPE:
return !constant.f64;
e2: 48 8b 45 e8 mov -0x18(%rbp),%rax
e6: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
eb: c5 f0 57 c9 vxorps %xmm1,%xmm1,%xmm1
ef: c5 f9 2e c1 vucomisd %xmm1,%xmm0
f3: 0f 95 c1 setne %cl
f6: 0f 9a c2 setp %dl
f9: 08 d1 or %dl,%cl
fb: 80 f1 ff xor $0xff,%cl
fe: 80 e1 01 and $0x1,%cl
101: 88 4d ff mov %cl,-0x1(%rbp)
104: e9 55 00 00 00 jmpq 15e <xe::cpu::hir::Value::IsConstantFalse() const+0x15e>
case VEC128_TYPE:
return !(constant.v128.low || constant.v128.high);
109: 48 8b 45 e8 mov -0x18(%rbp),%rax
10d: 48 83 78 20 00 cmpq $0x0,0x20(%rax)
112: b1 01 mov $0x1,%cl
114: 88 4d d7 mov %cl,-0x29(%rbp)
117: 0f 85 0f 00 00 00 jne 12c <xe::cpu::hir::Value::IsConstantFalse() const+0x12c>
11d: 48 8b 45 e8 mov -0x18(%rbp),%rax
121: 48 83 78 28 00 cmpq $0x0,0x28(%rax)
126: 0f 95 c1 setne %cl
129: 88 4d d7 mov %cl,-0x29(%rbp)
12c: 8a 45 d7 mov -0x29(%rbp),%al
12f: 34 ff xor $0xff,%al
131: 24 01 and $0x1,%al
133: 88 45 ff mov %al,-0x1(%rbp)
136: e9 23 00 00 00 jmpq 15e <xe::cpu::hir::Value::IsConstantFalse() const+0x15e>
default:
assert_unhandled_case(type);
13b: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 142 <xe::cpu::hir::Value::IsConstantFalse() const+0x142>
142: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 149 <xe::cpu::hir::Value::IsConstantFalse() const+0x149>
149: ba e2 00 00 00 mov $0xe2,%edx
14e: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 155 <xe::cpu::hir::Value::IsConstantFalse() const+0x155>
155: e8 00 00 00 00 callq 15a <xe::cpu::hir::Value::IsConstantFalse() const+0x15a>
return false;
}
} else {
return false;
15a: c6 45 ff 00 movb $0x0,-0x1(%rbp)
}
}
15e: 8a 45 ff mov -0x1(%rbp),%al
161: 24 01 and $0x1,%al
163: 0f b6 c0 movzbl %al,%eax
166: 48 83 c4 30 add $0x30,%rsp
16a: 5d pop %rbp
16b: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value8set_fromEPKS2_:
0000000000000000 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)>:
void set_from(const Value* other) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 20 sub $0x20,%rsp
8: 48 89 7d f8 mov %rdi,-0x8(%rbp)
c: 48 89 75 f0 mov %rsi,-0x10(%rbp)
10: 48 8b 75 f8 mov -0x8(%rbp),%rsi
assert_true(other->IsConstant());
14: 48 8b 7d f0 mov -0x10(%rbp),%rdi
18: 48 89 75 e8 mov %rsi,-0x18(%rbp)
1c: e8 00 00 00 00 callq 21 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x21>
21: a8 01 test $0x1,%al
23: 0f 85 05 00 00 00 jne 2e <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x2e>
29: e9 05 00 00 00 jmpq 33 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x33>
2e: e9 1f 00 00 00 jmpq 52 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x52>
33: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 3a <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x3a>
3a: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 41 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x41>
41: ba ad 00 00 00 mov $0xad,%edx
46: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 4d <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x4d>
4d: e8 00 00 00 00 callq 52 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x52>
type = other->type;
52: 48 8b 45 f0 mov -0x10(%rbp),%rax
56: 8b 48 04 mov 0x4(%rax),%ecx
59: 48 8b 45 e8 mov -0x18(%rbp),%rax
5d: 89 48 04 mov %ecx,0x4(%rax)
flags = other->flags;
60: 48 8b 55 f0 mov -0x10(%rbp),%rdx
64: 8b 4a 08 mov 0x8(%rdx),%ecx
67: 89 48 08 mov %ecx,0x8(%rax)
constant.v128 = other->constant.v128;
6a: 48 8b 55 f0 mov -0x10(%rbp),%rdx
6e: 48 83 c2 20 add $0x20,%rdx
72: 48 83 c0 20 add $0x20,%rax
76: 48 89 c7 mov %rax,%rdi
79: 48 89 d6 mov %rdx,%rsi
7c: e8 00 00 00 00 callq 81 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x81>
}
81: 48 89 45 e0 mov %rax,-0x20(%rbp)
85: 48 83 c4 20 add $0x20,%rsp
89: 5d pop %rbp
8a: c3 retq
Disassembly of section .text._ZNK2xe3cpu9Processor6memoryEv:
0000000000000000 <xe::cpu::Processor::memory() const>:
class Processor {
public:
Processor(Memory* memory, ExportResolver* export_resolver);
~Processor();
Memory* memory() const { return memory_; }
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 48 8b 7d f8 mov -0x8(%rbp),%rdi
c: 48 8b 07 mov (%rdi),%rax
f: 5d pop %rbp
10: c3 retq
Disassembly of section .text._ZNK2xe6Memory16TranslateVirtualEj:
0000000000000000 <xe::Memory::TranslateVirtual(unsigned int) const>:
inline uint8_t* virtual_membase() const { return virtual_membase_; }
// Translates a guest virtual address to a host address that can be accessed
// as a normal pointer.
// Note that the contents at the specified host address are big-endian.
inline uint8_t* TranslateVirtual(uint32_t guest_address) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 89 75 f4 mov %esi,-0xc(%rbp)
b: 48 8b 7d f8 mov -0x8(%rbp),%rdi
return virtual_membase_ + guest_address;
f: 48 8b 7f 28 mov 0x28(%rdi),%rdi
13: 8b 75 f4 mov -0xc(%rbp),%esi
16: 89 f0 mov %esi,%eax
18: 48 01 c7 add %rax,%rdi
1b: 48 89 f8 mov %rdi,%rax
1e: 5d pop %rbp
1f: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEh:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned char)>:
void set_constant(uint8_t value) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 40 88 f0 mov %sil,%al
7: 48 89 7d f8 mov %rdi,-0x8(%rbp)
b: 88 45 f7 mov %al,-0x9(%rbp)
e: 48 8b 7d f8 mov -0x8(%rbp),%rdi
type = INT8_TYPE;
12: c7 47 04 00 00 00 00 movl $0x0,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
19: 8b 77 08 mov 0x8(%rdi),%esi
1c: 83 ce 02 or $0x2,%esi
1f: 89 77 08 mov %esi,0x8(%rdi)
constant.i64 = uint64_t(value);
22: 0f b6 75 f7 movzbl -0x9(%rbp),%esi
26: 89 f1 mov %esi,%ecx
28: 48 89 4f 20 mov %rcx,0x20(%rdi)
}
2c: 5d pop %rbp
2d: c3 retq
Disassembly of section .text._ZN2xe4loadIhEET_PKv:
0000000000000000 <unsigned char xe::load<unsigned char>(void const*)>:
template <>
inline int8_t load<int8_t>(const void* mem) {
return *reinterpret_cast<const int8_t*>(mem);
}
template <>
inline uint8_t load<uint8_t>(const void* mem) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
return *reinterpret_cast<const uint8_t*>(mem);
8: 48 8b 7d f8 mov -0x8(%rbp),%rdi
c: 0f b6 07 movzbl (%rdi),%eax
f: 5d pop %rbp
10: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEt:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned short)>:
void set_constant(uint16_t value) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 66 89 f0 mov %si,%ax
7: 48 89 7d f8 mov %rdi,-0x8(%rbp)
b: 66 89 45 f6 mov %ax,-0xa(%rbp)
f: 48 8b 7d f8 mov -0x8(%rbp),%rdi
type = INT16_TYPE;
13: c7 47 04 01 00 00 00 movl $0x1,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
1a: 8b 77 08 mov 0x8(%rdi),%esi
1d: 83 ce 02 or $0x2,%esi
20: 89 77 08 mov %esi,0x8(%rdi)
constant.i64 = uint64_t(value);
23: 0f b7 75 f6 movzwl -0xa(%rbp),%esi
27: 89 f1 mov %esi,%ecx
29: 48 89 4f 20 mov %rcx,0x20(%rdi)
}
2d: 5d pop %rbp
2e: c3 retq
Disassembly of section .text._ZN2xe4loadItEET_PKv:
0000000000000000 <unsigned short xe::load<unsigned short>(void const*)>:
template <>
inline int16_t load<int16_t>(const void* mem) {
return *reinterpret_cast<const int16_t*>(mem);
}
template <>
inline uint16_t load<uint16_t>(const void* mem) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
return *reinterpret_cast<const uint16_t*>(mem);
8: 48 8b 7d f8 mov -0x8(%rbp),%rdi
c: 0f b7 07 movzwl (%rdi),%eax
f: 5d pop %rbp
10: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEj:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned int)>:
void set_constant(uint32_t value) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 89 75 f4 mov %esi,-0xc(%rbp)
b: 48 8b 7d f8 mov -0x8(%rbp),%rdi
type = INT32_TYPE;
f: c7 47 04 02 00 00 00 movl $0x2,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
16: 8b 77 08 mov 0x8(%rdi),%esi
19: 83 ce 02 or $0x2,%esi
1c: 89 77 08 mov %esi,0x8(%rdi)
constant.i64 = uint64_t(value);
1f: 8b 75 f4 mov -0xc(%rbp),%esi
22: 89 f0 mov %esi,%eax
24: 48 89 47 20 mov %rax,0x20(%rdi)
}
28: 5d pop %rbp
29: c3 retq
Disassembly of section .text._ZN2xe4loadIjEET_PKv:
0000000000000000 <unsigned int xe::load<unsigned int>(void const*)>:
template <>
inline int32_t load<int32_t>(const void* mem) {
return *reinterpret_cast<const int32_t*>(mem);
}
template <>
inline uint32_t load<uint32_t>(const void* mem) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
return *reinterpret_cast<const uint32_t*>(mem);
8: 48 8b 7d f8 mov -0x8(%rbp),%rdi
c: 8b 07 mov (%rdi),%eax
e: 5d pop %rbp
f: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEm:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned long)>:
void set_constant(uint64_t value) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 48 89 75 f0 mov %rsi,-0x10(%rbp)
c: 48 8b 75 f8 mov -0x8(%rbp),%rsi
type = INT64_TYPE;
10: c7 46 04 03 00 00 00 movl $0x3,0x4(%rsi)
flags |= VALUE_IS_CONSTANT;
17: 8b 46 08 mov 0x8(%rsi),%eax
1a: 83 c8 02 or $0x2,%eax
1d: 89 46 08 mov %eax,0x8(%rsi)
constant.i64 = value;
20: 48 8b 7d f0 mov -0x10(%rbp),%rdi
24: 48 89 7e 20 mov %rdi,0x20(%rsi)
}
28: 5d pop %rbp
29: c3 retq
Disassembly of section .text._ZN2xe4loadImEET_PKv:
0000000000000000 <unsigned long xe::load<unsigned long>(void const*)>:
template <>
inline int64_t load<int64_t>(const void* mem) {
return *reinterpret_cast<const int64_t*>(mem);
}
template <>
inline uint64_t load<uint64_t>(const void* mem) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
return *reinterpret_cast<const uint64_t*>(mem);
8: 48 8b 7d f8 mov -0x8(%rbp),%rdi
c: 48 8b 07 mov (%rdi),%rax
f: 5d pop %rbp
10: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantERKNS_8vec128_sE:
0000000000000000 <xe::cpu::hir::Value::set_constant(xe::vec128_s const&)>:
void set_constant(const vec128_t& value) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 20 sub $0x20,%rsp
8: 48 89 7d f8 mov %rdi,-0x8(%rbp)
c: 48 89 75 f0 mov %rsi,-0x10(%rbp)
10: 48 8b 75 f8 mov -0x8(%rbp),%rsi
type = VEC128_TYPE;
14: c7 46 04 06 00 00 00 movl $0x6,0x4(%rsi)
flags |= VALUE_IS_CONSTANT;
1b: 8b 46 08 mov 0x8(%rsi),%eax
1e: 83 c8 02 or $0x2,%eax
21: 89 46 08 mov %eax,0x8(%rsi)
constant.v128 = value;
24: 48 8b 7d f0 mov -0x10(%rbp),%rdi
28: 48 83 c6 20 add $0x20,%rsi
2c: 48 89 7d e8 mov %rdi,-0x18(%rbp)
30: 48 89 f7 mov %rsi,%rdi
33: 48 8b 75 e8 mov -0x18(%rbp),%rsi
37: e8 00 00 00 00 callq 3c <xe::cpu::hir::Value::set_constant(xe::vec128_s const&)+0x3c>
}
3c: 48 89 45 e0 mov %rax,-0x20(%rbp)
40: 48 83 c4 20 add $0x20,%rsp
44: 5d pop %rbp
45: c3 retq
Disassembly of section .text._ZSt5isnanf:
0000000000000000 <std::isnan(float)>:
#endif
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
constexpr bool
isnan(float __x)
{ return __builtin_isnan(__x); }
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: c5 fa 11 45 fc vmovss %xmm0,-0x4(%rbp)
9: c5 fa 10 45 fc vmovss -0x4(%rbp),%xmm0
e: c5 f8 2e c0 vucomiss %xmm0,%xmm0
12: 0f 9a c0 setp %al
15: 24 01 and $0x1,%al
17: 0f b6 c0 movzbl %al,%eax
1a: 5d pop %rbp
1b: c3 retq
Disassembly of section .text._ZSt5isnand:
0000000000000000 <std::isnan(double)>:
&& !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC
using ::isnan;
#else
constexpr bool
isnan(double __x)
{ return __builtin_isnan(__x); }
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: c5 fb 11 45 f8 vmovsd %xmm0,-0x8(%rbp)
9: c5 fb 10 45 f8 vmovsd -0x8(%rbp),%xmm0
e: c5 f9 2e c0 vucomisd %xmm0,%xmm0
12: 0f 9a c0 setp %al
15: 24 01 and $0x1,%al
17: 0f b6 c0 movzbl %al,%eax
1a: 5d pop %rbp
1b: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value12IsConstantEQEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const>:
}
} else {
return false;
}
}
bool IsConstantEQ(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 48 89 7d f0 mov %rdi,-0x10(%rbp)
c: 48 89 75 e8 mov %rsi,-0x18(%rbp)
10: 48 8b 75 f0 mov -0x10(%rbp),%rsi
if (type == VEC128_TYPE) {
14: 83 7e 04 06 cmpl $0x6,0x4(%rsi)
18: 48 89 75 e0 mov %rsi,-0x20(%rbp)
1c: 0f 85 1f 00 00 00 jne 41 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x41>
assert_always();
22: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 29 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x29>
29: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 30 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x30>
30: ba 1b 01 00 00 mov $0x11b,%edx
35: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 3c <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x3c>
3c: e8 00 00 00 00 callq 41 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x41>
}
if ((flags & VALUE_IS_CONSTANT) && (other->flags & VALUE_IS_CONSTANT)) {
41: 48 8b 45 e0 mov -0x20(%rbp),%rax
45: 8b 48 08 mov 0x8(%rax),%ecx
48: 83 e1 02 and $0x2,%ecx
4b: 83 f9 00 cmp $0x0,%ecx
4e: 0f 84 38 01 00 00 je 18c <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x18c>
54: 48 8b 45 e8 mov -0x18(%rbp),%rax
58: 8b 48 08 mov 0x8(%rax),%ecx
5b: 83 e1 02 and $0x2,%ecx
5e: 83 f9 00 cmp $0x0,%ecx
61: 0f 84 25 01 00 00 je 18c <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x18c>
switch (type) {
67: 48 8b 45 e0 mov -0x20(%rbp),%rax
6b: 8b 48 04 mov 0x4(%rax),%ecx
6e: 89 ca mov %ecx,%edx
70: 48 89 d6 mov %rdx,%rsi
73: 48 83 ee 05 sub $0x5,%rsi
77: 48 89 55 d8 mov %rdx,-0x28(%rbp)
7b: 48 89 75 d0 mov %rsi,-0x30(%rbp)
7f: 0f 87 e8 00 00 00 ja 16d <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x16d>
85: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 8c <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x8c>
8c: 48 8b 4d d8 mov -0x28(%rbp),%rcx
90: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
94: 48 01 c2 add %rax,%rdx
97: ff e2 jmpq *%rdx
case INT8_TYPE:
return constant.i8 == other->constant.i8;
99: 48 8b 45 e0 mov -0x20(%rbp),%rax
9d: 0f be 48 20 movsbl 0x20(%rax),%ecx
a1: 48 8b 55 e8 mov -0x18(%rbp),%rdx
a5: 0f be 72 20 movsbl 0x20(%rdx),%esi
a9: 39 f1 cmp %esi,%ecx
ab: 40 0f 94 c7 sete %dil
af: 40 80 e7 01 and $0x1,%dil
b3: 40 88 7d ff mov %dil,-0x1(%rbp)
b7: e9 d4 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x190>
case INT16_TYPE:
return constant.i16 == other->constant.i16;
bc: 48 8b 45 e0 mov -0x20(%rbp),%rax
c0: 0f bf 48 20 movswl 0x20(%rax),%ecx
c4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
c8: 0f bf 72 20 movswl 0x20(%rdx),%esi
cc: 39 f1 cmp %esi,%ecx
ce: 40 0f 94 c7 sete %dil
d2: 40 80 e7 01 and $0x1,%dil
d6: 40 88 7d ff mov %dil,-0x1(%rbp)
da: e9 b1 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x190>
case INT32_TYPE:
return constant.i32 == other->constant.i32;
df: 48 8b 45 e0 mov -0x20(%rbp),%rax
e3: 8b 48 20 mov 0x20(%rax),%ecx
e6: 48 8b 55 e8 mov -0x18(%rbp),%rdx
ea: 3b 4a 20 cmp 0x20(%rdx),%ecx
ed: 40 0f 94 c6 sete %sil
f1: 40 80 e6 01 and $0x1,%sil
f5: 40 88 75 ff mov %sil,-0x1(%rbp)
f9: e9 92 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x190>
case INT64_TYPE:
return constant.i64 == other->constant.i64;
fe: 48 8b 45 e0 mov -0x20(%rbp),%rax
102: 48 8b 48 20 mov 0x20(%rax),%rcx
106: 48 8b 55 e8 mov -0x18(%rbp),%rdx
10a: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
10e: 40 0f 94 c6 sete %sil
112: 40 80 e6 01 and $0x1,%sil
116: 40 88 75 ff mov %sil,-0x1(%rbp)
11a: e9 71 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x190>
case FLOAT32_TYPE:
return constant.f32 == other->constant.f32;
11f: 48 8b 45 e0 mov -0x20(%rbp),%rax
123: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
128: 48 8b 4d e8 mov -0x18(%rbp),%rcx
12c: c5 f8 2e 41 20 vucomiss 0x20(%rcx),%xmm0
131: 0f 94 c2 sete %dl
134: 40 0f 9b c6 setnp %sil
138: 40 20 f2 and %sil,%dl
13b: 80 e2 01 and $0x1,%dl
13e: 88 55 ff mov %dl,-0x1(%rbp)
141: e9 4a 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x190>
case FLOAT64_TYPE:
return constant.f64 == other->constant.f64;
146: 48 8b 45 e0 mov -0x20(%rbp),%rax
14a: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
14f: 48 8b 4d e8 mov -0x18(%rbp),%rcx
153: c5 f9 2e 41 20 vucomisd 0x20(%rcx),%xmm0
158: 0f 94 c2 sete %dl
15b: 40 0f 9b c6 setnp %sil
15f: 40 20 f2 and %sil,%dl
162: 80 e2 01 and $0x1,%dl
165: 88 55 ff mov %dl,-0x1(%rbp)
168: e9 23 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x190>
default:
assert_unhandled_case(type);
16d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 174 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x174>
174: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 17b <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x17b>
17b: ba 2c 01 00 00 mov $0x12c,%edx
180: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 187 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x187>
187: e8 00 00 00 00 callq 18c <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x18c>
return false;
}
} else {
return false;
18c: c6 45 ff 00 movb $0x0,-0x1(%rbp)
}
}
190: 8a 45 ff mov -0x1(%rbp),%al
193: 24 01 and $0x1,%al
195: 0f b6 c0 movzbl %al,%eax
198: 48 83 c4 30 add $0x30,%rsp
19c: 5d pop %rbp
19d: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value12IsConstantNEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const>:
bool IsConstantNE(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 48 89 7d f0 mov %rdi,-0x10(%rbp)
c: 48 89 75 e8 mov %rsi,-0x18(%rbp)
10: 48 8b 75 f0 mov -0x10(%rbp),%rsi
if (type == VEC128_TYPE) {
14: 83 7e 04 06 cmpl $0x6,0x4(%rsi)
18: 48 89 75 e0 mov %rsi,-0x20(%rbp)
1c: 0f 85 1f 00 00 00 jne 41 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x41>
assert_always();
22: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 29 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x29>
29: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 30 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x30>
30: ba 35 01 00 00 mov $0x135,%edx
35: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 3c <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x3c>
3c: e8 00 00 00 00 callq 41 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x41>
}
if ((flags & VALUE_IS_CONSTANT) && (other->flags & VALUE_IS_CONSTANT)) {
41: 48 8b 45 e0 mov -0x20(%rbp),%rax
45: 8b 48 08 mov 0x8(%rax),%ecx
48: 83 e1 02 and $0x2,%ecx
4b: 83 f9 00 cmp $0x0,%ecx
4e: 0f 84 38 01 00 00 je 18c <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x18c>
54: 48 8b 45 e8 mov -0x18(%rbp),%rax
58: 8b 48 08 mov 0x8(%rax),%ecx
5b: 83 e1 02 and $0x2,%ecx
5e: 83 f9 00 cmp $0x0,%ecx
61: 0f 84 25 01 00 00 je 18c <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x18c>
switch (type) {
67: 48 8b 45 e0 mov -0x20(%rbp),%rax
6b: 8b 48 04 mov 0x4(%rax),%ecx
6e: 89 ca mov %ecx,%edx
70: 48 89 d6 mov %rdx,%rsi
73: 48 83 ee 05 sub $0x5,%rsi
77: 48 89 55 d8 mov %rdx,-0x28(%rbp)
7b: 48 89 75 d0 mov %rsi,-0x30(%rbp)
7f: 0f 87 e8 00 00 00 ja 16d <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x16d>
85: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 8c <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x8c>
8c: 48 8b 4d d8 mov -0x28(%rbp),%rcx
90: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
94: 48 01 c2 add %rax,%rdx
97: ff e2 jmpq *%rdx
case INT8_TYPE:
return constant.i8 != other->constant.i8;
99: 48 8b 45 e0 mov -0x20(%rbp),%rax
9d: 0f be 48 20 movsbl 0x20(%rax),%ecx
a1: 48 8b 55 e8 mov -0x18(%rbp),%rdx
a5: 0f be 72 20 movsbl 0x20(%rdx),%esi
a9: 39 f1 cmp %esi,%ecx
ab: 40 0f 95 c7 setne %dil
af: 40 80 e7 01 and $0x1,%dil
b3: 40 88 7d ff mov %dil,-0x1(%rbp)
b7: e9 d4 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x190>
case INT16_TYPE:
return constant.i16 != other->constant.i16;
bc: 48 8b 45 e0 mov -0x20(%rbp),%rax
c0: 0f bf 48 20 movswl 0x20(%rax),%ecx
c4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
c8: 0f bf 72 20 movswl 0x20(%rdx),%esi
cc: 39 f1 cmp %esi,%ecx
ce: 40 0f 95 c7 setne %dil
d2: 40 80 e7 01 and $0x1,%dil
d6: 40 88 7d ff mov %dil,-0x1(%rbp)
da: e9 b1 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x190>
case INT32_TYPE:
return constant.i32 != other->constant.i32;
df: 48 8b 45 e0 mov -0x20(%rbp),%rax
e3: 8b 48 20 mov 0x20(%rax),%ecx
e6: 48 8b 55 e8 mov -0x18(%rbp),%rdx
ea: 3b 4a 20 cmp 0x20(%rdx),%ecx
ed: 40 0f 95 c6 setne %sil
f1: 40 80 e6 01 and $0x1,%sil
f5: 40 88 75 ff mov %sil,-0x1(%rbp)
f9: e9 92 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x190>
case INT64_TYPE:
return constant.i64 != other->constant.i64;
fe: 48 8b 45 e0 mov -0x20(%rbp),%rax
102: 48 8b 48 20 mov 0x20(%rax),%rcx
106: 48 8b 55 e8 mov -0x18(%rbp),%rdx
10a: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
10e: 40 0f 95 c6 setne %sil
112: 40 80 e6 01 and $0x1,%sil
116: 40 88 75 ff mov %sil,-0x1(%rbp)
11a: e9 71 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x190>
case FLOAT32_TYPE:
return constant.f32 != other->constant.f32;
11f: 48 8b 45 e0 mov -0x20(%rbp),%rax
123: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
128: 48 8b 4d e8 mov -0x18(%rbp),%rcx
12c: c5 f8 2e 41 20 vucomiss 0x20(%rcx),%xmm0
131: 0f 95 c2 setne %dl
134: 40 0f 9a c6 setp %sil
138: 40 08 f2 or %sil,%dl
13b: 80 e2 01 and $0x1,%dl
13e: 88 55 ff mov %dl,-0x1(%rbp)
141: e9 4a 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x190>
case FLOAT64_TYPE:
return constant.f64 != other->constant.f64;
146: 48 8b 45 e0 mov -0x20(%rbp),%rax
14a: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
14f: 48 8b 4d e8 mov -0x18(%rbp),%rcx
153: c5 f9 2e 41 20 vucomisd 0x20(%rcx),%xmm0
158: 0f 95 c2 setne %dl
15b: 40 0f 9a c6 setp %sil
15f: 40 08 f2 or %sil,%dl
162: 80 e2 01 and $0x1,%dl
165: 88 55 ff mov %dl,-0x1(%rbp)
168: e9 23 00 00 00 jmpq 190 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x190>
default:
assert_unhandled_case(type);
16d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 174 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x174>
174: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 17b <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x17b>
17b: ba 46 01 00 00 mov $0x146,%edx
180: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 187 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x187>
187: e8 00 00 00 00 callq 18c <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x18c>
return false;
}
} else {
return false;
18c: c6 45 ff 00 movb $0x0,-0x1(%rbp)
}
}
190: 8a 45 ff mov -0x1(%rbp),%al
193: 24 01 and $0x1,%al
195: 0f b6 c0 movzbl %al,%eax
198: 48 83 c4 30 add $0x30,%rsp
19c: 5d pop %rbp
19d: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSLTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const>:
bool IsConstantSLT(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x64>
64: ba 4e 01 00 00 mov $0x14e,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 e2 00 00 00 ja 175 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x175>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return constant.i8 < other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f be 48 20 movsbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f be 72 20 movsbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9c c7 setl %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 ca 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x194>
case INT16_TYPE:
return constant.i16 < other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f bf 48 20 movswl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f bf 72 20 movswl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9c c7 setl %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 a7 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x194>
case INT32_TYPE:
return constant.i32 < other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 9c c6 setl %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 88 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x194>
case INT64_TYPE:
return constant.i64 < other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 9c c6 setl %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 67 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x194>
case FLOAT32_TYPE:
return constant.f32 < other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 fa 10 49 20 vmovss 0x20(%rcx),%xmm1
13f: c5 f8 2e c8 vucomiss %xmm0,%xmm1
143: 0f 97 c2 seta %dl
146: 80 e2 01 and $0x1,%dl
149: 88 55 ff mov %dl,-0x1(%rbp)
14c: e9 43 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x194>
case FLOAT64_TYPE:
return constant.f64 < other->constant.f64;
151: 48 8b 45 e0 mov -0x20(%rbp),%rax
155: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
15a: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15e: c5 fb 10 49 20 vmovsd 0x20(%rcx),%xmm1
163: c5 f9 2e c8 vucomisd %xmm0,%xmm1
167: 0f 97 c2 seta %dl
16a: 80 e2 01 and $0x1,%dl
16d: 88 55 ff mov %dl,-0x1(%rbp)
170: e9 1f 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x194>
default:
assert_always();
175: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 17c <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x17c>
17c: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 183 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x183>
183: ba 5d 01 00 00 mov $0x15d,%edx
188: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 18f <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x18f>
18f: e8 00 00 00 00 callq 194 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x194>
return false;
}
}
194: 8a 45 ff mov -0x1(%rbp),%al
197: 24 01 and $0x1,%al
199: 0f b6 c0 movzbl %al,%eax
19c: 48 83 c4 40 add $0x40,%rsp
1a0: 5d pop %rbp
1a1: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSLEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const>:
bool IsConstantSLE(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x64>
64: ba 62 01 00 00 mov $0x162,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 e2 00 00 00 ja 175 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x175>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return constant.i8 <= other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f be 48 20 movsbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f be 72 20 movsbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9e c7 setle %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 ca 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x194>
case INT16_TYPE:
return constant.i16 <= other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f bf 48 20 movswl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f bf 72 20 movswl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9e c7 setle %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 a7 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x194>
case INT32_TYPE:
return constant.i32 <= other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 9e c6 setle %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 88 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x194>
case INT64_TYPE:
return constant.i64 <= other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 9e c6 setle %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 67 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x194>
case FLOAT32_TYPE:
return constant.f32 <= other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 fa 10 49 20 vmovss 0x20(%rcx),%xmm1
13f: c5 f8 2e c8 vucomiss %xmm0,%xmm1
143: 0f 93 c2 setae %dl
146: 80 e2 01 and $0x1,%dl
149: 88 55 ff mov %dl,-0x1(%rbp)
14c: e9 43 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x194>
case FLOAT64_TYPE:
return constant.f64 <= other->constant.f64;
151: 48 8b 45 e0 mov -0x20(%rbp),%rax
155: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
15a: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15e: c5 fb 10 49 20 vmovsd 0x20(%rcx),%xmm1
163: c5 f9 2e c8 vucomisd %xmm0,%xmm1
167: 0f 93 c2 setae %dl
16a: 80 e2 01 and $0x1,%dl
16d: 88 55 ff mov %dl,-0x1(%rbp)
170: e9 1f 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x194>
default:
assert_always();
175: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 17c <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x17c>
17c: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 183 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x183>
183: ba 71 01 00 00 mov $0x171,%edx
188: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 18f <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x18f>
18f: e8 00 00 00 00 callq 194 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x194>
return false;
}
}
194: 8a 45 ff mov -0x1(%rbp),%al
197: 24 01 and $0x1,%al
199: 0f b6 c0 movzbl %al,%eax
19c: 48 83 c4 40 add $0x40,%rsp
1a0: 5d pop %rbp
1a1: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSGTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const>:
bool IsConstantSGT(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x64>
64: ba 76 01 00 00 mov $0x176,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 da 00 00 00 ja 16d <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x16d>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return constant.i8 > other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f be 48 20 movsbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f be 72 20 movsbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9f c7 setg %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 c2 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x18c>
case INT16_TYPE:
return constant.i16 > other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f bf 48 20 movswl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f bf 72 20 movswl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9f c7 setg %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 9f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x18c>
case INT32_TYPE:
return constant.i32 > other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 9f c6 setg %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 80 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x18c>
case INT64_TYPE:
return constant.i64 > other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 9f c6 setg %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 5f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x18c>
case FLOAT32_TYPE:
return constant.f32 > other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 f8 2e 41 20 vucomiss 0x20(%rcx),%xmm0
13f: 0f 97 c2 seta %dl
142: 80 e2 01 and $0x1,%dl
145: 88 55 ff mov %dl,-0x1(%rbp)
148: e9 3f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x18c>
case FLOAT64_TYPE:
return constant.f64 > other->constant.f64;
14d: 48 8b 45 e0 mov -0x20(%rbp),%rax
151: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
156: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15a: c5 f9 2e 41 20 vucomisd 0x20(%rcx),%xmm0
15f: 0f 97 c2 seta %dl
162: 80 e2 01 and $0x1,%dl
165: 88 55 ff mov %dl,-0x1(%rbp)
168: e9 1f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x18c>
default:
assert_always();
16d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 174 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x174>
174: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 17b <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x17b>
17b: ba 85 01 00 00 mov $0x185,%edx
180: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 187 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x187>
187: e8 00 00 00 00 callq 18c <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x18c>
return false;
}
}
18c: 8a 45 ff mov -0x1(%rbp),%al
18f: 24 01 and $0x1,%al
191: 0f b6 c0 movzbl %al,%eax
194: 48 83 c4 40 add $0x40,%rsp
198: 5d pop %rbp
199: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSGEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const>:
bool IsConstantSGE(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x64>
64: ba 8a 01 00 00 mov $0x18a,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 da 00 00 00 ja 16d <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x16d>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return constant.i8 >= other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f be 48 20 movsbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f be 72 20 movsbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9d c7 setge %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 c2 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x18c>
case INT16_TYPE:
return constant.i16 >= other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f bf 48 20 movswl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f bf 72 20 movswl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9d c7 setge %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 9f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x18c>
case INT32_TYPE:
return constant.i32 >= other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 9d c6 setge %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 80 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x18c>
case INT64_TYPE:
return constant.i64 >= other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 9d c6 setge %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 5f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x18c>
case FLOAT32_TYPE:
return constant.f32 >= other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 f8 2e 41 20 vucomiss 0x20(%rcx),%xmm0
13f: 0f 93 c2 setae %dl
142: 80 e2 01 and $0x1,%dl
145: 88 55 ff mov %dl,-0x1(%rbp)
148: e9 3f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x18c>
case FLOAT64_TYPE:
return constant.f64 >= other->constant.f64;
14d: 48 8b 45 e0 mov -0x20(%rbp),%rax
151: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
156: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15a: c5 f9 2e 41 20 vucomisd 0x20(%rcx),%xmm0
15f: 0f 93 c2 setae %dl
162: 80 e2 01 and $0x1,%dl
165: 88 55 ff mov %dl,-0x1(%rbp)
168: e9 1f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x18c>
default:
assert_always();
16d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 174 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x174>
174: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 17b <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x17b>
17b: ba 99 01 00 00 mov $0x199,%edx
180: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 187 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x187>
187: e8 00 00 00 00 callq 18c <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x18c>
return false;
}
}
18c: 8a 45 ff mov -0x1(%rbp),%al
18f: 24 01 and $0x1,%al
191: 0f b6 c0 movzbl %al,%eax
194: 48 83 c4 40 add $0x40,%rsp
198: 5d pop %rbp
199: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantULTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const>:
bool IsConstantULT(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x64>
64: ba 9e 01 00 00 mov $0x19e,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 e2 00 00 00 ja 175 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x175>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return (uint8_t)constant.i8 < (uint8_t)other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f b6 48 20 movzbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f b6 72 20 movzbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9c c7 setl %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 ca 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x194>
case INT16_TYPE:
return (uint16_t)constant.i16 < (uint16_t)other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f b7 48 20 movzwl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f b7 72 20 movzwl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9c c7 setl %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 a7 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x194>
case INT32_TYPE:
return (uint32_t)constant.i32 < (uint32_t)other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 92 c6 setb %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 88 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x194>
case INT64_TYPE:
return (uint64_t)constant.i64 < (uint64_t)other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 92 c6 setb %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 67 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x194>
case FLOAT32_TYPE:
return constant.f32 < other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 fa 10 49 20 vmovss 0x20(%rcx),%xmm1
13f: c5 f8 2e c8 vucomiss %xmm0,%xmm1
143: 0f 97 c2 seta %dl
146: 80 e2 01 and $0x1,%dl
149: 88 55 ff mov %dl,-0x1(%rbp)
14c: e9 43 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x194>
case FLOAT64_TYPE:
return constant.f64 < other->constant.f64;
151: 48 8b 45 e0 mov -0x20(%rbp),%rax
155: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
15a: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15e: c5 fb 10 49 20 vmovsd 0x20(%rcx),%xmm1
163: c5 f9 2e c8 vucomisd %xmm0,%xmm1
167: 0f 97 c2 seta %dl
16a: 80 e2 01 and $0x1,%dl
16d: 88 55 ff mov %dl,-0x1(%rbp)
170: e9 1f 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x194>
default:
assert_always();
175: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 17c <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x17c>
17c: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 183 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x183>
183: ba ad 01 00 00 mov $0x1ad,%edx
188: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 18f <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x18f>
18f: e8 00 00 00 00 callq 194 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x194>
return false;
}
}
194: 8a 45 ff mov -0x1(%rbp),%al
197: 24 01 and $0x1,%al
199: 0f b6 c0 movzbl %al,%eax
19c: 48 83 c4 40 add $0x40,%rsp
1a0: 5d pop %rbp
1a1: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantULEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const>:
bool IsConstantULE(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x64>
64: ba b2 01 00 00 mov $0x1b2,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 e2 00 00 00 ja 175 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x175>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return (uint8_t)constant.i8 <= (uint8_t)other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f b6 48 20 movzbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f b6 72 20 movzbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9e c7 setle %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 ca 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x194>
case INT16_TYPE:
return (uint16_t)constant.i16 <= (uint16_t)other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f b7 48 20 movzwl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f b7 72 20 movzwl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9e c7 setle %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 a7 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x194>
case INT32_TYPE:
return (uint32_t)constant.i32 <= (uint32_t)other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 96 c6 setbe %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 88 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x194>
case INT64_TYPE:
return (uint64_t)constant.i64 <= (uint64_t)other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 96 c6 setbe %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 67 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x194>
case FLOAT32_TYPE:
return constant.f32 <= other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 fa 10 49 20 vmovss 0x20(%rcx),%xmm1
13f: c5 f8 2e c8 vucomiss %xmm0,%xmm1
143: 0f 93 c2 setae %dl
146: 80 e2 01 and $0x1,%dl
149: 88 55 ff mov %dl,-0x1(%rbp)
14c: e9 43 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x194>
case FLOAT64_TYPE:
return constant.f64 <= other->constant.f64;
151: 48 8b 45 e0 mov -0x20(%rbp),%rax
155: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
15a: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15e: c5 fb 10 49 20 vmovsd 0x20(%rcx),%xmm1
163: c5 f9 2e c8 vucomisd %xmm0,%xmm1
167: 0f 93 c2 setae %dl
16a: 80 e2 01 and $0x1,%dl
16d: 88 55 ff mov %dl,-0x1(%rbp)
170: e9 1f 00 00 00 jmpq 194 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x194>
default:
assert_always();
175: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 17c <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x17c>
17c: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 183 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x183>
183: ba c1 01 00 00 mov $0x1c1,%edx
188: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 18f <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x18f>
18f: e8 00 00 00 00 callq 194 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x194>
return false;
}
}
194: 8a 45 ff mov -0x1(%rbp),%al
197: 24 01 and $0x1,%al
199: 0f b6 c0 movzbl %al,%eax
19c: 48 83 c4 40 add $0x40,%rsp
1a0: 5d pop %rbp
1a1: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantUGTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const>:
bool IsConstantUGT(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x64>
64: ba c6 01 00 00 mov $0x1c6,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 da 00 00 00 ja 16d <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x16d>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return (uint8_t)constant.i8 > (uint8_t)other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f b6 48 20 movzbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f b6 72 20 movzbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9f c7 setg %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 c2 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x18c>
case INT16_TYPE:
return (uint16_t)constant.i16 > (uint16_t)other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f b7 48 20 movzwl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f b7 72 20 movzwl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9f c7 setg %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 9f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x18c>
case INT32_TYPE:
return (uint32_t)constant.i32 > (uint32_t)other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 97 c6 seta %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 80 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x18c>
case INT64_TYPE:
return (uint64_t)constant.i64 > (uint64_t)other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 97 c6 seta %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 5f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x18c>
case FLOAT32_TYPE:
return constant.f32 > other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 f8 2e 41 20 vucomiss 0x20(%rcx),%xmm0
13f: 0f 97 c2 seta %dl
142: 80 e2 01 and $0x1,%dl
145: 88 55 ff mov %dl,-0x1(%rbp)
148: e9 3f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x18c>
case FLOAT64_TYPE:
return constant.f64 > other->constant.f64;
14d: 48 8b 45 e0 mov -0x20(%rbp),%rax
151: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
156: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15a: c5 f9 2e 41 20 vucomisd 0x20(%rcx),%xmm0
15f: 0f 97 c2 seta %dl
162: 80 e2 01 and $0x1,%dl
165: 88 55 ff mov %dl,-0x1(%rbp)
168: e9 1f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x18c>
default:
assert_always();
16d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 174 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x174>
174: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 17b <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x17b>
17b: ba d5 01 00 00 mov $0x1d5,%edx
180: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 187 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x187>
187: e8 00 00 00 00 callq 18c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x18c>
return false;
}
}
18c: 8a 45 ff mov -0x1(%rbp),%al
18f: 24 01 and $0x1,%al
191: 0f b6 c0 movzbl %al,%eax
194: 48 83 c4 40 add $0x40,%rsp
198: 5d pop %rbp
199: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantUGEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const>:
bool IsConstantUGE(Value* other) const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 40 sub $0x40,%rsp
8: 31 c0 xor %eax,%eax
a: 88 c1 mov %al,%cl
c: 48 89 7d f0 mov %rdi,-0x10(%rbp)
10: 48 89 75 e8 mov %rsi,-0x18(%rbp)
14: 48 8b 75 f0 mov -0x10(%rbp),%rsi
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
18: 8b 46 08 mov 0x8(%rsi),%eax
1b: 83 e0 02 and $0x2,%eax
1e: 83 f8 00 cmp $0x0,%eax
21: 48 89 75 e0 mov %rsi,-0x20(%rbp)
25: 88 4d df mov %cl,-0x21(%rbp)
28: 0f 84 13 00 00 00 je 41 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x41>
2e: 48 8b 45 e8 mov -0x18(%rbp),%rax
32: 8b 48 08 mov 0x8(%rax),%ecx
35: 83 e1 02 and $0x2,%ecx
38: 83 f9 00 cmp $0x0,%ecx
3b: 0f 95 c2 setne %dl
3e: 88 55 df mov %dl,-0x21(%rbp)
41: 8a 45 df mov -0x21(%rbp),%al
44: a8 01 test $0x1,%al
46: 0f 85 05 00 00 00 jne 51 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x51>
4c: e9 05 00 00 00 jmpq 56 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x56>
51: e9 1f 00 00 00 jmpq 75 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x75>
56: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 5d <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x5d>
5d: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 64 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x64>
64: ba da 01 00 00 mov $0x1da,%edx
69: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 70 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x70>
70: e8 00 00 00 00 callq 75 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x75>
switch (type) {
75: 48 8b 45 e0 mov -0x20(%rbp),%rax
79: 8b 48 04 mov 0x4(%rax),%ecx
7c: 89 ca mov %ecx,%edx
7e: 48 89 d6 mov %rdx,%rsi
81: 48 83 ee 05 sub $0x5,%rsi
85: 48 89 55 d0 mov %rdx,-0x30(%rbp)
89: 48 89 75 c8 mov %rsi,-0x38(%rbp)
8d: 0f 87 da 00 00 00 ja 16d <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x16d>
93: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 9a <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x9a>
9a: 48 8b 4d d0 mov -0x30(%rbp),%rcx
9e: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
a2: 48 01 c2 add %rax,%rdx
a5: ff e2 jmpq *%rdx
case INT8_TYPE:
return (uint8_t)constant.i8 >= (uint8_t)other->constant.i8;
a7: 48 8b 45 e0 mov -0x20(%rbp),%rax
ab: 0f b6 48 20 movzbl 0x20(%rax),%ecx
af: 48 8b 55 e8 mov -0x18(%rbp),%rdx
b3: 0f b6 72 20 movzbl 0x20(%rdx),%esi
b7: 39 f1 cmp %esi,%ecx
b9: 40 0f 9d c7 setge %dil
bd: 40 80 e7 01 and $0x1,%dil
c1: 40 88 7d ff mov %dil,-0x1(%rbp)
c5: e9 c2 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x18c>
case INT16_TYPE:
return (uint16_t)constant.i16 >= (uint16_t)other->constant.i16;
ca: 48 8b 45 e0 mov -0x20(%rbp),%rax
ce: 0f b7 48 20 movzwl 0x20(%rax),%ecx
d2: 48 8b 55 e8 mov -0x18(%rbp),%rdx
d6: 0f b7 72 20 movzwl 0x20(%rdx),%esi
da: 39 f1 cmp %esi,%ecx
dc: 40 0f 9d c7 setge %dil
e0: 40 80 e7 01 and $0x1,%dil
e4: 40 88 7d ff mov %dil,-0x1(%rbp)
e8: e9 9f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x18c>
case INT32_TYPE:
return (uint32_t)constant.i32 >= (uint32_t)other->constant.i32;
ed: 48 8b 45 e0 mov -0x20(%rbp),%rax
f1: 8b 48 20 mov 0x20(%rax),%ecx
f4: 48 8b 55 e8 mov -0x18(%rbp),%rdx
f8: 3b 4a 20 cmp 0x20(%rdx),%ecx
fb: 40 0f 93 c6 setae %sil
ff: 40 80 e6 01 and $0x1,%sil
103: 40 88 75 ff mov %sil,-0x1(%rbp)
107: e9 80 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x18c>
case INT64_TYPE:
return (uint64_t)constant.i64 >= (uint64_t)other->constant.i64;
10c: 48 8b 45 e0 mov -0x20(%rbp),%rax
110: 48 8b 48 20 mov 0x20(%rax),%rcx
114: 48 8b 55 e8 mov -0x18(%rbp),%rdx
118: 48 3b 4a 20 cmp 0x20(%rdx),%rcx
11c: 40 0f 93 c6 setae %sil
120: 40 80 e6 01 and $0x1,%sil
124: 40 88 75 ff mov %sil,-0x1(%rbp)
128: e9 5f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x18c>
case FLOAT32_TYPE:
return constant.f32 >= other->constant.f32;
12d: 48 8b 45 e0 mov -0x20(%rbp),%rax
131: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
136: 48 8b 4d e8 mov -0x18(%rbp),%rcx
13a: c5 f8 2e 41 20 vucomiss 0x20(%rcx),%xmm0
13f: 0f 93 c2 setae %dl
142: 80 e2 01 and $0x1,%dl
145: 88 55 ff mov %dl,-0x1(%rbp)
148: e9 3f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x18c>
case FLOAT64_TYPE:
return constant.f64 >= other->constant.f64;
14d: 48 8b 45 e0 mov -0x20(%rbp),%rax
151: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
156: 48 8b 4d e8 mov -0x18(%rbp),%rcx
15a: c5 f9 2e 41 20 vucomisd 0x20(%rcx),%xmm0
15f: 0f 93 c2 setae %dl
162: 80 e2 01 and $0x1,%dl
165: 88 55 ff mov %dl,-0x1(%rbp)
168: e9 1f 00 00 00 jmpq 18c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x18c>
default:
assert_always();
16d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 174 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x174>
174: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 17b <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x17b>
17b: ba e9 01 00 00 mov $0x1e9,%edx
180: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 187 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x187>
187: e8 00 00 00 00 callq 18c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x18c>
return false;
}
}
18c: 8a 45 ff mov -0x1(%rbp),%al
18f: 24 01 and $0x1,%al
191: 0f b6 c0 movzbl %al,%eax
194: 48 83 c4 40 add $0x40,%rsp
198: 5d pop %rbp
199: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value14IsConstantZeroEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantZero() const>:
bool IsConstantZero() const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 48 89 7d f0 mov %rdi,-0x10(%rbp)
c: 48 8b 7d f0 mov -0x10(%rbp),%rdi
if (flags & VALUE_IS_CONSTANT) {
10: 8b 47 08 mov 0x8(%rdi),%eax
13: 83 e0 02 and $0x2,%eax
16: 83 f8 00 cmp $0x0,%eax
19: 48 89 7d e8 mov %rdi,-0x18(%rbp)
1d: 0f 84 3a 01 00 00 je 15d <xe::cpu::hir::Value::IsConstantZero() const+0x15d>
switch (type) {
23: 48 8b 45 e8 mov -0x18(%rbp),%rax
27: 8b 48 04 mov 0x4(%rax),%ecx
2a: 89 ca mov %ecx,%edx
2c: 48 89 d6 mov %rdx,%rsi
2f: 48 83 ee 06 sub $0x6,%rsi
33: 48 89 55 e0 mov %rdx,-0x20(%rbp)
37: 48 89 75 d8 mov %rsi,-0x28(%rbp)
3b: 0f 87 fd 00 00 00 ja 13e <xe::cpu::hir::Value::IsConstantZero() const+0x13e>
41: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 48 <xe::cpu::hir::Value::IsConstantZero() const+0x48>
48: 48 8b 4d e0 mov -0x20(%rbp),%rcx
4c: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
50: 48 01 c2 add %rax,%rdx
53: ff e2 jmpq *%rdx
return !constant.i8;
55: 48 8b 45 e8 mov -0x18(%rbp),%rax
59: 80 78 20 00 cmpb $0x0,0x20(%rax)
5d: 0f 95 c1 setne %cl
60: 80 f1 ff xor $0xff,%cl
63: 80 e1 01 and $0x1,%cl
66: 88 4d ff mov %cl,-0x1(%rbp)
69: e9 f3 00 00 00 jmpq 161 <xe::cpu::hir::Value::IsConstantZero() const+0x161>
return !constant.i16;
6e: 48 8b 45 e8 mov -0x18(%rbp),%rax
72: 66 83 78 20 00 cmpw $0x0,0x20(%rax)
77: 0f 95 c1 setne %cl
7a: 80 f1 ff xor $0xff,%cl
7d: 80 e1 01 and $0x1,%cl
80: 88 4d ff mov %cl,-0x1(%rbp)
83: e9 d9 00 00 00 jmpq 161 <xe::cpu::hir::Value::IsConstantZero() const+0x161>
return !constant.i32;
88: 48 8b 45 e8 mov -0x18(%rbp),%rax
8c: 83 78 20 00 cmpl $0x0,0x20(%rax)
90: 0f 95 c1 setne %cl
93: 80 f1 ff xor $0xff,%cl
96: 80 e1 01 and $0x1,%cl
99: 88 4d ff mov %cl,-0x1(%rbp)
9c: e9 c0 00 00 00 jmpq 161 <xe::cpu::hir::Value::IsConstantZero() const+0x161>
return !constant.i64;
a1: 48 8b 45 e8 mov -0x18(%rbp),%rax
a5: 48 83 78 20 00 cmpq $0x0,0x20(%rax)
aa: 0f 95 c1 setne %cl
ad: 80 f1 ff xor $0xff,%cl
b0: 80 e1 01 and $0x1,%cl
b3: 88 4d ff mov %cl,-0x1(%rbp)
b6: e9 a6 00 00 00 jmpq 161 <xe::cpu::hir::Value::IsConstantZero() const+0x161>
return !constant.f32;
bb: 48 8b 45 e8 mov -0x18(%rbp),%rax
bf: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
c4: c5 f0 57 c9 vxorps %xmm1,%xmm1,%xmm1
c8: c5 f8 2e c1 vucomiss %xmm1,%xmm0
cc: 0f 95 c1 setne %cl
cf: 0f 9a c2 setp %dl
d2: 08 d1 or %dl,%cl
d4: 80 f1 ff xor $0xff,%cl
d7: 80 e1 01 and $0x1,%cl
da: 88 4d ff mov %cl,-0x1(%rbp)
dd: e9 7f 00 00 00 jmpq 161 <xe::cpu::hir::Value::IsConstantZero() const+0x161>
return !constant.f64;
e2: 48 8b 45 e8 mov -0x18(%rbp),%rax
e6: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
eb: c5 f0 57 c9 vxorps %xmm1,%xmm1,%xmm1
ef: c5 f9 2e c1 vucomisd %xmm1,%xmm0
f3: 0f 95 c1 setne %cl
f6: 0f 9a c2 setp %dl
f9: 08 d1 or %dl,%cl
fb: 80 f1 ff xor $0xff,%cl
fe: 80 e1 01 and $0x1,%cl
101: 88 4d ff mov %cl,-0x1(%rbp)
104: e9 58 00 00 00 jmpq 161 <xe::cpu::hir::Value::IsConstantZero() const+0x161>
109: 31 c0 xor %eax,%eax
10b: 88 c1 mov %al,%cl
return !constant.v128.low && !constant.v128.high;
10d: 48 8b 55 e8 mov -0x18(%rbp),%rdx
111: 48 83 7a 20 00 cmpq $0x0,0x20(%rdx)
116: 88 4d d7 mov %cl,-0x29(%rbp)
119: 0f 85 12 00 00 00 jne 131 <xe::cpu::hir::Value::IsConstantZero() const+0x131>
11f: 48 8b 45 e8 mov -0x18(%rbp),%rax
123: 48 83 78 28 00 cmpq $0x0,0x28(%rax)
128: 0f 95 c1 setne %cl
12b: 80 f1 ff xor $0xff,%cl
12e: 88 4d d7 mov %cl,-0x29(%rbp)
131: 8a 45 d7 mov -0x29(%rbp),%al
134: 24 01 and $0x1,%al
136: 88 45 ff mov %al,-0x1(%rbp)
139: e9 23 00 00 00 jmpq 161 <xe::cpu::hir::Value::IsConstantZero() const+0x161>
assert_unhandled_case(type);
13e: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 145 <xe::cpu::hir::Value::IsConstantZero() const+0x145>
145: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 14c <xe::cpu::hir::Value::IsConstantZero() const+0x14c>
14c: ba fb 00 00 00 mov $0xfb,%edx
151: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 158 <xe::cpu::hir::Value::IsConstantZero() const+0x158>
158: e8 00 00 00 00 callq 15d <xe::cpu::hir::Value::IsConstantZero() const+0x15d>
return false;
15d: c6 45 ff 00 movb $0x0,-0x1(%rbp)
}
161: 8a 45 ff mov -0x1(%rbp),%al
164: 24 01 and $0x1,%al
166: 0f b6 c0 movzbl %al,%eax
169: 48 83 c4 30 add $0x30,%rsp
16d: 5d pop %rbp
16e: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantOneEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantOne() const>:
bool IsConstantOne() const {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 48 89 7d f0 mov %rdi,-0x10(%rbp)
c: 48 8b 7d f0 mov -0x10(%rbp),%rdi
if (flags & VALUE_IS_CONSTANT) {
10: 8b 47 08 mov 0x8(%rdi),%eax
13: 83 e0 02 and $0x2,%eax
16: 83 f8 00 cmp $0x0,%eax
19: 48 89 7d e8 mov %rdi,-0x18(%rbp)
1d: 0f 84 00 01 00 00 je 123 <xe::cpu::hir::Value::IsConstantOne() const+0x123>
switch (type) {
23: 48 8b 45 e8 mov -0x18(%rbp),%rax
27: 8b 48 04 mov 0x4(%rax),%ecx
2a: 89 ca mov %ecx,%edx
2c: 48 89 d6 mov %rdx,%rsi
2f: 48 83 ee 05 sub $0x5,%rsi
33: 48 89 55 e0 mov %rdx,-0x20(%rbp)
37: 48 89 75 d8 mov %rsi,-0x28(%rbp)
3b: 0f 87 c3 00 00 00 ja 104 <xe::cpu::hir::Value::IsConstantOne() const+0x104>
41: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 48 <xe::cpu::hir::Value::IsConstantOne() const+0x48>
48: 48 8b 4d e0 mov -0x20(%rbp),%rcx
4c: 48 63 14 88 movslq (%rax,%rcx,4),%rdx
50: 48 01 c2 add %rax,%rdx
53: ff e2 jmpq *%rdx
return constant.i8 == 1;
55: 48 8b 45 e8 mov -0x18(%rbp),%rax
59: 0f be 48 20 movsbl 0x20(%rax),%ecx
5d: 83 f9 01 cmp $0x1,%ecx
60: 0f 94 c2 sete %dl
63: 80 e2 01 and $0x1,%dl
66: 88 55 ff mov %dl,-0x1(%rbp)
69: e9 b9 00 00 00 jmpq 127 <xe::cpu::hir::Value::IsConstantOne() const+0x127>
return constant.i16 == 1;
6e: 48 8b 45 e8 mov -0x18(%rbp),%rax
72: 0f bf 48 20 movswl 0x20(%rax),%ecx
76: 83 f9 01 cmp $0x1,%ecx
79: 0f 94 c2 sete %dl
7c: 80 e2 01 and $0x1,%dl
7f: 88 55 ff mov %dl,-0x1(%rbp)
82: e9 a0 00 00 00 jmpq 127 <xe::cpu::hir::Value::IsConstantOne() const+0x127>
return constant.i32 == 1;
87: 48 8b 45 e8 mov -0x18(%rbp),%rax
8b: 83 78 20 01 cmpl $0x1,0x20(%rax)
8f: 0f 94 c1 sete %cl
92: 80 e1 01 and $0x1,%cl
95: 88 4d ff mov %cl,-0x1(%rbp)
98: e9 8a 00 00 00 jmpq 127 <xe::cpu::hir::Value::IsConstantOne() const+0x127>
return constant.i64 == 1;
9d: 48 8b 45 e8 mov -0x18(%rbp),%rax
a1: 48 83 78 20 01 cmpq $0x1,0x20(%rax)
a6: 0f 94 c1 sete %cl
a9: 80 e1 01 and $0x1,%cl
ac: 88 4d ff mov %cl,-0x1(%rbp)
af: e9 73 00 00 00 jmpq 127 <xe::cpu::hir::Value::IsConstantOne() const+0x127>
b4: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # bc <xe::cpu::hir::Value::IsConstantOne() const+0xbc>
bb: 00
return constant.f32 == 1.f;
bc: 48 8b 45 e8 mov -0x18(%rbp),%rax
c0: c5 fa 10 48 20 vmovss 0x20(%rax),%xmm1
c5: c5 f8 2e c8 vucomiss %xmm0,%xmm1
c9: 0f 94 c1 sete %cl
cc: 0f 9b c2 setnp %dl
cf: 20 d1 and %dl,%cl
d1: 80 e1 01 and $0x1,%cl
d4: 88 4d ff mov %cl,-0x1(%rbp)
d7: e9 4b 00 00 00 jmpq 127 <xe::cpu::hir::Value::IsConstantOne() const+0x127>
dc: c5 fb 10 05 00 00 00 vmovsd 0x0(%rip),%xmm0 # e4 <xe::cpu::hir::Value::IsConstantOne() const+0xe4>
e3: 00
return constant.f64 == 1.0;
e4: 48 8b 45 e8 mov -0x18(%rbp),%rax
e8: c5 fb 10 48 20 vmovsd 0x20(%rax),%xmm1
ed: c5 f9 2e c8 vucomisd %xmm0,%xmm1
f1: 0f 94 c1 sete %cl
f4: 0f 9b c2 setnp %dl
f7: 20 d1 and %dl,%cl
f9: 80 e1 01 and $0x1,%cl
fc: 88 4d ff mov %cl,-0x1(%rbp)
ff: e9 23 00 00 00 jmpq 127 <xe::cpu::hir::Value::IsConstantOne() const+0x127>
assert_unhandled_case(type);
104: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 10b <xe::cpu::hir::Value::IsConstantOne() const+0x10b>
10b: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 112 <xe::cpu::hir::Value::IsConstantOne() const+0x112>
112: ba 12 01 00 00 mov $0x112,%edx
117: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 11e <xe::cpu::hir::Value::IsConstantOne() const+0x11e>
11e: e8 00 00 00 00 callq 123 <xe::cpu::hir::Value::IsConstantOne() const+0x123>
return false;
123: c6 45 ff 00 movb $0x0,-0x1(%rbp)
}
127: 8a 45 ff mov -0x1(%rbp),%al
12a: 24 01 and $0x1,%al
12c: 0f b6 c0 movzbl %al,%eax
12f: 48 83 c4 30 add $0x30,%rsp
133: 5d pop %rbp
134: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value8set_zeroENS1_8TypeNameE:
0000000000000000 <xe::cpu::hir::Value::set_zero(xe::cpu::hir::TypeName)>:
void set_zero(TypeName new_type) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 89 75 f4 mov %esi,-0xc(%rbp)
b: 48 8b 7d f8 mov -0x8(%rbp),%rdi
type = new_type;
f: 8b 75 f4 mov -0xc(%rbp),%esi
12: 89 77 04 mov %esi,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
15: 8b 77 08 mov 0x8(%rdi),%esi
18: 83 ce 02 or $0x2,%esi
1b: 89 77 08 mov %esi,0x8(%rdi)
constant.v128.low = constant.v128.high = 0;
1e: 48 c7 47 28 00 00 00 movq $0x0,0x28(%rdi)
25: 00
26: 48 c7 47 20 00 00 00 movq $0x0,0x20(%rdi)
2d: 00
}
2e: 5d pop %rbp
2f: c3 retq
Disassembly of section .text._ZN2xe3cpu8compiler6passes23ConditionalGroupSubpass3RunEPNS0_3hir10HIRBuilderE:
0000000000000000 <xe::cpu::compiler::passes::ConditionalGroupSubpass::Run(xe::cpu::hir::HIRBuilder*)>:
class ConditionalGroupSubpass : public CompilerPass {
public:
ConditionalGroupSubpass();
virtual ~ConditionalGroupSubpass();
bool Run(hir::HIRBuilder* builder) override {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 83 ec 30 sub $0x30,%rsp
8: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
f: 00 00
11: 48 89 45 f8 mov %rax,-0x8(%rbp)
15: 48 89 7d e8 mov %rdi,-0x18(%rbp)
19: 48 89 75 e0 mov %rsi,-0x20(%rbp)
1d: 48 8b 45 e8 mov -0x18(%rbp),%rax
bool dummy;
return Run(builder, dummy);
21: 48 8b 75 e0 mov -0x20(%rbp),%rsi
25: 48 8b 38 mov (%rax),%rdi
28: 48 8b 7f 20 mov 0x20(%rdi),%rdi
2c: 48 8d 55 f7 lea -0x9(%rbp),%rdx
30: 48 89 7d d8 mov %rdi,-0x28(%rbp)
34: 48 89 c7 mov %rax,%rdi
37: 48 8b 45 d8 mov -0x28(%rbp),%rax
3b: ff d0 callq *%rax
3d: 64 48 8b 14 25 28 00 mov %fs:0x28,%rdx
44: 00 00
46: 48 8b 75 f8 mov -0x8(%rbp),%rsi
4a: 48 39 f2 cmp %rsi,%rdx
4d: 88 45 d7 mov %al,-0x29(%rbp)
50: 0f 85 0e 00 00 00 jne 64 <xe::cpu::compiler::passes::ConditionalGroupSubpass::Run(xe::cpu::hir::HIRBuilder*)+0x64>
56: 8a 45 d7 mov -0x29(%rbp),%al
59: 24 01 and $0x1,%al
5b: 0f b6 c0 movzbl %al,%eax
5e: 48 83 c4 30 add $0x30,%rsp
62: 5d pop %rbp
63: c3 retq
64: e8 00 00 00 00 callq 69 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()+0x9>
Disassembly of section .text._ZN2xe8vec128_saSERKS0_:
0000000000000000 <xe::vec128_s::operator=(xe::vec128_s const&)>:
vec128_s(const vec128_s& other) {
high = other.high;
low = other.low;
}
vec128_s& operator=(const vec128_s& b) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 48 89 75 f0 mov %rsi,-0x10(%rbp)
c: 48 8b 75 f8 mov -0x8(%rbp),%rsi
high = b.high;
10: 48 8b 7d f0 mov -0x10(%rbp),%rdi
14: 48 8b 7f 08 mov 0x8(%rdi),%rdi
18: 48 89 7e 08 mov %rdi,0x8(%rsi)
low = b.low;
1c: 48 8b 7d f0 mov -0x10(%rbp),%rdi
20: 48 8b 3f mov (%rdi),%rdi
23: 48 89 3e mov %rdi,(%rsi)
return *this;
26: 48 89 f0 mov %rsi,%rax
29: 5d pop %rbp
2a: c3 retq
O1/constant_propagation_pass.o: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x0000000000000000
Disassembly of section .text:
0000000000000000 <xe::cpu::compiler::passes::ConstantPropagationPass::ConstantPropagationPass()>:
using xe::cpu::hir::HIRBuilder;
using xe::cpu::hir::TypeName;
using xe::cpu::hir::Value;
ConstantPropagationPass::ConstantPropagationPass() __attribute__ ((optnone))
: ConditionalGroupSubpass() {}
0: 53 push %rbx
1: 48 89 fb mov %rdi,%rbx
4: e8 00 00 00 00 callq 9 <xe::cpu::compiler::passes::ConstantPropagationPass::ConstantPropagationPass()+0x9>
9: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 10 <xe::cpu::compiler::passes::ConstantPropagationPass::ConstantPropagationPass()+0x10>
10: 48 89 03 mov %rax,(%rbx)
13: 5b pop %rbx
14: c3 retq
15: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
1c: 00 00 00
1f: 90 nop
0000000000000020 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()>:
ConstantPropagationPass::~ConstantPropagationPass() __attribute__ ((optnone)) {}
20: e9 00 00 00 00 jmpq 25 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()+0x5>
25: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
2c: 00 00 00
2f: 90 nop
0000000000000030 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()>:
30: 53 push %rbx
31: 48 89 fb mov %rdi,%rbx
34: e8 e7 ff ff ff callq 20 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()>
39: 48 89 df mov %rbx,%rdi
3c: 5b pop %rbx
3d: e9 00 00 00 00 jmpq 42 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()+0x12>
42: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
49: 00 00 00
4c: 0f 1f 40 00 nopl 0x0(%rax)
0000000000000050 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)>:
bool ConstantPropagationPass::Run(HIRBuilder* builder, bool& result) __attribute__ ((optnone)) {
50: 55 push %rbp
51: 41 57 push %r15
53: 41 56 push %r14
55: 41 55 push %r13
57: 41 54 push %r12
59: 53 push %rbx
5a: 48 83 ec 48 sub $0x48,%rsp
5e: 49 89 d4 mov %rdx,%r12
61: 48 89 7c 24 10 mov %rdi,0x10(%rsp)
66: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
6d: 00 00
6f: 48 89 44 24 40 mov %rax,0x40(%rsp)
// v2 = did_carry v1
// should become:
// v1 = 19
// v2 = 0
result = false;
74: c6 02 00 movb $0x0,(%rdx)
77: 48 89 74 24 18 mov %rsi,0x18(%rsp)
auto block = builder->first_block();
7c: 48 89 f7 mov %rsi,%rdi
7f: e8 00 00 00 00 callq 84 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x34>
while (block) {
84: 48 85 c0 test %rax,%rax
87: 0f 84 1a 15 00 00 je 15a7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1557>
8d: 49 89 c7 mov %rax,%r15
90: 4c 8d 2d 00 00 00 00 lea 0x0(%rip),%r13 # 97 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x47>
97: 4c 89 64 24 08 mov %r12,0x8(%rsp)
9c: 0f 1f 40 00 nopl 0x0(%rax)
a0: 49 8b 5f 40 mov 0x40(%r15),%rbx
auto i = block->instr_head;
while (i) {
a4: 48 85 db test %rbx,%rbx
a7: 0f 85 03 06 00 00 jne 6b0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x660>
ad: e9 e8 14 00 00 jmpq 159a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x154a>
}
}
}
break;
case OPCODE_MUL_ADD:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
b2: 48 8b 7b 30 mov 0x30(%rbx),%rdi
b6: e8 00 00 00 00 callq bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6b>
bb: 84 c0 test %al,%al
bd: 0f 84 ca 14 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
c3: 48 8b 7b 38 mov 0x38(%rbx),%rdi
c7: e8 00 00 00 00 callq cc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7c>
cc: 84 c0 test %al,%al
ce: 0f 84 b9 14 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src3.value->IsConstant()) {
d4: 48 8b 7b 40 mov 0x40(%rbx),%rdi
d8: e8 00 00 00 00 callq dd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8d>
dd: 84 c0 test %al,%al
df: 0f 84 b8 04 00 00 je 59d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x54d>
v->set_from(i->src1.value);
e5: 48 8b 73 30 mov 0x30(%rbx),%rsi
e9: 48 89 ef mov %rbp,%rdi
ec: e8 00 00 00 00 callq f1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa1>
Value::MulAdd(v, i->src1.value, i->src2.value, i->src3.value);
f1: 48 8b 73 30 mov 0x30(%rbx),%rsi
f5: 48 8b 53 38 mov 0x38(%rbx),%rdx
f9: 48 8b 4b 40 mov 0x40(%rbx),%rcx
fd: 48 89 ef mov %rbp,%rdi
100: e8 00 00 00 00 callq 105 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb5>
105: e9 76 14 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
result = true;
}
break;
// TODO(benvanik): ROTATE_LEFT
case OPCODE_BYTE_SWAP:
if (i->src1.value->IsConstant()) {
10a: 48 8b 7b 30 mov 0x30(%rbx),%rdi
10e: e8 00 00 00 00 callq 113 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc3>
113: 84 c0 test %al,%al
115: 0f 84 72 14 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
11b: 48 8b 73 30 mov 0x30(%rbx),%rsi
11f: 48 89 ef mov %rbp,%rdi
122: e8 00 00 00 00 callq 127 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd7>
v->ByteSwap();
127: 48 89 ef mov %rbp,%rdi
12a: e8 00 00 00 00 callq 12f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdf>
12f: e9 4c 14 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
134: 48 8b 7b 30 mov 0x30(%rbx),%rdi
138: e8 00 00 00 00 callq 13d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xed>
13d: 84 c0 test %al,%al
13f: 74 2a je 16b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11b>
141: 48 8b 7b 38 mov 0x38(%rbx),%rdi
145: e8 00 00 00 00 callq 14a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfa>
14a: 84 c0 test %al,%al
14c: 74 1d je 16b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11b>
v->set_from(i->src1.value);
14e: 48 8b 73 30 mov 0x30(%rbx),%rsi
152: 48 89 ef mov %rbp,%rdi
155: e8 00 00 00 00 callq 15a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10a>
v->Shl(i->src2.value);
15a: 48 8b 73 38 mov 0x38(%rbx),%rsi
15e: 48 89 ef mov %rbp,%rdi
161: e8 00 00 00 00 callq 166 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x116>
166: e9 15 14 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
16b: 48 8b 7b 38 mov 0x38(%rbx),%rdi
16f: e8 00 00 00 00 callq 174 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x124>
174: 84 c0 test %al,%al
176: 0f 84 11 14 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
17c: 48 8b 6b 30 mov 0x30(%rbx),%rbp
180: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 187 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x137>
187: 31 d2 xor %edx,%edx
189: 48 89 df mov %rbx,%rdi
18c: e8 00 00 00 00 callq 191 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x141>
191: 48 89 df mov %rbx,%rdi
194: 48 89 ee mov %rbp,%rsi
197: e8 00 00 00 00 callq 19c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14c>
19c: e9 e7 13 00 00 jmpq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
i->Remove();
result = true;
}
break;
case OPCODE_CNTLZ:
if (i->src1.value->IsConstant()) {
1a1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1a5: e8 00 00 00 00 callq 1aa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15a>
1aa: 84 c0 test %al,%al
1ac: 0f 84 db 13 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_zero(v->type);
1b2: 8b 75 04 mov 0x4(%rbp),%esi
1b5: 48 89 ef mov %rbp,%rdi
1b8: e8 00 00 00 00 callq 1bd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x16d>
v->CountLeadingZeros(i->src1.value);
1bd: 48 8b 73 30 mov 0x30(%rbx),%rsi
1c1: 48 89 ef mov %rbp,%rdi
1c4: e8 00 00 00 00 callq 1c9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x179>
1c9: e9 b2 13 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
i->Remove();
result = true;
}
break;
case OPCODE_VECTOR_SUB:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1ce: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1d2: e8 00 00 00 00 callq 1d7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x187>
1d7: 84 c0 test %al,%al
1d9: 0f 84 ae 13 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
1df: 48 8b 7b 38 mov 0x38(%rbx),%rdi
1e3: e8 00 00 00 00 callq 1e8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x198>
1e8: 84 c0 test %al,%al
1ea: 0f 84 9d 13 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
1f0: 48 8b 73 30 mov 0x30(%rbx),%rsi
1f4: 48 89 ef mov %rbp,%rdi
1f7: e8 00 00 00 00 callq 1fc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1ac>
uint32_t arith_flags = i->flags >> 8;
1fc: 44 0f b7 43 20 movzwl 0x20(%rbx),%r8d
v->VectorSub(i->src2.value, hir::TypeName(i->flags & 0xFF),
201: 48 8b 73 38 mov 0x38(%rbx),%rsi
205: 41 0f b6 d0 movzbl %r8b,%edx
!!(arith_flags & ARITHMETIC_UNSIGNED),
209: 44 89 c1 mov %r8d,%ecx
20c: c1 e9 0a shr $0xa,%ecx
20f: 83 e1 01 and $0x1,%ecx
!!(arith_flags & ARITHMETIC_SATURATE));
212: 41 c1 e8 0b shr $0xb,%r8d
216: 41 83 e0 01 and $0x1,%r8d
v->VectorSub(i->src2.value, hir::TypeName(i->flags & 0xFF),
21a: 48 89 ef mov %rbp,%rdi
21d: e8 00 00 00 00 callq 222 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1d2>
222: e9 59 13 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
227: 48 8b 7b 30 mov 0x30(%rbx),%rdi
22b: e8 00 00 00 00 callq 230 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1e0>
230: 84 c0 test %al,%al
232: 0f 84 55 13 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
238: 48 8b 73 30 mov 0x30(%rbx),%rsi
23c: 48 89 ef mov %rbp,%rdi
23f: e8 00 00 00 00 callq 244 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1f4>
v->Sqrt();
244: 48 89 ef mov %rbp,%rdi
247: e8 00 00 00 00 callq 24c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1fc>
24c: e9 2f 13 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
251: 48 8b 7b 30 mov 0x30(%rbx),%rdi
255: e8 00 00 00 00 callq 25a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x20a>
25a: 84 c0 test %al,%al
25c: 0f 84 2b 13 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
262: 48 8b 7b 38 mov 0x38(%rbx),%rdi
266: e8 00 00 00 00 callq 26b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x21b>
26b: 84 c0 test %al,%al
26d: 0f 84 1a 13 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
273: 48 8b 73 30 mov 0x30(%rbx),%rsi
277: 48 89 ef mov %rbp,%rdi
27a: e8 00 00 00 00 callq 27f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x22f>
v->VectorShl(i->src2.value, hir::TypeName(i->flags));
27f: 48 8b 73 38 mov 0x38(%rbx),%rsi
283: 0f b7 53 20 movzwl 0x20(%rbx),%edx
287: 48 89 ef mov %rbp,%rdi
28a: e8 00 00 00 00 callq 28f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x23f>
28f: e9 ec 12 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
294: 48 8b 7b 30 mov 0x30(%rbx),%rdi
298: e8 00 00 00 00 callq 29d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x24d>
29d: 84 c0 test %al,%al
29f: 0f 84 e8 12 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_zero(v->type);
2a5: 8b 75 04 mov 0x4(%rbp),%esi
2a8: 48 89 ef mov %rbp,%rdi
2ab: e8 00 00 00 00 callq 2b0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x260>
v->Splat(i->src1.value);
2b0: 48 8b 73 30 mov 0x30(%rbx),%rsi
2b4: 48 89 ef mov %rbp,%rdi
2b7: e8 00 00 00 00 callq 2bc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x26c>
2bc: e9 bf 12 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
2c1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
2c5: e8 00 00 00 00 callq 2ca <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x27a>
2ca: 84 c0 test %al,%al
2cc: 0f 84 bb 12 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
2d2: 48 8b 73 30 mov 0x30(%rbx),%rsi
2d6: 48 89 ef mov %rbp,%rdi
2d9: e8 00 00 00 00 callq 2de <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x28e>
v->Not();
2de: 48 89 ef mov %rbp,%rdi
2e1: e8 00 00 00 00 callq 2e6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x296>
2e6: e9 95 12 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
} else if (i->src1.value->IsConstant() ||
2eb: 48 8b 7b 30 mov 0x30(%rbx),%rdi
2ef: e8 00 00 00 00 callq 2f4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2a4>
2f4: 84 c0 test %al,%al
2f6: 75 11 jne 309 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2b9>
i->src2.value->IsConstant()) {
2f8: 48 8b 7b 38 mov 0x38(%rbx),%rdi
2fc: e8 00 00 00 00 callq 301 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2b1>
} else if (i->src1.value->IsConstant() ||
301: 84 c0 test %al,%al
303: 0f 84 84 12 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
i->src1.value->IsConstant() ? i->src2.value : i->src1.value;
309: 48 8b 7b 30 mov 0x30(%rbx),%rdi
30d: e8 00 00 00 00 callq 312 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2c2>
312: 0f b6 c0 movzbl %al,%eax
315: 4c 8b 74 c3 30 mov 0x30(%rbx,%rax,8),%r14
i->src1.value->IsConstant() ? i->src1.value : i->src2.value;
31a: 48 8b 7b 30 mov 0x30(%rbx),%rdi
31e: e8 00 00 00 00 callq 323 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2d3>
323: 34 01 xor $0x1,%al
325: 0f b6 c0 movzbl %al,%eax
328: 48 8b 6c c3 30 mov 0x30(%rbx,%rax,8),%rbp
if (s2->type != VEC128_TYPE && s2->IsConstantOne()) {
32d: 83 7d 04 06 cmpl $0x6,0x4(%rbp)
331: 0f 85 cc 01 00 00 jne 503 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4b3>
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
337: c5 fa 10 45 20 vmovss 0x20(%rbp),%xmm0
33c: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 344 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2f4>
343: 00
344: 0f 85 43 12 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
34a: 0f 8a 3d 12 00 00 jp 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
350: c5 fa 10 45 24 vmovss 0x24(%rbp),%xmm0
355: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 35d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x30d>
35c: 00
35d: 0f 85 2a 12 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
363: 0f 8a 24 12 00 00 jp 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
c.v128.f32[2] == 1.f && c.v128.f32[3] == 1.f) {
369: c5 fa 10 45 28 vmovss 0x28(%rbp),%xmm0
36e: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 376 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x326>
375: 00
376: 0f 85 11 12 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
37c: 0f 8a 0b 12 00 00 jp 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
382: c5 fa 10 45 2c vmovss 0x2c(%rbp),%xmm0
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
387: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 38f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x33f>
38e: 00
38f: 0f 85 f8 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
395: 0f 8b 94 01 00 00 jnp 52f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4df>
39b: e9 ed 11 00 00 jmpq 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
} else if (i->src2.value->IsConstant()) {
3a0: 48 8b 7b 38 mov 0x38(%rbx),%rdi
3a4: e8 00 00 00 00 callq 3a9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x359>
3a9: 84 c0 test %al,%al
3ab: 0f 84 dc 11 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
Value* src1 = i->src1.value;
3b1: 48 8b 6b 30 mov 0x30(%rbx),%rbp
if (i->src2.value->type != VEC128_TYPE &&
3b5: 48 8b 7b 38 mov 0x38(%rbx),%rdi
3b9: 83 7f 04 06 cmpl $0x6,0x4(%rdi)
3bd: 74 0d je 3cc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x37c>
i->src2.value->IsConstantOne()) {
3bf: e8 00 00 00 00 callq 3c4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x374>
if (i->src2.value->type != VEC128_TYPE &&
3c4: 84 c0 test %al,%al
3c6: 0f 85 b4 fd ff ff jne 180 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x130>
} else if (i->src2.value->type == VEC128_TYPE) {
3cc: 48 8b 43 38 mov 0x38(%rbx),%rax
3d0: 83 78 04 06 cmpl $0x6,0x4(%rax)
3d4: 0f 85 b3 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
3da: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
3df: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 3e7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x397>
3e6: 00
3e7: 0f 85 a0 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
3ed: 0f 8a 9a 11 00 00 jp 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
3f3: c5 fa 10 40 24 vmovss 0x24(%rax),%xmm0
3f8: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 400 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3b0>
3ff: 00
400: 0f 85 87 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
406: 0f 8a 81 11 00 00 jp 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
c.v128.f32[2] == 1.f && c.v128.f32[3] == 1.f) {
40c: c5 fa 10 40 28 vmovss 0x28(%rax),%xmm0
411: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 419 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3c9>
418: 00
419: 0f 85 6e 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
41f: 0f 8a 68 11 00 00 jp 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
425: c5 fa 10 40 2c vmovss 0x2c(%rax),%xmm0
if (c.v128.f32[0] == 1.f && c.v128.f32[1] == 1.f &&
42a: c5 f8 2e 05 00 00 00 vucomiss 0x0(%rip),%xmm0 # 432 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3e2>
431: 00
432: 0f 85 55 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
438: 0f 8b 42 fd ff ff jnp 180 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x130>
43e: e9 4a 11 00 00 jmpq 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
} else if (!i->src1.value->IsConstant() &&
443: 48 8b 7b 30 mov 0x30(%rbx),%rdi
447: e8 00 00 00 00 callq 44c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3fc>
44c: 84 c0 test %al,%al
44e: 0f 85 39 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
!i->src2.value->IsConstant() &&
454: 48 8b 7b 38 mov 0x38(%rbx),%rdi
458: e8 00 00 00 00 callq 45d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x40d>
45d: 84 c0 test %al,%al
45f: 0f 85 28 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
i->src1.value == i->src2.value) {
465: 48 8b 43 30 mov 0x30(%rbx),%rax
469: 48 3b 43 38 cmp 0x38(%rbx),%rax
} else if (!i->src1.value->IsConstant() &&
46d: 0f 85 1a 11 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_zero(v->type);
473: 8b 75 04 mov 0x4(%rbp),%esi
476: 48 89 ef mov %rbp,%rdi
479: e8 00 00 00 00 callq 47e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x42e>
47e: e9 fd 10 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
auto heap = memory->LookupHeap(address);
483: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi
488: 44 89 f6 mov %r14d,%esi
48b: e8 00 00 00 00 callq 490 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x440>
if (heap && heap->QueryProtect(address, &protect) &&
490: 48 85 c0 test %rax,%rax
493: 4c 8b 64 24 08 mov 0x8(%rsp),%r12
498: 0f 84 ef 10 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
49e: 48 8d 54 24 2c lea 0x2c(%rsp),%rdx
4a3: 48 89 c7 mov %rax,%rdi
4a6: 44 89 f6 mov %r14d,%esi
4a9: e8 00 00 00 00 callq 4ae <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x45e>
4ae: 84 c0 test %al,%al
4b0: 0f 84 d7 10 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
!(protect & kMemoryProtectWrite) &&
4b6: 8b 44 24 2c mov 0x2c(%rsp),%eax
4ba: 83 e0 03 and $0x3,%eax
4bd: 83 f8 01 cmp $0x1,%eax
4c0: 0f 85 c7 10 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
auto host_addr = memory->TranslateVirtual(address);
4c6: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi
4cb: 44 89 f6 mov %r14d,%esi
4ce: e8 00 00 00 00 callq 4d3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x483>
4d3: 49 89 c6 mov %rax,%r14
switch (v->type) {
4d6: 8b 45 04 mov 0x4(%rbp),%eax
4d9: 48 83 f8 06 cmp $0x6,%rax
4dd: 0f 87 e5 10 00 00 ja 15c8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1578>
4e3: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 4ea <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x49a>
4ea: 48 63 04 81 movslq (%rcx,%rax,4),%rax
4ee: 48 01 c8 add %rcx,%rax
4f1: ff e0 jmpq *%rax
v->set_constant(xe::load<uint8_t>(host_addr));
4f3: 4c 89 f7 mov %r14,%rdi
4f6: e8 00 00 00 00 callq 4fb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4ab>
4fb: 0f b6 f0 movzbl %al,%esi
4fe: e9 01 10 00 00 jmpq 1504 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14b4>
if (s2->type != VEC128_TYPE && s2->IsConstantOne()) {
503: 48 89 ef mov %rbp,%rdi
506: e8 00 00 00 00 callq 50b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4bb>
50b: 84 c0 test %al,%al
50d: 75 20 jne 52f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4df>
} else if (s2->type == VEC128_TYPE) {
50f: 83 7d 04 06 cmpl $0x6,0x4(%rbp)
513: 0f 85 74 10 00 00 jne 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
519: e9 19 fe ff ff jmpq 337 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x2e7>
if (i->dest->type == ca->type) {
51e: 48 8b 43 28 mov 0x28(%rbx),%rax
522: 8b 40 04 mov 0x4(%rax),%eax
525: 41 3b 46 04 cmp 0x4(%r14),%eax
529: 0f 85 c8 00 00 00 jne 5f7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5a7>
52f: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 536 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4e6>
536: 31 d2 xor %edx,%edx
538: 48 89 df mov %rbx,%rdi
53b: e8 00 00 00 00 callq 540 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4f0>
540: 48 89 df mov %rbx,%rdi
543: 4c 89 f6 mov %r14,%rsi
546: e8 00 00 00 00 callq 54b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4fb>
54b: e9 38 10 00 00 jmpq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
Value* mul = builder->AllocValue();
550: be 03 00 00 00 mov $0x3,%esi
555: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi
55a: e8 00 00 00 00 callq 55f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x50f>
55f: 48 89 c5 mov %rax,%rbp
mul->set_from(i->src1.value);
562: 48 8b 73 30 mov 0x30(%rbx),%rsi
566: 48 89 c7 mov %rax,%rdi
569: e8 00 00 00 00 callq 56e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x51e>
mul->Mul(i->src2.value);
56e: 48 8b 73 38 mov 0x38(%rbx),%rsi
572: 48 89 ef mov %rbp,%rdi
575: e8 00 00 00 00 callq 57a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x52a>
Value* add = i->src3.value;
57a: 4c 8b 73 40 mov 0x40(%rbx),%r14
i->Replace(&OPCODE_SUB_info, 0);
57e: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 585 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x535>
585: eb 4b jmp 5d2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x582>
} else if (i->src1.value->IsConstantFalse()) {
587: 48 8b 7b 30 mov 0x30(%rbx),%rdi
58b: e8 00 00 00 00 callq 590 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x540>
590: 84 c0 test %al,%al
592: 74 6f je 603 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5b3>
auto src3 = i->src3.value;
594: 48 8b 6b 40 mov 0x40(%rbx),%rbp
598: e9 e3 fb ff ff jmpq 180 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x130>
Value* mul = builder->AllocValue();
59d: be 03 00 00 00 mov $0x3,%esi
5a2: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi
5a7: e8 00 00 00 00 callq 5ac <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x55c>
5ac: 48 89 c5 mov %rax,%rbp
mul->set_from(i->src1.value);
5af: 48 8b 73 30 mov 0x30(%rbx),%rsi
5b3: 48 89 c7 mov %rax,%rdi
5b6: e8 00 00 00 00 callq 5bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x56b>
mul->Mul(i->src2.value);
5bb: 48 8b 73 38 mov 0x38(%rbx),%rsi
5bf: 48 89 ef mov %rbp,%rdi
5c2: e8 00 00 00 00 callq 5c7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x577>
Value* add = i->src3.value;
5c7: 4c 8b 73 40 mov 0x40(%rbx),%r14
i->Replace(&OPCODE_ADD_info, 0);
5cb: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 5d2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x582>
5d2: 31 d2 xor %edx,%edx
5d4: 48 89 df mov %rbx,%rdi
5d7: e8 00 00 00 00 callq 5dc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x58c>
5dc: 48 89 df mov %rbx,%rdi
5df: 48 89 ee mov %rbp,%rsi
5e2: e8 00 00 00 00 callq 5e7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x597>
5e7: 48 89 df mov %rbx,%rdi
5ea: 4c 89 f6 mov %r14,%rsi
5ed: e8 00 00 00 00 callq 5f2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5a2>
5f2: e9 91 0f 00 00 jmpq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
i->Replace(&OPCODE_ZERO_EXTEND_info, 0);
5f7: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 5fe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5ae>
5fe: e9 33 ff ff ff jmpq 536 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4e6>
} else if (i->src2.value->IsConstant() &&
603: 48 8b 7b 38 mov 0x38(%rbx),%rdi
607: e8 00 00 00 00 callq 60c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5bc>
60c: 84 c0 test %al,%al
60e: 0f 84 79 0f 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
i->src3.value->IsConstant()) {
614: 48 8b 7b 40 mov 0x40(%rbx),%rdi
618: e8 00 00 00 00 callq 61d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5cd>
61d: 48 8b 5b 08 mov 0x8(%rbx),%rbx
while (i) {
621: 48 85 db test %rbx,%rbx
624: 0f 85 86 00 00 00 jne 6b0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x660>
62a: e9 6b 0f 00 00 jmpq 159a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x154a>
v->set_constant(xe::load<uint64_t>(host_addr));
62f: 4c 89 f7 mov %r14,%rdi
632: e8 00 00 00 00 callq 637 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5e7>
637: 48 89 ef mov %rbp,%rdi
63a: 48 89 c6 mov %rax,%rsi
63d: e8 00 00 00 00 callq 642 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5f2>
642: e9 39 0f 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
v->set_constant(xe::load<uint16_t>(host_addr));
647: 4c 89 f7 mov %r14,%rdi
64a: e8 00 00 00 00 callq 64f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x5ff>
64f: 0f b7 f0 movzwl %ax,%esi
652: 48 89 ef mov %rbp,%rdi
655: e8 00 00 00 00 callq 65a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x60a>
65a: e9 21 0f 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
v->set_constant(xe::load<uint32_t>(host_addr));
65f: 4c 89 f7 mov %r14,%rdi
662: e8 00 00 00 00 callq 667 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x617>
667: 48 89 ef mov %rbp,%rdi
66a: 89 c6 mov %eax,%esi
66c: e8 00 00 00 00 callq 671 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x621>
671: e9 0a 0f 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
val.low = xe::load<uint64_t>(host_addr);
676: 4c 89 f7 mov %r14,%rdi
679: e8 00 00 00 00 callq 67e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x62e>
67e: 48 89 44 24 30 mov %rax,0x30(%rsp)
val.high = xe::load<uint64_t>(host_addr + 8);
683: 49 83 c6 08 add $0x8,%r14
687: 4c 89 f7 mov %r14,%rdi
68a: e8 00 00 00 00 callq 68f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x63f>
68f: 48 89 44 24 38 mov %rax,0x38(%rsp)
694: 48 8d 74 24 30 lea 0x30(%rsp),%rsi
v->set_constant(val);
699: 48 89 ef mov %rbp,%rdi
69c: e8 00 00 00 00 callq 6a1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x651>
6a1: e9 da 0e 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
6a6: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
6ad: 00 00 00
switch (i->opcode->num) {
6b0: 48 8b 43 18 mov 0x18(%rbx),%rax
6b4: 8b 40 10 mov 0x10(%rax),%eax
6b7: 83 c0 fc add $0xfffffffc,%eax
6ba: 83 f8 64 cmp $0x64,%eax
6bd: 0f 87 ca 0e 00 00 ja 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
6c3: 48 8b 6b 28 mov 0x28(%rbx),%rbp
6c7: 49 63 44 85 00 movslq 0x0(%r13,%rax,4),%rax
6cc: 4c 01 e8 add %r13,%rax
6cf: ff e0 jmpq *%rax
if (i->src1.value->IsConstant()) {
6d1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
6d5: e8 00 00 00 00 callq 6da <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x68a>
6da: 84 c0 test %al,%al
6dc: 0f 84 ab 0e 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
assert_false(i->flags & LOAD_STORE_BYTE_SWAP);
6e2: f6 43 20 01 testb $0x1,0x20(%rbx)
6e6: 0f 85 fb 0e 00 00 jne 15e7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1597>
auto memory = processor_->memory();
6ec: 48 8b 44 24 10 mov 0x10(%rsp),%rax
6f1: 48 8b 78 08 mov 0x8(%rax),%rdi
6f5: e8 00 00 00 00 callq 6fa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6aa>
6fa: 48 89 44 24 20 mov %rax,0x20(%rsp)
if (i->opcode->num == OPCODE_LOAD_OFFSET) {
6ff: 48 8b 43 18 mov 0x18(%rbx),%rax
auto address = i->src1.value->constant.i32;
703: 48 8b 4b 30 mov 0x30(%rbx),%rcx
707: 44 8b 71 20 mov 0x20(%rcx),%r14d
if (i->opcode->num == OPCODE_LOAD_OFFSET) {
70b: 83 78 10 25 cmpl $0x25,0x10(%rax)
70f: 75 08 jne 719 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6c9>
address += i->src2.value->constant.i32;
711: 48 8b 43 38 mov 0x38(%rbx),%rax
715: 44 03 70 20 add 0x20(%rax),%r14d
processor_->memory()->LookupVirtualMappedRange(address);
719: 48 8b 44 24 10 mov 0x10(%rsp),%rax
71e: 48 8b 78 08 mov 0x8(%rax),%rdi
722: e8 00 00 00 00 callq 727 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6d7>
727: 48 89 c7 mov %rax,%rdi
72a: 44 89 f6 mov %r14d,%esi
72d: e8 00 00 00 00 callq 732 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6e2>
if (FLAGS_inline_mmio_access && mmio_range) {
732: 48 85 c0 test %rax,%rax
735: 0f 84 48 fd ff ff je 483 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x433>
73b: 49 89 c4 mov %rax,%r12
73e: 0f b6 05 00 00 00 00 movzbl 0x0(%rip),%eax # 745 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x6f5>
745: 84 c0 test %al,%al
747: 0f 84 36 fd ff ff je 483 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x433>
i->Replace(&OPCODE_LOAD_MMIO_info, 0);
74d: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 754 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x704>
754: 31 d2 xor %edx,%edx
756: 48 89 df mov %rbx,%rdi
759: e8 00 00 00 00 callq 75e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x70e>
i->src1.offset = reinterpret_cast<uint64_t>(mmio_range);
75e: 4c 89 63 30 mov %r12,0x30(%rbx)
i->src2.offset = address;
762: 49 63 c6 movslq %r14d,%rax
765: 48 89 43 38 mov %rax,0x38(%rbx)
769: 4c 8b 64 24 08 mov 0x8(%rsp),%r12
76e: e9 15 0e 00 00 jmpq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
if (FLAGS_inline_mmio_access && i->src1.value->IsConstant()) {
773: 80 3d 00 00 00 00 00 cmpb $0x0,0x0(%rip) # 77a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x72a>
77a: 0f 84 0d 0e 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
780: 48 8b 7b 30 mov 0x30(%rbx),%rdi
784: e8 00 00 00 00 callq 789 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x739>
789: 84 c0 test %al,%al
78b: 0f 84 fc 0d 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->opcode->num == OPCODE_STORE_OFFSET) {
791: 48 8b 43 18 mov 0x18(%rbx),%rax
auto address = i->src1.value->constant.i32;
795: 48 8b 4b 30 mov 0x30(%rbx),%rcx
799: 44 8b 71 20 mov 0x20(%rcx),%r14d
if (i->opcode->num == OPCODE_STORE_OFFSET) {
79d: 83 78 10 26 cmpl $0x26,0x10(%rax)
7a1: 75 08 jne 7ab <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x75b>
address += i->src2.value->constant.i32;
7a3: 48 8b 43 38 mov 0x38(%rbx),%rax
7a7: 44 03 70 20 add 0x20(%rax),%r14d
processor_->memory()->LookupVirtualMappedRange(address);
7ab: 48 8b 44 24 10 mov 0x10(%rsp),%rax
7b0: 48 8b 78 08 mov 0x8(%rax),%rdi
7b4: e8 00 00 00 00 callq 7b9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x769>
7b9: 48 89 c7 mov %rax,%rdi
7bc: 44 89 f6 mov %r14d,%esi
7bf: e8 00 00 00 00 callq 7c4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x774>
if (mmio_range) {
7c4: 48 85 c0 test %rax,%rax
7c7: 0f 84 c0 0d 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
7cd: 48 89 c5 mov %rax,%rbp
auto value = i->src2.value;
7d0: 48 8d 43 38 lea 0x38(%rbx),%rax
if (i->opcode->num == OPCODE_STORE_OFFSET) {
7d4: 48 8b 4b 18 mov 0x18(%rbx),%rcx
7d8: 83 79 10 26 cmpl $0x26,0x10(%rcx)
value = i->src3.value;
7dc: 48 8d 4b 40 lea 0x40(%rbx),%rcx
if (i->opcode->num == OPCODE_STORE_OFFSET) {
7e0: 48 0f 44 c1 cmove %rcx,%rax
7e4: 4d 89 fc mov %r15,%r12
7e7: 4c 8b 38 mov (%rax),%r15
i->Replace(&OPCODE_STORE_MMIO_info, 0);
7ea: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 7f1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7a1>
7f1: 31 d2 xor %edx,%edx
7f3: 48 89 df mov %rbx,%rdi
7f6: e8 00 00 00 00 callq 7fb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7ab>
i->src1.offset = reinterpret_cast<uint64_t>(mmio_range);
7fb: 48 89 6b 30 mov %rbp,0x30(%rbx)
i->src2.offset = address;
7ff: 49 63 c6 movslq %r14d,%rax
802: 48 89 43 38 mov %rax,0x38(%rbx)
i->set_src3(value);
806: 48 89 df mov %rbx,%rdi
809: 4c 89 fe mov %r15,%rsi
80c: 4d 89 e7 mov %r12,%r15
80f: 4c 8b 64 24 08 mov 0x8(%rsp),%r12
814: e8 00 00 00 00 callq 819 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7c9>
819: e9 6a 0d 00 00 jmpq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
result = true;
}
break;
case OPCODE_VECTOR_AVERAGE:
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
81e: 48 8b 7b 30 mov 0x30(%rbx),%rdi
822: e8 00 00 00 00 callq 827 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7d7>
827: 84 c0 test %al,%al
829: 0f 84 5e 0d 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
82f: 48 8b 7b 38 mov 0x38(%rbx),%rdi
833: e8 00 00 00 00 callq 838 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7e8>
838: 84 c0 test %al,%al
83a: 0f 84 4d 0d 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
840: 48 8b 73 30 mov 0x30(%rbx),%rsi
844: 48 89 ef mov %rbp,%rdi
847: e8 00 00 00 00 callq 84c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x7fc>
uint32_t arith_flags = i->flags >> 8;
84c: 44 0f b7 43 20 movzwl 0x20(%rbx),%r8d
v->VectorAverage(i->src2.value, hir::TypeName(i->flags & 0xFF),
851: 48 8b 73 38 mov 0x38(%rbx),%rsi
855: 41 0f b6 d0 movzbl %r8b,%edx
!!(arith_flags & ARITHMETIC_UNSIGNED),
859: 44 89 c1 mov %r8d,%ecx
85c: c1 e9 0a shr $0xa,%ecx
85f: 83 e1 01 and $0x1,%ecx
!!(arith_flags & ARITHMETIC_SATURATE));
862: 41 c1 e8 0b shr $0xb,%r8d
866: 41 83 e0 01 and $0x1,%r8d
v->VectorAverage(i->src2.value, hir::TypeName(i->flags & 0xFF),
86a: 48 89 ef mov %rbp,%rdi
86d: e8 00 00 00 00 callq 872 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x822>
872: e9 09 0d 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
877: 48 8b 7b 30 mov 0x30(%rbx),%rdi
87b: e8 00 00 00 00 callq 880 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x830>
880: 84 c0 test %al,%al
882: 0f 84 05 0d 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
888: 48 8b 73 30 mov 0x30(%rbx),%rsi
88c: 48 89 ef mov %rbp,%rdi
88f: e8 00 00 00 00 callq 894 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x844>
v->Abs();
894: 48 89 ef mov %rbp,%rdi
897: e8 00 00 00 00 callq 89c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x84c>
89c: e9 df 0c 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
8a1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
8a5: e8 00 00 00 00 callq 8aa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x85a>
8aa: 84 c0 test %al,%al
8ac: 0f 84 db 0c 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
8b2: 48 8b 7b 38 mov 0x38(%rbx),%rdi
8b6: e8 00 00 00 00 callq 8bb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x86b>
8bb: 84 c0 test %al,%al
8bd: 0f 84 ca 0c 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
8c3: 48 8b 73 30 mov 0x30(%rbx),%rsi
8c7: 48 89 ef mov %rbp,%rdi
8ca: e8 00 00 00 00 callq 8cf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x87f>
v->And(i->src2.value);
8cf: 48 8b 73 38 mov 0x38(%rbx),%rsi
8d3: 48 89 ef mov %rbp,%rdi
8d6: e8 00 00 00 00 callq 8db <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x88b>
8db: e9 a0 0c 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
8e0: 48 8b 7b 30 mov 0x30(%rbx),%rdi
8e4: e8 00 00 00 00 callq 8e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x899>
8e9: 84 c0 test %al,%al
8eb: 0f 84 9c 0c 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
8f1: 48 8b 73 30 mov 0x30(%rbx),%rsi
8f5: 48 89 ef mov %rbp,%rdi
8f8: e8 00 00 00 00 callq 8fd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8ad>
v->Recip();
8fd: 48 89 ef mov %rbp,%rdi
900: e8 00 00 00 00 callq 905 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8b5>
905: e9 76 0c 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
90a: 48 8b 7b 30 mov 0x30(%rbx),%rdi
90e: e8 00 00 00 00 callq 913 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8c3>
913: 84 c0 test %al,%al
915: 0f 84 72 0c 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
91b: 48 8b 7b 38 mov 0x38(%rbx),%rdi
91f: e8 00 00 00 00 callq 924 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8d4>
924: 84 c0 test %al,%al
926: 0f 84 61 0c 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
92c: 48 8b 73 30 mov 0x30(%rbx),%rsi
930: 48 89 ef mov %rbp,%rdi
933: e8 00 00 00 00 callq 938 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8e8>
v->Add(i->src2.value);
938: 48 8b 73 38 mov 0x38(%rbx),%rsi
93c: 48 89 ef mov %rbp,%rdi
93f: e8 00 00 00 00 callq 944 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x8f4>
944: e9 37 0c 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
949: 48 8b 7b 30 mov 0x30(%rbx),%rdi
94d: e8 00 00 00 00 callq 952 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x902>
952: 84 c0 test %al,%al
954: 0f 84 33 0c 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
95a: 48 8b 73 30 mov 0x30(%rbx),%rsi
95e: 48 89 ef mov %rbp,%rdi
961: e8 00 00 00 00 callq 966 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x916>
v->Neg();
966: 48 89 ef mov %rbp,%rdi
969: e8 00 00 00 00 callq 96e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x91e>
96e: e9 0d 0c 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
973: 48 8b 7b 30 mov 0x30(%rbx),%rdi
977: e8 00 00 00 00 callq 97c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x92c>
97c: 84 c0 test %al,%al
97e: 0f 84 09 0c 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
984: 48 8b 7b 38 mov 0x38(%rbx),%rdi
988: e8 00 00 00 00 callq 98d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x93d>
98d: 84 c0 test %al,%al
98f: 0f 84 f8 0b 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
995: 48 8b 73 30 mov 0x30(%rbx),%rsi
999: 48 89 ef mov %rbp,%rdi
99c: e8 00 00 00 00 callq 9a1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x951>
v->VectorCompareUGE(i->src2.value, hir::TypeName(i->flags));
9a1: 48 8b 73 38 mov 0x38(%rbx),%rsi
9a5: 0f b7 53 20 movzwl 0x20(%rbx),%edx
9a9: 48 89 ef mov %rbp,%rdi
9ac: e8 00 00 00 00 callq 9b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x961>
9b1: e9 ca 0b 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
9b6: 48 8b 7b 30 mov 0x30(%rbx),%rdi
9ba: e8 00 00 00 00 callq 9bf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x96f>
9bf: 84 c0 test %al,%al
9c1: 0f 84 c6 0b 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
9c7: 48 8b 7b 38 mov 0x38(%rbx),%rdi
9cb: e8 00 00 00 00 callq 9d0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x980>
9d0: 84 c0 test %al,%al
9d2: 0f 84 b5 0b 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
9d8: 48 8b 73 30 mov 0x30(%rbx),%rsi
9dc: 48 89 ef mov %rbp,%rdi
9df: e8 00 00 00 00 callq 9e4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x994>
v->VectorCompareSGE(i->src2.value, hir::TypeName(i->flags));
9e4: 48 8b 73 38 mov 0x38(%rbx),%rsi
9e8: 0f b7 53 20 movzwl 0x20(%rbx),%edx
9ec: 48 89 ef mov %rbp,%rdi
9ef: e8 00 00 00 00 callq 9f4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9a4>
9f4: e9 87 0b 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
9f9: 48 8b 7b 30 mov 0x30(%rbx),%rdi
9fd: e8 00 00 00 00 callq a02 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9b2>
a02: 84 c0 test %al,%al
a04: 0f 84 e1 f8 ff ff je 2eb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x29b>
a0a: 48 8b 7b 38 mov 0x38(%rbx),%rdi
a0e: e8 00 00 00 00 callq a13 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9c3>
a13: 84 c0 test %al,%al
a15: 0f 84 d0 f8 ff ff je 2eb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x29b>
v->set_from(i->src1.value);
a1b: 48 8b 73 30 mov 0x30(%rbx),%rsi
a1f: 48 89 ef mov %rbp,%rdi
a22: e8 00 00 00 00 callq a27 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9d7>
v->Mul(i->src2.value);
a27: 48 8b 73 38 mov 0x38(%rbx),%rsi
a2b: 48 89 ef mov %rbp,%rdi
a2e: e8 00 00 00 00 callq a33 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9e3>
a33: e9 48 0b 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
a38: 48 8b 7b 30 mov 0x30(%rbx),%rdi
a3c: e8 00 00 00 00 callq a41 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x9f1>
a41: 84 c0 test %al,%al
a43: 0f 84 44 0b 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
a49: 48 8b 7b 38 mov 0x38(%rbx),%rdi
a4d: e8 00 00 00 00 callq a52 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa02>
a52: 84 c0 test %al,%al
a54: 0f 84 33 0b 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantNE(i->src2.value);
a5a: 48 8b 7b 30 mov 0x30(%rbx),%rdi
a5e: 48 8b 73 38 mov 0x38(%rbx),%rsi
a62: e8 00 00 00 00 callq a67 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa17>
a67: e9 fc 0a 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant()) {
a6c: 48 8b 7b 30 mov 0x30(%rbx),%rdi
a70: e8 00 00 00 00 callq a75 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa25>
a75: 84 c0 test %al,%al
a77: 0f 84 10 0b 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->type == FLOAT32_TYPE &&
a7d: 48 8b 43 30 mov 0x30(%rbx),%rax
a81: 83 78 04 04 cmpl $0x4,0x4(%rax)
a85: 75 12 jne a99 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa49>
std::isnan(i->src1.value->constant.f32)) {
a87: c5 fa 10 40 20 vmovss 0x20(%rax),%xmm0
a8c: e8 00 00 00 00 callq a91 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa41>
if (i->src1.value->type == FLOAT32_TYPE &&
a91: 84 c0 test %al,%al
a93: 0f 85 8d 01 00 00 jne c26 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbd6>
} else if (i->src1.value->type == FLOAT64_TYPE &&
a99: 48 8b 43 30 mov 0x30(%rbx),%rax
a9d: 83 78 04 05 cmpl $0x5,0x4(%rax)
aa1: 0f 85 5b 0a 00 00 jne 1502 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14b2>
std::isnan(i->src1.value->constant.f64)) {
aa7: c5 fb 10 40 20 vmovsd 0x20(%rax),%xmm0
aac: e8 00 00 00 00 callq ab1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa61>
} else if (i->src1.value->type == FLOAT64_TYPE &&
ab1: 84 c0 test %al,%al
ab3: 0f 84 49 0a 00 00 je 1502 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14b2>
ab9: e9 68 01 00 00 jmpq c26 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbd6>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
abe: 48 8b 7b 30 mov 0x30(%rbx),%rdi
ac2: e8 00 00 00 00 callq ac7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa77>
ac7: 84 c0 test %al,%al
ac9: 0f 84 be 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
acf: 48 8b 7b 38 mov 0x38(%rbx),%rdi
ad3: e8 00 00 00 00 callq ad8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa88>
ad8: 84 c0 test %al,%al
ada: 0f 84 ad 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantUGE(i->src2.value);
ae0: 48 8b 7b 30 mov 0x30(%rbx),%rdi
ae4: 48 8b 73 38 mov 0x38(%rbx),%rsi
ae8: e8 00 00 00 00 callq aed <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xa9d>
aed: e9 76 0a 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
af2: 48 8b 7b 30 mov 0x30(%rbx),%rdi
af6: e8 00 00 00 00 callq afb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xaab>
afb: 84 c0 test %al,%al
afd: 0f 84 8a 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
b03: 48 8b 7b 38 mov 0x38(%rbx),%rdi
b07: e8 00 00 00 00 callq b0c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xabc>
b0c: 84 c0 test %al,%al
b0e: 0f 84 79 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
b14: 48 8b 73 30 mov 0x30(%rbx),%rsi
b18: 48 89 ef mov %rbp,%rdi
b1b: e8 00 00 00 00 callq b20 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xad0>
v->Sha(i->src2.value);
b20: 48 8b 73 38 mov 0x38(%rbx),%rsi
b24: 48 89 ef mov %rbp,%rdi
b27: e8 00 00 00 00 callq b2c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xadc>
b2c: e9 4f 0a 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
b31: 48 8b 7b 30 mov 0x30(%rbx),%rdi
b35: e8 00 00 00 00 callq b3a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xaea>
b3a: 84 c0 test %al,%al
b3c: 0f 84 4b 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
b42: 48 8b 7b 38 mov 0x38(%rbx),%rdi
b46: e8 00 00 00 00 callq b4b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xafb>
b4b: 84 c0 test %al,%al
b4d: 0f 84 3a 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantSGT(i->src2.value);
b53: 48 8b 7b 30 mov 0x30(%rbx),%rdi
b57: 48 8b 73 38 mov 0x38(%rbx),%rsi
b5b: e8 00 00 00 00 callq b60 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb10>
b60: e9 03 0a 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
b65: 48 8b 7b 30 mov 0x30(%rbx),%rdi
b69: e8 00 00 00 00 callq b6e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb1e>
b6e: 84 c0 test %al,%al
b70: 0f 84 17 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
b76: 48 8b 7b 38 mov 0x38(%rbx),%rdi
b7a: e8 00 00 00 00 callq b7f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb2f>
b7f: 84 c0 test %al,%al
b81: 0f 84 06 0a 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
b87: 48 8b 73 30 mov 0x30(%rbx),%rsi
b8b: 48 89 ef mov %rbp,%rdi
b8e: e8 00 00 00 00 callq b93 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb43>
v->Max(i->src2.value);
b93: 48 8b 73 38 mov 0x38(%rbx),%rsi
b97: 48 89 ef mov %rbp,%rdi
b9a: e8 00 00 00 00 callq b9f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb4f>
b9f: e9 dc 09 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstantZero() &&
ba4: 48 8b 7b 30 mov 0x30(%rbx),%rdi
ba8: e8 00 00 00 00 callq bad <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb5d>
bad: 84 c0 test %al,%al
baf: 0f 84 d8 09 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
i->src2.value->IsConstantZero()) {
bb5: 48 8b 7b 38 mov 0x38(%rbx),%rdi
bb9: e8 00 00 00 00 callq bbe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb6e>
if (i->src1.value->IsConstantZero() &&
bbe: 84 c0 test %al,%al
bc0: 0f 84 c7 09 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
Value* ca = i->src3.value;
bc6: 4c 8b 73 40 mov 0x40(%rbx),%r14
if (ca->IsConstant()) {
bca: 4c 89 f7 mov %r14,%rdi
bcd: e8 00 00 00 00 callq bd2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb82>
bd2: 84 c0 test %al,%al
bd4: 0f 84 44 f9 ff ff je 51e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x4ce>
bda: 4d 89 fc mov %r15,%r12
TypeName target_type = v->type;
bdd: 44 8b 7d 04 mov 0x4(%rbp),%r15d
v->set_from(ca);
be1: 48 89 ef mov %rbp,%rdi
be4: 4c 89 f6 mov %r14,%rsi
be7: e8 00 00 00 00 callq bec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xb9c>
v->ZeroExtend(target_type);
bec: 48 89 ef mov %rbp,%rdi
bef: 44 89 fe mov %r15d,%esi
bf2: 4d 89 e7 mov %r12,%r15
bf5: 4c 8b 64 24 08 mov 0x8(%rsp),%r12
bfa: e8 00 00 00 00 callq bff <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbaf>
bff: e9 7c 09 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
c04: 48 8b 7b 30 mov 0x30(%rbx),%rdi
c08: e8 00 00 00 00 callq c0d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbbd>
c0d: 84 c0 test %al,%al
c0f: 0f 84 78 09 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantFalse()) {
c15: 48 8b 7b 30 mov 0x30(%rbx),%rdi
c19: e8 00 00 00 00 callq c1e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbce>
c1e: 84 c0 test %al,%al
c20: 0f 84 dc 08 00 00 je 1502 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14b2>
c26: be 01 00 00 00 mov $0x1,%esi
c2b: e9 d4 08 00 00 jmpq 1504 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14b4>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
c30: 48 8b 7b 30 mov 0x30(%rbx),%rdi
c34: e8 00 00 00 00 callq c39 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbe9>
c39: 84 c0 test %al,%al
c3b: 0f 84 4c 09 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
c41: 48 8b 7b 38 mov 0x38(%rbx),%rdi
c45: e8 00 00 00 00 callq c4a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbfa>
c4a: 84 c0 test %al,%al
c4c: 0f 84 3b 09 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantSGE(i->src2.value);
c52: 48 8b 7b 30 mov 0x30(%rbx),%rdi
c56: 48 8b 73 38 mov 0x38(%rbx),%rsi
c5a: e8 00 00 00 00 callq c5f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc0f>
c5f: e9 04 09 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
c64: 48 8b 7b 30 mov 0x30(%rbx),%rdi
c68: e8 00 00 00 00 callq c6d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc1d>
c6d: 84 c0 test %al,%al
c6f: 0f 84 18 09 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
c75: 48 8b 7b 38 mov 0x38(%rbx),%rdi
c79: e8 00 00 00 00 callq c7e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc2e>
c7e: 84 c0 test %al,%al
c80: 0f 84 07 09 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantULE(i->src2.value);
c86: 48 8b 7b 30 mov 0x30(%rbx),%rdi
c8a: 48 8b 73 38 mov 0x38(%rbx),%rsi
c8e: e8 00 00 00 00 callq c93 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc43>
c93: e9 d0 08 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant()) {
c98: 48 8b 7b 30 mov 0x30(%rbx),%rdi
c9c: e8 00 00 00 00 callq ca1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc51>
ca1: 84 c0 test %al,%al
ca3: 0f 84 e4 08 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_zero(VEC128_TYPE);
ca9: be 06 00 00 00 mov $0x6,%esi
cae: 48 89 ef mov %rbp,%rdi
cb1: e8 00 00 00 00 callq cb6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc66>
v->VectorConvertI2F(i->src1.value,
cb6: 48 8b 73 30 mov 0x30(%rbx),%rsi
!!(i->flags & ARITHMETIC_UNSIGNED));
cba: 0f b7 53 20 movzwl 0x20(%rbx),%edx
cbe: 83 e2 04 and $0x4,%edx
cc1: c1 ea 02 shr $0x2,%edx
v->VectorConvertI2F(i->src1.value,
cc4: 48 89 ef mov %rbp,%rdi
cc7: e8 00 00 00 00 callq ccc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc7c>
ccc: e9 af 08 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
cd1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
cd5: e8 00 00 00 00 callq cda <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc8a>
cda: 84 c0 test %al,%al
cdc: 0f 84 ab 08 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
ce2: 48 8b 7b 38 mov 0x38(%rbx),%rdi
ce6: e8 00 00 00 00 callq ceb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xc9b>
ceb: 84 c0 test %al,%al
ced: 0f 84 9a 08 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_zero(v->type);
cf3: 8b 75 04 mov 0x4(%rbp),%esi
cf6: 48 89 ef mov %rbp,%rdi
cf9: e8 00 00 00 00 callq cfe <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcae>
v->Extract(i->src1.value, i->src2.value);
cfe: 48 8b 73 30 mov 0x30(%rbx),%rsi
d02: 48 8b 53 38 mov 0x38(%rbx),%rdx
d06: 48 89 ef mov %rbp,%rdi
d09: e8 00 00 00 00 callq d0e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcbe>
d0e: e9 6d 08 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
d13: 48 8b 7b 30 mov 0x30(%rbx),%rdi
d17: e8 00 00 00 00 callq d1c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xccc>
d1c: 84 c0 test %al,%al
d1e: 0f 84 69 08 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
d24: 48 8b 7b 38 mov 0x38(%rbx),%rdi
d28: e8 00 00 00 00 callq d2d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcdd>
d2d: 84 c0 test %al,%al
d2f: 0f 84 58 08 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantEQ(i->src2.value);
d35: 48 8b 7b 30 mov 0x30(%rbx),%rdi
d39: 48 8b 73 38 mov 0x38(%rbx),%rsi
d3d: e8 00 00 00 00 callq d42 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xcf2>
d42: e9 21 08 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
d47: 48 8b 7b 30 mov 0x30(%rbx),%rdi
d4b: e8 00 00 00 00 callq d50 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd00>
d50: 84 c0 test %al,%al
d52: 0f 84 35 08 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
d58: 48 8b 7b 38 mov 0x38(%rbx),%rdi
d5c: e8 00 00 00 00 callq d61 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd11>
d61: 84 c0 test %al,%al
d63: 0f 84 24 08 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
d69: 48 8b 73 30 mov 0x30(%rbx),%rsi
d6d: 48 89 ef mov %rbp,%rdi
d70: e8 00 00 00 00 callq d75 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd25>
uint32_t arith_flags = i->flags >> 8;
d75: 44 0f b7 43 20 movzwl 0x20(%rbx),%r8d
v->VectorAdd(i->src2.value, hir::TypeName(i->flags & 0xFF),
d7a: 48 8b 73 38 mov 0x38(%rbx),%rsi
d7e: 41 0f b6 d0 movzbl %r8b,%edx
!!(arith_flags & ARITHMETIC_UNSIGNED),
d82: 44 89 c1 mov %r8d,%ecx
d85: c1 e9 0a shr $0xa,%ecx
d88: 83 e1 01 and $0x1,%ecx
!!(arith_flags & ARITHMETIC_SATURATE));
d8b: 41 c1 e8 0b shr $0xb,%r8d
d8f: 41 83 e0 01 and $0x1,%r8d
v->VectorAdd(i->src2.value, hir::TypeName(i->flags & 0xFF),
d93: 48 89 ef mov %rbp,%rdi
d96: e8 00 00 00 00 callq d9b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd4b>
d9b: e9 e0 07 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
da0: 48 8b 7b 30 mov 0x30(%rbx),%rdi
da4: e8 00 00 00 00 callq da9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd59>
da9: 84 c0 test %al,%al
dab: 0f 84 dc 07 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
TypeName target_type = v->type;
db1: 44 8b 75 04 mov 0x4(%rbp),%r14d
v->set_from(i->src1.value);
db5: 48 8b 73 30 mov 0x30(%rbx),%rsi
db9: 48 89 ef mov %rbp,%rdi
dbc: e8 00 00 00 00 callq dc1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd71>
v->Truncate(target_type);
dc1: 48 89 ef mov %rbp,%rdi
dc4: 44 89 f6 mov %r14d,%esi
dc7: e8 00 00 00 00 callq dcc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd7c>
dcc: e9 af 07 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
dd1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
dd5: e8 00 00 00 00 callq dda <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd8a>
dda: 84 c0 test %al,%al
ddc: 0f 84 ab 07 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
de2: 48 8b 7b 38 mov 0x38(%rbx),%rdi
de6: e8 00 00 00 00 callq deb <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd9b>
deb: 84 c0 test %al,%al
ded: 0f 84 9a 07 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantULT(i->src2.value);
df3: 48 8b 7b 30 mov 0x30(%rbx),%rdi
df7: 48 8b 73 38 mov 0x38(%rbx),%rsi
dfb: e8 00 00 00 00 callq e00 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdb0>
e00: e9 63 07 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
e05: 48 8b 7b 30 mov 0x30(%rbx),%rdi
e09: e8 00 00 00 00 callq e0e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdbe>
e0e: 84 c0 test %al,%al
e10: 0f 84 77 07 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
e16: 48 8b 7b 38 mov 0x38(%rbx),%rdi
e1a: e8 00 00 00 00 callq e1f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdcf>
e1f: 84 c0 test %al,%al
e21: 0f 84 66 07 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
e27: 48 8b 73 30 mov 0x30(%rbx),%rsi
e2b: 48 89 ef mov %rbp,%rdi
e2e: e8 00 00 00 00 callq e33 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xde3>
v->MulHi(i->src2.value, (i->flags & ARITHMETIC_UNSIGNED) != 0);
e33: 48 8b 73 38 mov 0x38(%rbx),%rsi
e37: 0f b7 53 20 movzwl 0x20(%rbx),%edx
e3b: 83 e2 04 and $0x4,%edx
e3e: c1 ea 02 shr $0x2,%edx
e41: 48 89 ef mov %rbp,%rdi
e44: e8 00 00 00 00 callq e49 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xdf9>
e49: e9 32 07 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
e4e: 48 8b 7b 30 mov 0x30(%rbx),%rdi
e52: e8 00 00 00 00 callq e57 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe07>
e57: 84 c0 test %al,%al
e59: 0f 84 2e 07 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
e5f: 48 8b 7b 38 mov 0x38(%rbx),%rdi
e63: e8 00 00 00 00 callq e68 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe18>
e68: 84 c0 test %al,%al
e6a: 0f 84 1d 07 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
e70: 48 8b 73 30 mov 0x30(%rbx),%rsi
e74: 48 89 ef mov %rbp,%rdi
e77: e8 00 00 00 00 callq e7c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe2c>
v->VectorCompareUGT(i->src2.value, hir::TypeName(i->flags));
e7c: 48 8b 73 38 mov 0x38(%rbx),%rsi
e80: 0f b7 53 20 movzwl 0x20(%rbx),%edx
e84: 48 89 ef mov %rbp,%rdi
e87: e8 00 00 00 00 callq e8c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe3c>
e8c: e9 ef 06 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
e91: 48 8b 7b 30 mov 0x30(%rbx),%rdi
e95: e8 00 00 00 00 callq e9a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe4a>
e9a: 84 c0 test %al,%al
e9c: 0f 84 eb 06 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
ea2: 48 8b 7b 38 mov 0x38(%rbx),%rdi
ea6: e8 00 00 00 00 callq eab <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe5b>
eab: 84 c0 test %al,%al
ead: 0f 84 da 06 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src3.value->IsConstant()) {
eb3: 48 8b 7b 40 mov 0x40(%rbx),%rdi
eb7: e8 00 00 00 00 callq ebc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe6c>
ebc: 84 c0 test %al,%al
ebe: 0f 84 8c f6 ff ff je 550 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x500>
v->set_from(i->src1.value);
ec4: 48 8b 73 30 mov 0x30(%rbx),%rsi
ec8: 48 89 ef mov %rbp,%rdi
ecb: e8 00 00 00 00 callq ed0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe80>
Value::MulSub(v, i->src1.value, i->src2.value, i->src3.value);
ed0: 48 8b 73 30 mov 0x30(%rbx),%rsi
ed4: 48 8b 53 38 mov 0x38(%rbx),%rdx
ed8: 48 8b 4b 40 mov 0x40(%rbx),%rcx
edc: 48 89 ef mov %rbp,%rdi
edf: e8 00 00 00 00 callq ee4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xe94>
ee4: e9 97 06 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
ee9: 48 8b 7b 30 mov 0x30(%rbx),%rdi
eed: e8 00 00 00 00 callq ef2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xea2>
ef2: 84 c0 test %al,%al
ef4: 0f 84 a6 f4 ff ff je 3a0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x350>
efa: 48 8b 7b 38 mov 0x38(%rbx),%rdi
efe: e8 00 00 00 00 callq f03 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xeb3>
f03: 84 c0 test %al,%al
f05: 0f 84 95 f4 ff ff je 3a0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x350>
v->set_from(i->src1.value);
f0b: 48 8b 73 30 mov 0x30(%rbx),%rsi
f0f: 48 89 ef mov %rbp,%rdi
f12: e8 00 00 00 00 callq f17 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xec7>
v->Div(i->src2.value, (i->flags & ARITHMETIC_UNSIGNED) != 0);
f17: 48 8b 73 38 mov 0x38(%rbx),%rsi
f1b: 0f b7 53 20 movzwl 0x20(%rbx),%edx
f1f: 83 e2 04 and $0x4,%edx
f22: c1 ea 02 shr $0x2,%edx
f25: 48 89 ef mov %rbp,%rdi
f28: e8 00 00 00 00 callq f2d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xedd>
f2d: e9 4e 06 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
f32: 48 8b 7b 30 mov 0x30(%rbx),%rdi
f36: e8 00 00 00 00 callq f3b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xeeb>
f3b: 84 c0 test %al,%al
f3d: 0f 84 4a 06 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
f43: 48 8b 73 30 mov 0x30(%rbx),%rsi
f47: 48 89 ef mov %rbp,%rdi
f4a: e8 00 00 00 00 callq f4f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xeff>
v->Round(RoundMode(i->flags));
f4f: 0f b7 73 20 movzwl 0x20(%rbx),%esi
f53: 48 89 ef mov %rbp,%rdi
f56: e8 00 00 00 00 callq f5b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf0b>
f5b: e9 20 06 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
f60: 48 8b 7b 30 mov 0x30(%rbx),%rdi
f64: e8 00 00 00 00 callq f69 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf19>
f69: 84 c0 test %al,%al
f6b: 0f 84 1c 06 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
f71: 48 8b 7b 38 mov 0x38(%rbx),%rdi
f75: e8 00 00 00 00 callq f7a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf2a>
f7a: 84 c0 test %al,%al
f7c: 0f 84 0b 06 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
f82: 48 8b 73 30 mov 0x30(%rbx),%rsi
f86: 48 89 ef mov %rbp,%rdi
f89: e8 00 00 00 00 callq f8e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf3e>
v->DotProduct3(i->src2.value);
f8e: 48 8b 73 38 mov 0x38(%rbx),%rsi
f92: 48 89 ef mov %rbp,%rdi
f95: e8 00 00 00 00 callq f9a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf4a>
f9a: e9 e1 05 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
f9f: 48 8b 7b 30 mov 0x30(%rbx),%rdi
fa3: e8 00 00 00 00 callq fa8 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf58>
fa8: 84 c0 test %al,%al
faa: 0f 84 dd 05 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantTrue()) {
fb0: 48 8b 7b 30 mov 0x30(%rbx),%rdi
fb4: e8 00 00 00 00 callq fb9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf69>
fb9: 84 c0 test %al,%al
fbb: 0f 84 bf 05 00 00 je 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
auto symbol = i->src2.symbol;
fc1: 48 8b 6b 38 mov 0x38(%rbx),%rbp
fc5: e9 4e 02 00 00 jmpq 1218 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11c8>
if (i->src1.value->IsConstant()) {
fca: 48 8b 7b 30 mov 0x30(%rbx),%rdi
fce: e8 00 00 00 00 callq fd3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf83>
fd3: 84 c0 test %al,%al
fd5: 0f 84 b2 05 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantTrue()) {
fdb: 48 8b 7b 30 mov 0x30(%rbx),%rdi
fdf: e8 00 00 00 00 callq fe4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xf94>
fe4: 84 c0 test %al,%al
fe6: 0f 85 08 01 00 00 jne 10f4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10a4>
fec: e9 8f 05 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
ff1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
ff5: e8 00 00 00 00 callq ffa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfaa>
ffa: 84 c0 test %al,%al
ffc: 0f 84 8b 05 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
TypeName target_type = v->type;
1002: 44 8b 75 04 mov 0x4(%rbp),%r14d
v->set_from(i->src1.value);
1006: 48 8b 73 30 mov 0x30(%rbx),%rsi
100a: 48 89 ef mov %rbp,%rdi
100d: e8 00 00 00 00 callq 1012 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfc2>
v->Convert(target_type, RoundMode(i->flags));
1012: 0f b7 53 20 movzwl 0x20(%rbx),%edx
1016: 48 89 ef mov %rbp,%rdi
1019: 44 89 f6 mov %r14d,%esi
101c: e8 00 00 00 00 callq 1021 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfd1>
1021: e9 5a 05 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1026: 48 8b 7b 30 mov 0x30(%rbx),%rdi
102a: e8 00 00 00 00 callq 102f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xfdf>
102f: 84 c0 test %al,%al
1031: 0f 84 56 05 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
1037: 48 8b 7b 38 mov 0x38(%rbx),%rdi
103b: e8 00 00 00 00 callq 1040 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xff0>
1040: 84 c0 test %al,%al
1042: 0f 84 45 05 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
1048: 48 8b 73 30 mov 0x30(%rbx),%rsi
104c: 48 89 ef mov %rbp,%rdi
104f: e8 00 00 00 00 callq 1054 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1004>
v->VectorCompareEQ(i->src2.value, hir::TypeName(i->flags));
1054: 48 8b 73 38 mov 0x38(%rbx),%rsi
1058: 0f b7 53 20 movzwl 0x20(%rbx),%edx
105c: 48 89 ef mov %rbp,%rdi
105f: e8 00 00 00 00 callq 1064 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1014>
1064: e9 17 05 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
1069: 48 8b 7b 30 mov 0x30(%rbx),%rdi
106d: e8 00 00 00 00 callq 1072 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1022>
1072: 84 c0 test %al,%al
1074: 0f 84 13 05 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantTrue()) {
107a: 48 8b 7b 30 mov 0x30(%rbx),%rdi
107e: e8 00 00 00 00 callq 1083 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1033>
1083: 84 c0 test %al,%al
1085: 0f 84 f5 04 00 00 je 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
i->Replace(&OPCODE_DEBUG_BREAK_info, i->flags);
108b: 0f b7 53 20 movzwl 0x20(%rbx),%edx
108f: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1096 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1046>
1096: eb 2d jmp 10c5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1075>
if (i->src1.value->IsConstant()) {
1098: 48 8b 7b 30 mov 0x30(%rbx),%rdi
109c: e8 00 00 00 00 callq 10a1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1051>
10a1: 84 c0 test %al,%al
10a3: 0f 84 e4 04 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantTrue()) {
10a9: 48 8b 7b 30 mov 0x30(%rbx),%rdi
10ad: e8 00 00 00 00 callq 10b2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1062>
10b2: 84 c0 test %al,%al
10b4: 0f 84 c6 04 00 00 je 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
i->Replace(&OPCODE_TRAP_info, i->flags);
10ba: 0f b7 53 20 movzwl 0x20(%rbx),%edx
10be: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 10c5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1075>
10c5: 48 89 df mov %rbx,%rdi
10c8: e8 00 00 00 00 callq 10cd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x107d>
10cd: e9 b6 04 00 00 jmpq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
if (i->src1.value->IsConstant()) {
10d2: 48 8b 7b 30 mov 0x30(%rbx),%rdi
10d6: e8 00 00 00 00 callq 10db <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x108b>
10db: 84 c0 test %al,%al
10dd: 0f 84 aa 04 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantFalse()) {
10e3: 48 8b 7b 30 mov 0x30(%rbx),%rdi
10e7: e8 00 00 00 00 callq 10ec <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x109c>
10ec: 84 c0 test %al,%al
10ee: 0f 84 8c 04 00 00 je 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
10f4: 48 8b 6b 38 mov 0x38(%rbx),%rbp
10f8: 0f b7 53 20 movzwl 0x20(%rbx),%edx
10fc: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1103 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10b3>
1103: e9 1b 01 00 00 jmpq 1223 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11d3>
if (i->src1.value->IsConstant()) {
1108: 48 8b 7b 30 mov 0x30(%rbx),%rdi
110c: e8 00 00 00 00 callq 1111 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10c1>
1111: 84 c0 test %al,%al
1113: 0f 84 74 04 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
TypeName target_type = v->type;
1119: 44 8b 75 04 mov 0x4(%rbp),%r14d
v->set_from(i->src1.value);
111d: 48 8b 73 30 mov 0x30(%rbx),%rsi
1121: 48 89 ef mov %rbp,%rdi
1124: e8 00 00 00 00 callq 1129 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10d9>
v->Cast(target_type);
1129: 48 89 ef mov %rbp,%rdi
112c: 44 89 f6 mov %r14d,%esi
112f: e8 00 00 00 00 callq 1134 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10e4>
1134: e9 47 04 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
1139: 48 8b 7b 30 mov 0x30(%rbx),%rdi
113d: e8 00 00 00 00 callq 1142 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x10f2>
1142: 84 c0 test %al,%al
1144: 0f 84 43 04 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->type != VEC128_TYPE) {
114a: 48 8b 7b 30 mov 0x30(%rbx),%rdi
114e: 83 7f 04 06 cmpl $0x6,0x4(%rdi)
1152: 0f 84 35 04 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantTrue()) {
1158: e8 00 00 00 00 callq 115d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x110d>
115d: 84 c0 test %al,%al
115f: 0f 84 22 f4 ff ff je 587 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x537>
auto src2 = i->src2.value;
1165: 48 8b 6b 38 mov 0x38(%rbx),%rbp
1169: e9 12 f0 ff ff jmpq 180 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x130>
if (i->src1.value->IsConstant()) {
116e: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1172: e8 00 00 00 00 callq 1177 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1127>
1177: 84 c0 test %al,%al
1179: 0f 84 0e 04 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_zero(VEC128_TYPE);
117f: be 06 00 00 00 mov $0x6,%esi
1184: 48 89 ef mov %rbp,%rdi
1187: e8 00 00 00 00 callq 118c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x113c>
v->VectorConvertF2I(i->src1.value,
118c: 48 8b 73 30 mov 0x30(%rbx),%rsi
!!(i->flags & ARITHMETIC_UNSIGNED));
1190: 0f b7 53 20 movzwl 0x20(%rbx),%edx
1194: 83 e2 04 and $0x4,%edx
1197: c1 ea 02 shr $0x2,%edx
v->VectorConvertF2I(i->src1.value,
119a: 48 89 ef mov %rbp,%rdi
119d: e8 00 00 00 00 callq 11a2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1152>
11a2: e9 d9 03 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
11a7: 48 8b 7b 30 mov 0x30(%rbx),%rdi
11ab: e8 00 00 00 00 callq 11b0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1160>
11b0: 84 c0 test %al,%al
11b2: 0f 84 d5 03 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
11b8: 48 8b 7b 38 mov 0x38(%rbx),%rdi
11bc: e8 00 00 00 00 callq 11c1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1171>
11c1: 84 c0 test %al,%al
11c3: 0f 84 c4 03 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
11c9: 48 8b 73 30 mov 0x30(%rbx),%rsi
11cd: 48 89 ef mov %rbp,%rdi
11d0: e8 00 00 00 00 callq 11d5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1185>
v->Sub(i->src2.value);
11d5: 48 8b 73 38 mov 0x38(%rbx),%rsi
11d9: 48 89 ef mov %rbp,%rdi
11dc: e8 00 00 00 00 callq 11e1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1191>
11e1: e9 9a 03 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
11e6: 48 8b 7b 30 mov 0x30(%rbx),%rdi
11ea: e8 00 00 00 00 callq 11ef <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x119f>
11ef: 84 c0 test %al,%al
11f1: 0f 84 96 03 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
auto function = processor_->LookupFunction(
11f7: 48 8b 44 24 10 mov 0x10(%rsp),%rax
11fc: 48 8b 78 08 mov 0x8(%rax),%rdi
uint32_t(i->src1.value->constant.i32));
1200: 48 8b 43 30 mov 0x30(%rbx),%rax
1204: 8b 70 20 mov 0x20(%rax),%esi
auto function = processor_->LookupFunction(
1207: e8 00 00 00 00 callq 120c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11bc>
if (!function) {
120c: 48 85 c0 test %rax,%rax
120f: 0f 84 78 03 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
1215: 48 89 c5 mov %rax,%rbp
1218: 0f b7 53 20 movzwl 0x20(%rbx),%edx
121c: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 1223 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11d3>
1223: 48 89 df mov %rbx,%rdi
1226: e8 00 00 00 00 callq 122b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11db>
122b: 48 89 6b 30 mov %rbp,0x30(%rbx)
122f: e9 54 03 00 00 jmpq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1234: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1238: e8 00 00 00 00 callq 123d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11ed>
123d: 84 c0 test %al,%al
123f: 0f 84 48 03 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
1245: 48 8b 7b 38 mov 0x38(%rbx),%rdi
1249: e8 00 00 00 00 callq 124e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11fe>
124e: 84 c0 test %al,%al
1250: 0f 84 37 03 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
1256: 48 8b 73 30 mov 0x30(%rbx),%rsi
125a: 48 89 ef mov %rbp,%rdi
125d: e8 00 00 00 00 callq 1262 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1212>
v->DotProduct4(i->src2.value);
1262: 48 8b 73 38 mov 0x38(%rbx),%rsi
1266: 48 89 ef mov %rbp,%rdi
1269: e8 00 00 00 00 callq 126e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x121e>
126e: e9 0d 03 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
1273: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1277: e8 00 00 00 00 callq 127c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x122c>
127c: 84 c0 test %al,%al
127e: 0f 84 09 03 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantTrue()) {
1284: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1288: e8 00 00 00 00 callq 128d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x123d>
128d: 84 c0 test %al,%al
128f: 0f 84 eb 02 00 00 je 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
auto value = i->src2.value;
1295: 48 8b 6b 38 mov 0x38(%rbx),%rbp
i->Replace(&OPCODE_CALL_INDIRECT_info, i->flags);
1299: 0f b7 53 20 movzwl 0x20(%rbx),%edx
129d: 48 8b 35 00 00 00 00 mov 0x0(%rip),%rsi # 12a4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1254>
12a4: e9 e0 ee ff ff jmpq 189 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x139>
if (i->src1.value->IsConstant()) {
12a9: 48 8b 7b 30 mov 0x30(%rbx),%rdi
12ad: e8 00 00 00 00 callq 12b2 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1262>
12b2: 84 c0 test %al,%al
12b4: 0f 84 d3 02 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
TypeName target_type = v->type;
12ba: 44 8b 75 04 mov 0x4(%rbp),%r14d
v->set_from(i->src1.value);
12be: 48 8b 73 30 mov 0x30(%rbx),%rsi
12c2: 48 89 ef mov %rbp,%rdi
12c5: e8 00 00 00 00 callq 12ca <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x127a>
v->SignExtend(target_type);
12ca: 48 89 ef mov %rbp,%rdi
12cd: 44 89 f6 mov %r14d,%esi
12d0: e8 00 00 00 00 callq 12d5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1285>
12d5: e9 a6 02 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
12da: 48 8b 7b 30 mov 0x30(%rbx),%rdi
12de: e8 00 00 00 00 callq 12e3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1293>
12e3: 84 c0 test %al,%al
12e5: 0f 84 58 f1 ff ff je 443 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3f3>
12eb: 48 8b 7b 38 mov 0x38(%rbx),%rdi
12ef: e8 00 00 00 00 callq 12f4 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12a4>
12f4: 84 c0 test %al,%al
12f6: 0f 84 47 f1 ff ff je 443 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x3f3>
v->set_from(i->src1.value);
12fc: 48 8b 73 30 mov 0x30(%rbx),%rsi
1300: 48 89 ef mov %rbp,%rdi
1303: e8 00 00 00 00 callq 1308 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12b8>
v->Xor(i->src2.value);
1308: 48 8b 73 38 mov 0x38(%rbx),%rsi
130c: 48 89 ef mov %rbp,%rdi
130f: e8 00 00 00 00 callq 1314 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12c4>
1314: e9 67 02 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
1319: 48 8b 7b 30 mov 0x30(%rbx),%rdi
131d: e8 00 00 00 00 callq 1322 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12d2>
1322: 84 c0 test %al,%al
1324: 0f 84 63 02 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
TypeName target_type = v->type;
132a: 44 8b 75 04 mov 0x4(%rbp),%r14d
v->set_from(i->src1.value);
132e: 48 8b 73 30 mov 0x30(%rbx),%rsi
1332: 48 89 ef mov %rbp,%rdi
1335: e8 00 00 00 00 callq 133a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12ea>
v->ZeroExtend(target_type);
133a: 48 89 ef mov %rbp,%rdi
133d: 44 89 f6 mov %r14d,%esi
1340: e8 00 00 00 00 callq 1345 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x12f5>
1345: e9 36 02 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
134a: 48 8b 7b 30 mov 0x30(%rbx),%rdi
134e: e8 00 00 00 00 callq 1353 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1303>
1353: 84 c0 test %al,%al
1355: 0f 84 10 ee ff ff je 16b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11b>
135b: 48 8b 7b 38 mov 0x38(%rbx),%rdi
135f: e8 00 00 00 00 callq 1364 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1314>
1364: 84 c0 test %al,%al
1366: 0f 84 ff ed ff ff je 16b <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x11b>
v->set_from(i->src1.value);
136c: 48 8b 73 30 mov 0x30(%rbx),%rsi
1370: 48 89 ef mov %rbp,%rdi
1373: e8 00 00 00 00 callq 1378 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1328>
v->Shr(i->src2.value);
1378: 48 8b 73 38 mov 0x38(%rbx),%rsi
137c: 48 89 ef mov %rbp,%rdi
137f: e8 00 00 00 00 callq 1384 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1334>
1384: e9 f7 01 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1389: 48 8b 7b 30 mov 0x30(%rbx),%rdi
138d: e8 00 00 00 00 callq 1392 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1342>
1392: 84 c0 test %al,%al
1394: 0f 84 f3 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
139a: 48 8b 7b 38 mov 0x38(%rbx),%rdi
139e: e8 00 00 00 00 callq 13a3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1353>
13a3: 84 c0 test %al,%al
13a5: 0f 84 e2 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
13ab: 48 8b 73 30 mov 0x30(%rbx),%rsi
13af: 48 89 ef mov %rbp,%rdi
13b2: e8 00 00 00 00 callq 13b7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1367>
v->VectorShr(i->src2.value, hir::TypeName(i->flags));
13b7: 48 8b 73 38 mov 0x38(%rbx),%rsi
13bb: 0f b7 53 20 movzwl 0x20(%rbx),%edx
13bf: 48 89 ef mov %rbp,%rdi
13c2: e8 00 00 00 00 callq 13c7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1377>
13c7: e9 b4 01 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
13cc: 48 8b 7b 30 mov 0x30(%rbx),%rdi
13d0: e8 00 00 00 00 callq 13d5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1385>
13d5: 84 c0 test %al,%al
13d7: 0f 84 b0 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
13dd: 48 8b 7b 38 mov 0x38(%rbx),%rdi
13e1: e8 00 00 00 00 callq 13e6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1396>
13e6: 84 c0 test %al,%al
13e8: 0f 84 9f 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
13ee: 48 8b 73 30 mov 0x30(%rbx),%rsi
13f2: 48 89 ef mov %rbp,%rdi
13f5: e8 00 00 00 00 callq 13fa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13aa>
v->Or(i->src2.value);
13fa: 48 8b 73 38 mov 0x38(%rbx),%rsi
13fe: 48 89 ef mov %rbp,%rdi
1401: e8 00 00 00 00 callq 1406 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13b6>
1406: e9 75 01 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
140b: 48 8b 7b 30 mov 0x30(%rbx),%rdi
140f: e8 00 00 00 00 callq 1414 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13c4>
1414: 84 c0 test %al,%al
1416: 0f 84 71 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
141c: 48 8b 7b 38 mov 0x38(%rbx),%rdi
1420: e8 00 00 00 00 callq 1425 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13d5>
1425: 84 c0 test %al,%al
1427: 0f 84 60 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantSLE(i->src2.value);
142d: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1431: 48 8b 73 38 mov 0x38(%rbx),%rsi
1435: e8 00 00 00 00 callq 143a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13ea>
143a: e9 29 01 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
143f: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1443: e8 00 00 00 00 callq 1448 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x13f8>
1448: 84 c0 test %al,%al
144a: 0f 84 3d 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
1450: 48 8b 7b 38 mov 0x38(%rbx),%rdi
1454: e8 00 00 00 00 callq 1459 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1409>
1459: 84 c0 test %al,%al
145b: 0f 84 2c 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantSLT(i->src2.value);
1461: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1465: 48 8b 73 38 mov 0x38(%rbx),%rsi
1469: e8 00 00 00 00 callq 146e <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x141e>
146e: e9 f5 00 00 00 jmpq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1473: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1477: e8 00 00 00 00 callq 147c <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x142c>
147c: 84 c0 test %al,%al
147e: 0f 84 09 01 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
1484: 48 8b 7b 38 mov 0x38(%rbx),%rdi
1488: e8 00 00 00 00 callq 148d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x143d>
148d: 84 c0 test %al,%al
148f: 0f 84 f8 00 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
1495: 48 8b 73 30 mov 0x30(%rbx),%rsi
1499: 48 89 ef mov %rbp,%rdi
149c: e8 00 00 00 00 callq 14a1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1451>
v->VectorRol(i->src2.value, hir::TypeName(i->flags));
14a1: 48 8b 73 38 mov 0x38(%rbx),%rsi
14a5: 0f b7 53 20 movzwl 0x20(%rbx),%edx
14a9: 48 89 ef mov %rbp,%rdi
14ac: e8 00 00 00 00 callq 14b1 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1461>
14b1: e9 ca 00 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
14b6: 48 8b 7b 30 mov 0x30(%rbx),%rdi
14ba: e8 00 00 00 00 callq 14bf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x146f>
14bf: 84 c0 test %al,%al
14c1: 0f 84 c6 00 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
14c7: 48 8b 73 30 mov 0x30(%rbx),%rsi
14cb: 48 89 ef mov %rbp,%rdi
14ce: e8 00 00 00 00 callq 14d3 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1483>
v->RSqrt();
14d3: 48 89 ef mov %rbp,%rdi
14d6: e8 00 00 00 00 callq 14db <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x148b>
14db: e9 a0 00 00 00 jmpq 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant()) {
14e0: 48 8b 7b 30 mov 0x30(%rbx),%rdi
14e4: e8 00 00 00 00 callq 14e9 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1499>
14e9: 84 c0 test %al,%al
14eb: 0f 84 9c 00 00 00 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
if (i->src1.value->IsConstantTrue()) {
14f1: 48 8b 7b 30 mov 0x30(%rbx),%rdi
14f5: e8 00 00 00 00 callq 14fa <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14aa>
14fa: 84 c0 test %al,%al
14fc: 0f 85 24 f7 ff ff jne c26 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xbd6>
1502: 31 f6 xor %esi,%esi
1504: 48 89 ef mov %rbp,%rdi
1507: eb 66 jmp 156f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x151f>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1509: 48 8b 7b 30 mov 0x30(%rbx),%rdi
150d: e8 00 00 00 00 callq 1512 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14c2>
1512: 84 c0 test %al,%al
1514: 74 77 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
1516: 48 8b 7b 38 mov 0x38(%rbx),%rdi
151a: e8 00 00 00 00 callq 151f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14cf>
151f: 84 c0 test %al,%al
1521: 74 6a je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
v->set_from(i->src1.value);
1523: 48 8b 73 30 mov 0x30(%rbx),%rsi
1527: 48 89 ef mov %rbp,%rdi
152a: e8 00 00 00 00 callq 152f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14df>
v->VectorCompareSGT(i->src2.value, hir::TypeName(i->flags));
152f: 48 8b 73 38 mov 0x38(%rbx),%rsi
1533: 0f b7 53 20 movzwl 0x20(%rbx),%edx
1537: 48 89 ef mov %rbp,%rdi
153a: e8 00 00 00 00 callq 153f <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14ef>
153f: eb 3f jmp 1580 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1530>
if (i->src1.value->IsConstant() && i->src2.value->IsConstant()) {
1541: 48 8b 7b 30 mov 0x30(%rbx),%rdi
1545: e8 00 00 00 00 callq 154a <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x14fa>
154a: 84 c0 test %al,%al
154c: 74 3f je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
154e: 48 8b 7b 38 mov 0x38(%rbx),%rdi
1552: e8 00 00 00 00 callq 1557 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1507>
1557: 84 c0 test %al,%al
1559: 74 32 je 158d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x153d>
bool value = i->src1.value->IsConstantUGT(i->src2.value);
155b: 48 8b 7b 30 mov 0x30(%rbx),%rdi
155f: 48 8b 73 38 mov 0x38(%rbx),%rsi
1563: e8 00 00 00 00 callq 1568 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1518>
1568: 48 8b 7b 28 mov 0x28(%rbx),%rdi
156c: 0f b6 f0 movzbl %al,%esi
156f: e8 00 00 00 00 callq 1574 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1524>
1574: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
157b: 00 00 00
157e: 66 90 xchg %ax,%ax
1580: 48 89 df mov %rbx,%rdi
1583: e8 00 00 00 00 callq 1588 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1538>
1588: 41 c6 04 24 01 movb $0x1,(%r12)
158d: 48 8b 5b 08 mov 0x8(%rbx),%rbx
while (i) {
1591: 48 85 db test %rbx,%rbx
1594: 0f 85 16 f1 ff ff jne 6b0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x660>
break;
}
i = i->next;
}
block = block->next;
159a: 4d 8b 7f 08 mov 0x8(%r15),%r15
while (block) {
159e: 4d 85 ff test %r15,%r15
15a1: 0f 85 f9 ea ff ff jne a0 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x50>
15a7: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
15ae: 00 00
15b0: 48 3b 44 24 40 cmp 0x40(%rsp),%rax
15b5: 75 4f jne 1606 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15b6>
}
return true;
15b7: b0 01 mov $0x1,%al
15b9: 48 83 c4 48 add $0x48,%rsp
15bd: 5b pop %rbx
15be: 41 5c pop %r12
15c0: 41 5d pop %r13
15c2: 41 5e pop %r14
15c4: 41 5f pop %r15
15c6: 5d pop %rbp
15c7: c3 retq
assert_unhandled_case(v->type);
15c8: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 15cf <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x157f>
15cf: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 15d6 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1586>
15d6: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 15dd <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x158d>
15dd: ba 0b 01 00 00 mov $0x10b,%edx
15e2: e8 00 00 00 00 callq 15e7 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x1597>
assert_false(i->flags & LOAD_STORE_BYTE_SWAP);
15e7: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 15ee <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x159e>
15ee: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 15f5 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15a5>
15f5: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 15fc <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15ac>
15fc: ba d7 00 00 00 mov $0xd7,%edx
1601: e8 00 00 00 00 callq 1606 <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0x15b6>
1606: e8 00 00 00 00 callq 160b <.L__PRETTY_FUNCTION__._ZNK2xe3cpu3hir5Value13IsConstantOneEv+0x1109>
Disassembly of section .text.startup:
0000000000000000 <__cxx_global_var_init>:
DEFINE_bool(inline_mmio_access, true, "Inline constant MMIO loads and stores.");
0: 50 push %rax
1: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 8 <__cxx_global_var_init+0x8>
8: 48 89 04 24 mov %rax,(%rsp)
c: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 13 <__cxx_global_var_init+0x13>
13: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 1a <__cxx_global_var_init+0x1a>
1a: 48 8d 15 00 00 00 00 lea 0x0(%rip),%rdx # 21 <__cxx_global_var_init+0x21>
21: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 28 <__cxx_global_var_init+0x28>
28: 4c 8d 05 00 00 00 00 lea 0x0(%rip),%r8 # 2f <__cxx_global_var_init+0x2f>
2f: 4c 8d 0d 00 00 00 00 lea 0x0(%rip),%r9 # 36 <__cxx_global_var_init+0x36>
36: e8 00 00 00 00 callq 3b <__cxx_global_var_init+0x3b>
3b: 58 pop %rax
3c: c3 retq
3d: 0f 1f 00 nopl (%rax)
0000000000000040 <_GLOBAL__sub_I_constant_propagation_pass.cc>:
40: eb be jmp 0 <__cxx_global_var_init>
Disassembly of section .text._ZNK2xe3cpu3hir10HIRBuilder11first_blockEv:
0000000000000000 <xe::cpu::hir::HIRBuilder::first_block() const>:
std::vector<Value*>& locals() __attribute__ ((optnone)) { return locals_; }
uint32_t max_value_ordinal() const __attribute__ ((optnone)) { return next_value_ordinal_; }
Block* first_block() const __attribute__ ((optnone)) { return block_head_; }
0: 48 89 7c 24 f8 mov %rdi,-0x8(%rsp)
5: 48 8b 44 24 f8 mov -0x8(%rsp),%rax
a: 48 8b 40 38 mov 0x38(%rax),%rax
e: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value10IsConstantEv:
0000000000000000 <xe::cpu::hir::Value::IsConstant() const>:
type = other->type;
flags = other->flags;
constant.v128 = other->constant.v128;
}
inline bool IsConstant() const { return !!(flags & VALUE_IS_CONSTANT); }
0: 8a 47 08 mov 0x8(%rdi),%al
3: 24 02 and $0x2,%al
5: d0 e8 shr %al
7: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value14IsConstantTrueEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantTrue() const>:
bool IsConstantTrue() const {
0: 50 push %rax
if (type == VEC128_TYPE) {
1: 8b 47 04 mov 0x4(%rdi),%eax
4: 83 f8 06 cmp $0x6,%eax
7: 74 65 je 6e <xe::cpu::hir::Value::IsConstantTrue() const+0x6e>
assert_always();
}
if (flags & VALUE_IS_CONSTANT) {
9: f6 47 08 02 testb $0x2,0x8(%rdi)
d: 75 04 jne 13 <xe::cpu::hir::Value::IsConstantTrue() const+0x13>
f: 31 c0 xor %eax,%eax
return false;
}
} else {
return false;
}
}
11: 59 pop %rcx
12: c3 retq
switch (type) {
13: 83 f8 05 cmp $0x5,%eax
16: 77 75 ja 8d <xe::cpu::hir::Value::IsConstantTrue() const+0x8d>
18: 89 c0 mov %eax,%eax
1a: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 21 <xe::cpu::hir::Value::IsConstantTrue() const+0x21>
21: 48 63 04 81 movslq (%rcx,%rax,4),%rax
25: 48 01 c8 add %rcx,%rax
28: ff e0 jmpq *%rax
return !!constant.i8;
2a: 80 7f 20 00 cmpb $0x0,0x20(%rdi)
2e: eb 25 jmp 55 <xe::cpu::hir::Value::IsConstantTrue() const+0x55>
30: c5 f8 57 c0 vxorps %xmm0,%xmm0,%xmm0
return !!constant.f32;
34: c5 fa c2 47 20 04 vcmpneqss 0x20(%rdi),%xmm0,%xmm0
3a: c5 f9 7e c0 vmovd %xmm0,%eax
3e: 83 e0 01 and $0x1,%eax
}
41: 59 pop %rcx
42: c3 retq
return !!constant.i32;
43: 83 7f 20 00 cmpl $0x0,0x20(%rdi)
47: eb 0c jmp 55 <xe::cpu::hir::Value::IsConstantTrue() const+0x55>
return !!constant.i64;
49: 48 83 7f 20 00 cmpq $0x0,0x20(%rdi)
4e: eb 05 jmp 55 <xe::cpu::hir::Value::IsConstantTrue() const+0x55>
return !!constant.i16;
50: 66 83 7f 20 00 cmpw $0x0,0x20(%rdi)
55: 0f 95 c0 setne %al
}
58: 59 pop %rcx
59: c3 retq
5a: c5 f9 57 c0 vxorpd %xmm0,%xmm0,%xmm0
return !!constant.f64;
5e: c5 fb c2 47 20 04 vcmpneqsd 0x20(%rdi),%xmm0,%xmm0
64: c4 e1 f9 7e c0 vmovq %xmm0,%rax
69: 83 e0 01 and $0x1,%eax
}
6c: 59 pop %rcx
6d: c3 retq
assert_always();
6e: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 75 <xe::cpu::hir::Value::IsConstantTrue() const+0x75>
75: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 7c <xe::cpu::hir::Value::IsConstantTrue() const+0x7c>
7c: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 83 <xe::cpu::hir::Value::IsConstantTrue() const+0x83>
83: ba b6 00 00 00 mov $0xb6,%edx
88: e8 00 00 00 00 callq 8d <xe::cpu::hir::Value::IsConstantTrue() const+0x8d>
assert_unhandled_case(type);
8d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 94 <xe::cpu::hir::Value::IsConstantTrue() const+0x94>
94: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 9b <xe::cpu::hir::Value::IsConstantTrue() const+0x9b>
9b: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # a2 <xe::cpu::hir::Value::IsConstantTrue() const+0xa2>
a2: ba c9 00 00 00 mov $0xc9,%edx
a7: e8 00 00 00 00 callq ac <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0xc>
Disassembly of section .text._ZNK2xe3cpu3hir5Value15IsConstantFalseEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantFalse() const>:
bool IsConstantFalse() const {
if (flags & VALUE_IS_CONSTANT) {
0: f6 47 08 02 testb $0x2,0x8(%rdi)
4: 75 03 jne 9 <xe::cpu::hir::Value::IsConstantFalse() const+0x9>
6: 31 c0 xor %eax,%eax
return false;
}
} else {
return false;
}
}
8: c3 retq
switch (type) {
9: 8b 47 04 mov 0x4(%rdi),%eax
c: 48 83 f8 06 cmp $0x6,%rax
10: 77 6a ja 7c <xe::cpu::hir::Value::IsConstantFalse() const+0x7c>
12: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 19 <xe::cpu::hir::Value::IsConstantFalse() const+0x19>
19: 48 63 04 81 movslq (%rcx,%rax,4),%rax
1d: 48 01 c8 add %rcx,%rax
20: ff e0 jmpq *%rax
return !constant.i8;
22: 80 7f 20 00 cmpb $0x0,0x20(%rdi)
26: 0f 94 c0 sete %al
}
29: c3 retq
2a: c5 f8 57 c0 vxorps %xmm0,%xmm0,%xmm0
return !constant.f32;
2e: c5 fa c2 47 20 00 vcmpeqss 0x20(%rdi),%xmm0,%xmm0
34: c5 f9 7e c0 vmovd %xmm0,%eax
38: 83 e0 01 and $0x1,%eax
}
3b: c3 retq
return !constant.i32;
3c: 83 7f 20 00 cmpl $0x0,0x20(%rdi)
40: 0f 94 c0 sete %al
}
43: c3 retq
return !constant.i16;
44: 66 83 7f 20 00 cmpw $0x0,0x20(%rdi)
49: 0f 94 c0 sete %al
}
4c: c3 retq
return !constant.i64;
4d: 48 83 7f 20 00 cmpq $0x0,0x20(%rdi)
52: 0f 94 c0 sete %al
}
55: c3 retq
56: c5 f9 57 c0 vxorpd %xmm0,%xmm0,%xmm0
return !constant.f64;
5a: c5 fb c2 47 20 00 vcmpeqsd 0x20(%rdi),%xmm0,%xmm0
60: c4 e1 f9 7e c0 vmovq %xmm0,%rax
65: 83 e0 01 and $0x1,%eax
}
68: c3 retq
return !(constant.v128.low || constant.v128.high);
69: 48 83 7f 20 00 cmpq $0x0,0x20(%rdi)
6e: 74 03 je 73 <xe::cpu::hir::Value::IsConstantFalse() const+0x73>
70: 31 c0 xor %eax,%eax
}
72: c3 retq
return !(constant.v128.low || constant.v128.high);
73: 48 83 7f 28 00 cmpq $0x0,0x28(%rdi)
78: 0f 94 c0 sete %al
}
7b: c3 retq
7c: 50 push %rax
assert_unhandled_case(type);
7d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 84 <xe::cpu::hir::Value::IsConstantFalse() const+0x84>
84: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 8b <xe::cpu::hir::Value::IsConstantFalse() const+0x8b>
8b: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 92 <xe::cpu::hir::Value::IsConstantFalse() const+0x92>
92: ba e2 00 00 00 mov $0xe2,%edx
97: e8 00 00 00 00 callq 9c <.L.str.4+0x1f>
Disassembly of section .text._ZN2xe3cpu3hir5Value8set_fromEPKS2_:
0000000000000000 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)>:
void set_from(const Value* other) {
0: 41 56 push %r14
2: 53 push %rbx
3: 50 push %rax
4: 48 89 f3 mov %rsi,%rbx
7: 49 89 fe mov %rdi,%r14
assert_true(other->IsConstant());
a: 48 89 f7 mov %rsi,%rdi
d: e8 00 00 00 00 callq 12 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x12>
12: 84 c0 test %al,%al
14: 74 28 je 3e <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x3e>
type = other->type;
16: 8b 43 04 mov 0x4(%rbx),%eax
19: 41 89 46 04 mov %eax,0x4(%r14)
flags = other->flags;
1d: 8b 43 08 mov 0x8(%rbx),%eax
20: 41 89 46 08 mov %eax,0x8(%r14)
constant.v128 = other->constant.v128;
24: 48 83 c3 20 add $0x20,%rbx
28: 49 83 c6 20 add $0x20,%r14
2c: 4c 89 f7 mov %r14,%rdi
2f: 48 89 de mov %rbx,%rsi
32: 48 83 c4 08 add $0x8,%rsp
36: 5b pop %rbx
37: 41 5e pop %r14
39: e9 00 00 00 00 jmpq 3e <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x3e>
assert_true(other->IsConstant());
3e: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 45 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x45>
45: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 4c <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x4c>
4c: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 53 <xe::cpu::hir::Value::set_from(xe::cpu::hir::Value const*)+0x53>
53: ba ad 00 00 00 mov $0xad,%edx
58: e8 00 00 00 00 callq 5d <xe::cpu::compiler::passes::ConstantPropagationPass::Run(xe::cpu::hir::HIRBuilder*, bool&)+0xd>
Disassembly of section .text._ZNK2xe3cpu9Processor6memoryEv:
0000000000000000 <xe::cpu::Processor::memory() const>:
class Processor {
public:
Processor(Memory* memory, ExportResolver* export_resolver);
~Processor();
Memory* memory() const { return memory_; }
0: 48 8b 07 mov (%rdi),%rax
3: c3 retq
Disassembly of section .text._ZNK2xe6Memory16TranslateVirtualEj:
0000000000000000 <xe::Memory::TranslateVirtual(unsigned int) const>:
// Translates a guest virtual address to a host address that can be accessed
// as a normal pointer.
// Note that the contents at the specified host address are big-endian.
inline uint8_t* TranslateVirtual(uint32_t guest_address) const {
return virtual_membase_ + guest_address;
0: 89 f0 mov %esi,%eax
2: 48 03 47 28 add 0x28(%rdi),%rax
6: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEh:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned char)>:
type = INT8_TYPE;
0: c7 47 04 00 00 00 00 movl $0x0,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
7: 80 4f 08 02 orb $0x2,0x8(%rdi)
constant.i64 = uint64_t(value);
b: 89 f0 mov %esi,%eax
d: 48 89 47 20 mov %rax,0x20(%rdi)
}
11: c3 retq
Disassembly of section .text._ZN2xe4loadIhEET_PKv:
0000000000000000 <unsigned char xe::load<unsigned char>(void const*)>:
inline int8_t load<int8_t>(const void* mem) {
return *reinterpret_cast<const int8_t*>(mem);
}
template <>
inline uint8_t load<uint8_t>(const void* mem) {
return *reinterpret_cast<const uint8_t*>(mem);
0: 8a 07 mov (%rdi),%al
2: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEt:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned short)>:
type = INT16_TYPE;
0: c7 47 04 01 00 00 00 movl $0x1,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
7: 80 4f 08 02 orb $0x2,0x8(%rdi)
constant.i64 = uint64_t(value);
b: 89 f0 mov %esi,%eax
d: 48 89 47 20 mov %rax,0x20(%rdi)
}
11: c3 retq
Disassembly of section .text._ZN2xe4loadItEET_PKv:
0000000000000000 <unsigned short xe::load<unsigned short>(void const*)>:
inline int16_t load<int16_t>(const void* mem) {
return *reinterpret_cast<const int16_t*>(mem);
}
template <>
inline uint16_t load<uint16_t>(const void* mem) {
return *reinterpret_cast<const uint16_t*>(mem);
0: 0f b7 07 movzwl (%rdi),%eax
3: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEj:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned int)>:
type = INT32_TYPE;
0: c7 47 04 02 00 00 00 movl $0x2,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
7: 80 4f 08 02 orb $0x2,0x8(%rdi)
constant.i64 = uint64_t(value);
b: 89 f0 mov %esi,%eax
d: 48 89 47 20 mov %rax,0x20(%rdi)
}
11: c3 retq
Disassembly of section .text._ZN2xe4loadIjEET_PKv:
0000000000000000 <unsigned int xe::load<unsigned int>(void const*)>:
inline int32_t load<int32_t>(const void* mem) {
return *reinterpret_cast<const int32_t*>(mem);
}
template <>
inline uint32_t load<uint32_t>(const void* mem) {
return *reinterpret_cast<const uint32_t*>(mem);
0: 8b 07 mov (%rdi),%eax
2: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantEm:
0000000000000000 <xe::cpu::hir::Value::set_constant(unsigned long)>:
type = INT64_TYPE;
0: c7 47 04 03 00 00 00 movl $0x3,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
7: 80 4f 08 02 orb $0x2,0x8(%rdi)
constant.i64 = value;
b: 48 89 77 20 mov %rsi,0x20(%rdi)
}
f: c3 retq
Disassembly of section .text._ZN2xe4loadImEET_PKv:
0000000000000000 <unsigned long xe::load<unsigned long>(void const*)>:
inline int64_t load<int64_t>(const void* mem) {
return *reinterpret_cast<const int64_t*>(mem);
}
template <>
inline uint64_t load<uint64_t>(const void* mem) {
return *reinterpret_cast<const uint64_t*>(mem);
0: 48 8b 07 mov (%rdi),%rax
3: c3 retq
Disassembly of section .text._ZN2xe3cpu3hir5Value12set_constantERKNS_8vec128_sE:
0000000000000000 <xe::cpu::hir::Value::set_constant(xe::vec128_s const&)>:
type = VEC128_TYPE;
0: c7 47 04 06 00 00 00 movl $0x6,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
7: 80 4f 08 02 orb $0x2,0x8(%rdi)
constant.v128 = value;
b: 48 83 c7 20 add $0x20,%rdi
f: e9 00 00 00 00 jmpq 14 <.L.str.1+0x1>
Disassembly of section .text._ZSt5isnanf:
0000000000000000 <std::isnan(float)>:
#endif
#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP
constexpr bool
isnan(float __x)
{ return __builtin_isnan(__x); }
0: c5 f8 2e c0 vucomiss %xmm0,%xmm0
4: 0f 9a c0 setp %al
7: c3 retq
Disassembly of section .text._ZSt5isnand:
0000000000000000 <std::isnan(double)>:
&& !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC
using ::isnan;
#else
constexpr bool
isnan(double __x)
{ return __builtin_isnan(__x); }
0: c5 f9 2e c0 vucomisd %xmm0,%xmm0
4: 0f 9a c0 setp %al
7: c3 retq
Disassembly of section .text._ZNK2xe3cpu3hir5Value12IsConstantEQEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const>:
}
} else {
return false;
}
}
bool IsConstantEQ(Value* other) const {
0: 50 push %rax
if (type == VEC128_TYPE) {
1: 8b 47 04 mov 0x4(%rdi),%eax
4: 83 f8 06 cmp $0x6,%eax
7: 74 7f je 88 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x88>
assert_always();
}
if ((flags & VALUE_IS_CONSTANT) && (other->flags & VALUE_IS_CONSTANT)) {
9: f6 47 08 02 testb $0x2,0x8(%rdi)
d: 75 04 jne 13 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x13>
f: 31 c0 xor %eax,%eax
return false;
}
} else {
return false;
}
}
11: 59 pop %rcx
12: c3 retq
if ((flags & VALUE_IS_CONSTANT) && (other->flags & VALUE_IS_CONSTANT)) {
13: f6 46 08 02 testb $0x2,0x8(%rsi)
17: 75 04 jne 1d <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x1d>
19: 31 c0 xor %eax,%eax
}
1b: 59 pop %rcx
1c: c3 retq
switch (type) {
1d: 83 f8 05 cmp $0x5,%eax
20: 0f 87 81 00 00 00 ja a7 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0xa7>
26: 89 c0 mov %eax,%eax
28: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 2f <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x2f>
2f: 48 63 04 81 movslq (%rcx,%rax,4),%rax
33: 48 01 c8 add %rcx,%rax
36: ff e0 jmpq *%rax
return constant.i8 == other->constant.i8;
38: 8a 47 20 mov 0x20(%rdi),%al
3b: 3a 46 20 cmp 0x20(%rsi),%al
3e: eb 2e jmp 6e <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x6e>
return constant.f32 == other->constant.f32;
40: c5 fa 10 46 20 vmovss 0x20(%rsi),%xmm0
45: c5 fa c2 47 20 00 vcmpeqss 0x20(%rdi),%xmm0,%xmm0
4b: c5 f9 7e c0 vmovd %xmm0,%eax
4f: 83 e0 01 and $0x1,%eax
}
52: 59 pop %rcx
53: c3 retq
return constant.i32 == other->constant.i32;
54: 8b 47 20 mov 0x20(%rdi),%eax
57: 3b 46 20 cmp 0x20(%rsi),%eax
5a: eb 12 jmp 6e <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x6e>
return constant.i16 == other->constant.i16;
5c: 0f b7 47 20 movzwl 0x20(%rdi),%eax
60: 66 3b 46 20 cmp 0x20(%rsi),%ax
64: eb 08 jmp 6e <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x6e>
return constant.i64 == other->constant.i64;
66: 48 8b 47 20 mov 0x20(%rdi),%rax
6a: 48 3b 46 20 cmp 0x20(%rsi),%rax
6e: 0f 94 c0 sete %al
}
71: 59 pop %rcx
72: c3 retq
return constant.f64 == other->constant.f64;
73: c5 fb 10 46 20 vmovsd 0x20(%rsi),%xmm0
78: c5 fb c2 47 20 00 vcmpeqsd 0x20(%rdi),%xmm0,%xmm0
7e: c4 e1 f9 7e c0 vmovq %xmm0,%rax
83: 83 e0 01 and $0x1,%eax
}
86: 59 pop %rcx
87: c3 retq
assert_always();
88: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 8f <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x8f>
8f: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 96 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x96>
96: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9d <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0x9d>
9d: ba 1b 01 00 00 mov $0x11b,%edx
a2: e8 00 00 00 00 callq a7 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0xa7>
assert_unhandled_case(type);
a7: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # ae <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0xae>
ae: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # b5 <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0xb5>
b5: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # bc <xe::cpu::hir::Value::IsConstantEQ(xe::cpu::hir::Value*) const+0xbc>
bc: ba 2c 01 00 00 mov $0x12c,%edx
c1: e8 00 00 00 00 callq c6 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x26>
Disassembly of section .text._ZNK2xe3cpu3hir5Value12IsConstantNEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const>:
bool IsConstantNE(Value* other) const {
0: 50 push %rax
if (type == VEC128_TYPE) {
1: 8b 47 04 mov 0x4(%rdi),%eax
4: 83 f8 06 cmp $0x6,%eax
7: 74 7f je 88 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x88>
assert_always();
}
if ((flags & VALUE_IS_CONSTANT) && (other->flags & VALUE_IS_CONSTANT)) {
9: f6 47 08 02 testb $0x2,0x8(%rdi)
d: 75 04 jne 13 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x13>
f: 31 c0 xor %eax,%eax
return false;
}
} else {
return false;
}
}
11: 59 pop %rcx
12: c3 retq
if ((flags & VALUE_IS_CONSTANT) && (other->flags & VALUE_IS_CONSTANT)) {
13: f6 46 08 02 testb $0x2,0x8(%rsi)
17: 75 04 jne 1d <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x1d>
19: 31 c0 xor %eax,%eax
}
1b: 59 pop %rcx
1c: c3 retq
switch (type) {
1d: 83 f8 05 cmp $0x5,%eax
20: 0f 87 81 00 00 00 ja a7 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0xa7>
26: 89 c0 mov %eax,%eax
28: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 2f <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x2f>
2f: 48 63 04 81 movslq (%rcx,%rax,4),%rax
33: 48 01 c8 add %rcx,%rax
36: ff e0 jmpq *%rax
return constant.i8 != other->constant.i8;
38: 8a 47 20 mov 0x20(%rdi),%al
3b: 3a 46 20 cmp 0x20(%rsi),%al
3e: eb 2e jmp 6e <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x6e>
return constant.f32 != other->constant.f32;
40: c5 fa 10 46 20 vmovss 0x20(%rsi),%xmm0
45: c5 fa c2 47 20 04 vcmpneqss 0x20(%rdi),%xmm0,%xmm0
4b: c5 f9 7e c0 vmovd %xmm0,%eax
4f: 83 e0 01 and $0x1,%eax
}
52: 59 pop %rcx
53: c3 retq
return constant.i32 != other->constant.i32;
54: 8b 47 20 mov 0x20(%rdi),%eax
57: 3b 46 20 cmp 0x20(%rsi),%eax
5a: eb 12 jmp 6e <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x6e>
return constant.i16 != other->constant.i16;
5c: 0f b7 47 20 movzwl 0x20(%rdi),%eax
60: 66 3b 46 20 cmp 0x20(%rsi),%ax
64: eb 08 jmp 6e <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x6e>
return constant.i64 != other->constant.i64;
66: 48 8b 47 20 mov 0x20(%rdi),%rax
6a: 48 3b 46 20 cmp 0x20(%rsi),%rax
6e: 0f 95 c0 setne %al
}
71: 59 pop %rcx
72: c3 retq
return constant.f64 != other->constant.f64;
73: c5 fb 10 46 20 vmovsd 0x20(%rsi),%xmm0
78: c5 fb c2 47 20 04 vcmpneqsd 0x20(%rdi),%xmm0,%xmm0
7e: c4 e1 f9 7e c0 vmovq %xmm0,%rax
83: 83 e0 01 and $0x1,%eax
}
86: 59 pop %rcx
87: c3 retq
assert_always();
88: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 8f <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x8f>
8f: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 96 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x96>
96: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9d <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0x9d>
9d: ba 35 01 00 00 mov $0x135,%edx
a2: e8 00 00 00 00 callq a7 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0xa7>
assert_unhandled_case(type);
a7: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # ae <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0xae>
ae: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # b5 <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0xb5>
b5: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # bc <xe::cpu::hir::Value::IsConstantNE(xe::cpu::hir::Value*) const+0xbc>
bc: ba 46 01 00 00 mov $0x146,%edx
c1: e8 00 00 00 00 callq c6 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x26>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSLTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const>:
bool IsConstantSLT(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 64 je 6b <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x6b>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 5e je 6b <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x6b>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 74 ja 8a <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x8a>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return constant.i8 < other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 29 jmp 57 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x57>
case INT32_TYPE:
return constant.i32 < other->constant.i32;
case INT64_TYPE:
return constant.i64 < other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 < other->constant.f32;
2e: c5 fa 10 46 20 vmovss 0x20(%rsi),%xmm0
33: c5 f8 2e 47 20 vucomiss 0x20(%rdi),%xmm0
38: 0f 97 c0 seta %al
return constant.f64 < other->constant.f64;
default:
assert_always();
return false;
}
}
3b: 59 pop %rcx
3c: c3 retq
return constant.i32 < other->constant.i32;
3d: 8b 47 20 mov 0x20(%rdi),%eax
40: 3b 46 20 cmp 0x20(%rsi),%eax
43: eb 12 jmp 57 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x57>
return constant.i64 < other->constant.i64;
45: 48 8b 47 20 mov 0x20(%rdi),%rax
49: 48 3b 46 20 cmp 0x20(%rsi),%rax
4d: eb 08 jmp 57 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x57>
return constant.i16 < other->constant.i16;
4f: 0f b7 47 20 movzwl 0x20(%rdi),%eax
53: 66 3b 46 20 cmp 0x20(%rsi),%ax
57: 0f 9c c0 setl %al
}
5a: 59 pop %rcx
5b: c3 retq
return constant.f64 < other->constant.f64;
5c: c5 fb 10 46 20 vmovsd 0x20(%rsi),%xmm0
61: c5 f9 2e 47 20 vucomisd 0x20(%rdi),%xmm0
66: 0f 97 c0 seta %al
}
69: 59 pop %rcx
6a: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
6b: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 72 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x72>
72: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 79 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x79>
79: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 80 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x80>
80: ba 4e 01 00 00 mov $0x14e,%edx
85: e8 00 00 00 00 callq 8a <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x8a>
assert_always();
8a: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 91 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x91>
91: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 98 <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x98>
98: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9f <xe::cpu::hir::Value::IsConstantSLT(xe::cpu::hir::Value*) const+0x9f>
9f: ba 5d 01 00 00 mov $0x15d,%edx
a4: e8 00 00 00 00 callq a9 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x9>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSLEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const>:
bool IsConstantSLE(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 64 je 6b <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x6b>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 5e je 6b <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x6b>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 74 ja 8a <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x8a>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return constant.i8 <= other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 29 jmp 57 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x57>
case INT32_TYPE:
return constant.i32 <= other->constant.i32;
case INT64_TYPE:
return constant.i64 <= other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 <= other->constant.f32;
2e: c5 fa 10 46 20 vmovss 0x20(%rsi),%xmm0
33: c5 f8 2e 47 20 vucomiss 0x20(%rdi),%xmm0
38: 0f 93 c0 setae %al
return constant.f64 <= other->constant.f64;
default:
assert_always();
return false;
}
}
3b: 59 pop %rcx
3c: c3 retq
return constant.i32 <= other->constant.i32;
3d: 8b 47 20 mov 0x20(%rdi),%eax
40: 3b 46 20 cmp 0x20(%rsi),%eax
43: eb 12 jmp 57 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x57>
return constant.i64 <= other->constant.i64;
45: 48 8b 47 20 mov 0x20(%rdi),%rax
49: 48 3b 46 20 cmp 0x20(%rsi),%rax
4d: eb 08 jmp 57 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x57>
return constant.i16 <= other->constant.i16;
4f: 0f b7 47 20 movzwl 0x20(%rdi),%eax
53: 66 3b 46 20 cmp 0x20(%rsi),%ax
57: 0f 9e c0 setle %al
}
5a: 59 pop %rcx
5b: c3 retq
return constant.f64 <= other->constant.f64;
5c: c5 fb 10 46 20 vmovsd 0x20(%rsi),%xmm0
61: c5 f9 2e 47 20 vucomisd 0x20(%rdi),%xmm0
66: 0f 93 c0 setae %al
}
69: 59 pop %rcx
6a: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
6b: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 72 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x72>
72: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 79 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x79>
79: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 80 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x80>
80: ba 62 01 00 00 mov $0x162,%edx
85: e8 00 00 00 00 callq 8a <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x8a>
assert_always();
8a: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 91 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x91>
91: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 98 <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x98>
98: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9f <xe::cpu::hir::Value::IsConstantSLE(xe::cpu::hir::Value*) const+0x9f>
9f: ba 71 01 00 00 mov $0x171,%edx
a4: e8 00 00 00 00 callq a9 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x9>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSGTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const>:
bool IsConstantSGT(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 64 je 6b <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x6b>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 5e je 6b <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x6b>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 74 ja 8a <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x8a>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return constant.i8 > other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 29 jmp 57 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x57>
case INT32_TYPE:
return constant.i32 > other->constant.i32;
case INT64_TYPE:
return constant.i64 > other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 > other->constant.f32;
2e: c5 fa 10 47 20 vmovss 0x20(%rdi),%xmm0
33: c5 f8 2e 46 20 vucomiss 0x20(%rsi),%xmm0
38: 0f 97 c0 seta %al
return constant.f64 > other->constant.f64;
default:
assert_always();
return false;
}
}
3b: 59 pop %rcx
3c: c3 retq
return constant.i32 > other->constant.i32;
3d: 8b 47 20 mov 0x20(%rdi),%eax
40: 3b 46 20 cmp 0x20(%rsi),%eax
43: eb 12 jmp 57 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x57>
return constant.i64 > other->constant.i64;
45: 48 8b 47 20 mov 0x20(%rdi),%rax
49: 48 3b 46 20 cmp 0x20(%rsi),%rax
4d: eb 08 jmp 57 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x57>
return constant.i16 > other->constant.i16;
4f: 0f b7 47 20 movzwl 0x20(%rdi),%eax
53: 66 3b 46 20 cmp 0x20(%rsi),%ax
57: 0f 9f c0 setg %al
}
5a: 59 pop %rcx
5b: c3 retq
return constant.f64 > other->constant.f64;
5c: c5 fb 10 47 20 vmovsd 0x20(%rdi),%xmm0
61: c5 f9 2e 46 20 vucomisd 0x20(%rsi),%xmm0
66: 0f 97 c0 seta %al
}
69: 59 pop %rcx
6a: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
6b: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 72 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x72>
72: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 79 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x79>
79: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 80 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x80>
80: ba 76 01 00 00 mov $0x176,%edx
85: e8 00 00 00 00 callq 8a <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x8a>
assert_always();
8a: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 91 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x91>
91: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 98 <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x98>
98: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9f <xe::cpu::hir::Value::IsConstantSGT(xe::cpu::hir::Value*) const+0x9f>
9f: ba 85 01 00 00 mov $0x185,%edx
a4: e8 00 00 00 00 callq a9 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x9>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantSGEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const>:
bool IsConstantSGE(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 64 je 6b <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x6b>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 5e je 6b <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x6b>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 74 ja 8a <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x8a>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return constant.i8 >= other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 29 jmp 57 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x57>
case INT32_TYPE:
return constant.i32 >= other->constant.i32;
case INT64_TYPE:
return constant.i64 >= other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 >= other->constant.f32;
2e: c5 fa 10 47 20 vmovss 0x20(%rdi),%xmm0
33: c5 f8 2e 46 20 vucomiss 0x20(%rsi),%xmm0
38: 0f 93 c0 setae %al
return constant.f64 >= other->constant.f64;
default:
assert_always();
return false;
}
}
3b: 59 pop %rcx
3c: c3 retq
return constant.i32 >= other->constant.i32;
3d: 8b 47 20 mov 0x20(%rdi),%eax
40: 3b 46 20 cmp 0x20(%rsi),%eax
43: eb 12 jmp 57 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x57>
return constant.i64 >= other->constant.i64;
45: 48 8b 47 20 mov 0x20(%rdi),%rax
49: 48 3b 46 20 cmp 0x20(%rsi),%rax
4d: eb 08 jmp 57 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x57>
return constant.i16 >= other->constant.i16;
4f: 0f b7 47 20 movzwl 0x20(%rdi),%eax
53: 66 3b 46 20 cmp 0x20(%rsi),%ax
57: 0f 9d c0 setge %al
}
5a: 59 pop %rcx
5b: c3 retq
return constant.f64 >= other->constant.f64;
5c: c5 fb 10 47 20 vmovsd 0x20(%rdi),%xmm0
61: c5 f9 2e 46 20 vucomisd 0x20(%rsi),%xmm0
66: 0f 93 c0 setae %al
}
69: 59 pop %rcx
6a: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
6b: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 72 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x72>
72: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 79 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x79>
79: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 80 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x80>
80: ba 8a 01 00 00 mov $0x18a,%edx
85: e8 00 00 00 00 callq 8a <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x8a>
assert_always();
8a: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 91 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x91>
91: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 98 <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x98>
98: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9f <xe::cpu::hir::Value::IsConstantSGE(xe::cpu::hir::Value*) const+0x9f>
9f: ba 99 01 00 00 mov $0x199,%edx
a4: e8 00 00 00 00 callq a9 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x9>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantULTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const>:
bool IsConstantULT(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 64 je 6b <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x6b>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 5e je 6b <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x6b>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 74 ja 8a <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x8a>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return (uint8_t)constant.i8 < (uint8_t)other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 29 jmp 57 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x57>
case INT32_TYPE:
return (uint32_t)constant.i32 < (uint32_t)other->constant.i32;
case INT64_TYPE:
return (uint64_t)constant.i64 < (uint64_t)other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 < other->constant.f32;
2e: c5 fa 10 46 20 vmovss 0x20(%rsi),%xmm0
33: c5 f8 2e 47 20 vucomiss 0x20(%rdi),%xmm0
38: 0f 97 c0 seta %al
return constant.f64 < other->constant.f64;
default:
assert_always();
return false;
}
}
3b: 59 pop %rcx
3c: c3 retq
return (uint32_t)constant.i32 < (uint32_t)other->constant.i32;
3d: 8b 47 20 mov 0x20(%rdi),%eax
40: 3b 46 20 cmp 0x20(%rsi),%eax
43: eb 12 jmp 57 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x57>
return (uint64_t)constant.i64 < (uint64_t)other->constant.i64;
45: 48 8b 47 20 mov 0x20(%rdi),%rax
49: 48 3b 46 20 cmp 0x20(%rsi),%rax
4d: eb 08 jmp 57 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x57>
return (uint16_t)constant.i16 < (uint16_t)other->constant.i16;
4f: 0f b7 47 20 movzwl 0x20(%rdi),%eax
53: 66 3b 46 20 cmp 0x20(%rsi),%ax
57: 0f 92 c0 setb %al
}
5a: 59 pop %rcx
5b: c3 retq
return constant.f64 < other->constant.f64;
5c: c5 fb 10 46 20 vmovsd 0x20(%rsi),%xmm0
61: c5 f9 2e 47 20 vucomisd 0x20(%rdi),%xmm0
66: 0f 97 c0 seta %al
}
69: 59 pop %rcx
6a: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
6b: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 72 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x72>
72: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 79 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x79>
79: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 80 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x80>
80: ba 9e 01 00 00 mov $0x19e,%edx
85: e8 00 00 00 00 callq 8a <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x8a>
assert_always();
8a: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 91 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x91>
91: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 98 <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x98>
98: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9f <xe::cpu::hir::Value::IsConstantULT(xe::cpu::hir::Value*) const+0x9f>
9f: ba ad 01 00 00 mov $0x1ad,%edx
a4: e8 00 00 00 00 callq a9 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x9>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantULEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const>:
bool IsConstantULE(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 64 je 6b <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x6b>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 5e je 6b <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x6b>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 74 ja 8a <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x8a>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return (uint8_t)constant.i8 <= (uint8_t)other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 29 jmp 57 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x57>
case INT32_TYPE:
return (uint32_t)constant.i32 <= (uint32_t)other->constant.i32;
case INT64_TYPE:
return (uint64_t)constant.i64 <= (uint64_t)other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 <= other->constant.f32;
2e: c5 fa 10 46 20 vmovss 0x20(%rsi),%xmm0
33: c5 f8 2e 47 20 vucomiss 0x20(%rdi),%xmm0
38: 0f 93 c0 setae %al
return constant.f64 <= other->constant.f64;
default:
assert_always();
return false;
}
}
3b: 59 pop %rcx
3c: c3 retq
return (uint32_t)constant.i32 <= (uint32_t)other->constant.i32;
3d: 8b 47 20 mov 0x20(%rdi),%eax
40: 3b 46 20 cmp 0x20(%rsi),%eax
43: eb 12 jmp 57 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x57>
return (uint64_t)constant.i64 <= (uint64_t)other->constant.i64;
45: 48 8b 47 20 mov 0x20(%rdi),%rax
49: 48 3b 46 20 cmp 0x20(%rsi),%rax
4d: eb 08 jmp 57 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x57>
return (uint16_t)constant.i16 <= (uint16_t)other->constant.i16;
4f: 0f b7 47 20 movzwl 0x20(%rdi),%eax
53: 66 3b 46 20 cmp 0x20(%rsi),%ax
57: 0f 96 c0 setbe %al
}
5a: 59 pop %rcx
5b: c3 retq
return constant.f64 <= other->constant.f64;
5c: c5 fb 10 46 20 vmovsd 0x20(%rsi),%xmm0
61: c5 f9 2e 47 20 vucomisd 0x20(%rdi),%xmm0
66: 0f 93 c0 setae %al
}
69: 59 pop %rcx
6a: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
6b: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 72 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x72>
72: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 79 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x79>
79: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 80 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x80>
80: ba b2 01 00 00 mov $0x1b2,%edx
85: e8 00 00 00 00 callq 8a <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x8a>
assert_always();
8a: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 91 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x91>
91: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 98 <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x98>
98: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 9f <xe::cpu::hir::Value::IsConstantULE(xe::cpu::hir::Value*) const+0x9f>
9f: ba c1 01 00 00 mov $0x1c1,%edx
a4: e8 00 00 00 00 callq a9 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x9>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantUGTEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const>:
bool IsConstantUGT(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 5e je 65 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x65>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 58 je 65 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x65>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 6e ja 84 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x84>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return (uint8_t)constant.i8 > (uint8_t)other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 32 jmp 60 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x60>
case INT32_TYPE:
return (uint32_t)constant.i32 > (uint32_t)other->constant.i32;
case INT64_TYPE:
return (uint64_t)constant.i64 > (uint64_t)other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 > other->constant.f32;
2e: c5 fa 10 47 20 vmovss 0x20(%rdi),%xmm0
33: c5 f8 2e 46 20 vucomiss 0x20(%rsi),%xmm0
38: eb 26 jmp 60 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x60>
return (uint32_t)constant.i32 > (uint32_t)other->constant.i32;
3a: 8b 47 20 mov 0x20(%rdi),%eax
3d: 3b 46 20 cmp 0x20(%rsi),%eax
40: eb 1e jmp 60 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x60>
return (uint64_t)constant.i64 > (uint64_t)other->constant.i64;
42: 48 8b 47 20 mov 0x20(%rdi),%rax
46: 48 3b 46 20 cmp 0x20(%rsi),%rax
4a: eb 14 jmp 60 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x60>
return (uint16_t)constant.i16 > (uint16_t)other->constant.i16;
4c: 0f b7 47 20 movzwl 0x20(%rdi),%eax
50: 66 3b 46 20 cmp 0x20(%rsi),%ax
54: eb 0a jmp 60 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x60>
case FLOAT64_TYPE:
return constant.f64 > other->constant.f64;
56: c5 fb 10 47 20 vmovsd 0x20(%rdi),%xmm0
5b: c5 f9 2e 46 20 vucomisd 0x20(%rsi),%xmm0
60: 0f 97 c0 seta %al
default:
assert_always();
return false;
}
}
63: 59 pop %rcx
64: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
65: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 6c <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x6c>
6c: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 73 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x73>
73: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 7a <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x7a>
7a: ba c6 01 00 00 mov $0x1c6,%edx
7f: e8 00 00 00 00 callq 84 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x84>
assert_always();
84: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 8b <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x8b>
8b: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 92 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x92>
92: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 99 <xe::cpu::hir::Value::IsConstantUGT(xe::cpu::hir::Value*) const+0x99>
99: ba d5 01 00 00 mov $0x1d5,%edx
9e: e8 00 00 00 00 callq a3 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x3>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantUGEEPS2_:
0000000000000000 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const>:
bool IsConstantUGE(Value* other) const {
0: 50 push %rax
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
1: f6 47 08 02 testb $0x2,0x8(%rdi)
5: 74 5e je 65 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x65>
7: f6 46 08 02 testb $0x2,0x8(%rsi)
b: 74 58 je 65 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x65>
switch (type) {
d: 8b 47 04 mov 0x4(%rdi),%eax
10: 48 83 f8 05 cmp $0x5,%rax
14: 77 6e ja 84 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x84>
16: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 1d <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x1d>
1d: 48 63 04 81 movslq (%rcx,%rax,4),%rax
21: 48 01 c8 add %rcx,%rax
24: ff e0 jmpq *%rax
case INT8_TYPE:
return (uint8_t)constant.i8 >= (uint8_t)other->constant.i8;
26: 8a 47 20 mov 0x20(%rdi),%al
29: 3a 46 20 cmp 0x20(%rsi),%al
2c: eb 32 jmp 60 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x60>
case INT32_TYPE:
return (uint32_t)constant.i32 >= (uint32_t)other->constant.i32;
case INT64_TYPE:
return (uint64_t)constant.i64 >= (uint64_t)other->constant.i64;
case FLOAT32_TYPE:
return constant.f32 >= other->constant.f32;
2e: c5 fa 10 47 20 vmovss 0x20(%rdi),%xmm0
33: c5 f8 2e 46 20 vucomiss 0x20(%rsi),%xmm0
38: eb 26 jmp 60 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x60>
return (uint32_t)constant.i32 >= (uint32_t)other->constant.i32;
3a: 8b 47 20 mov 0x20(%rdi),%eax
3d: 3b 46 20 cmp 0x20(%rsi),%eax
40: eb 1e jmp 60 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x60>
return (uint64_t)constant.i64 >= (uint64_t)other->constant.i64;
42: 48 8b 47 20 mov 0x20(%rdi),%rax
46: 48 3b 46 20 cmp 0x20(%rsi),%rax
4a: eb 14 jmp 60 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x60>
return (uint16_t)constant.i16 >= (uint16_t)other->constant.i16;
4c: 0f b7 47 20 movzwl 0x20(%rdi),%eax
50: 66 3b 46 20 cmp 0x20(%rsi),%ax
54: eb 0a jmp 60 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x60>
case FLOAT64_TYPE:
return constant.f64 >= other->constant.f64;
56: c5 fb 10 47 20 vmovsd 0x20(%rdi),%xmm0
5b: c5 f9 2e 46 20 vucomisd 0x20(%rsi),%xmm0
60: 0f 93 c0 setae %al
default:
assert_always();
return false;
}
}
63: 59 pop %rcx
64: c3 retq
assert_true(flags & VALUE_IS_CONSTANT && other->flags & VALUE_IS_CONSTANT);
65: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 6c <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x6c>
6c: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 73 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x73>
73: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 7a <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x7a>
7a: ba da 01 00 00 mov $0x1da,%edx
7f: e8 00 00 00 00 callq 84 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x84>
assert_always();
84: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 8b <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x8b>
8b: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 92 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x92>
92: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 99 <xe::cpu::hir::Value::IsConstantUGE(xe::cpu::hir::Value*) const+0x99>
99: ba e9 01 00 00 mov $0x1e9,%edx
9e: e8 00 00 00 00 callq a3 <.L__PRETTY_FUNCTION__._ZN2xe3cpu8compiler6passes23ConstantPropagationPass3RunEPNS0_3hir10HIRBuilderERb+0x3>
Disassembly of section .text._ZNK2xe3cpu3hir5Value14IsConstantZeroEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantZero() const>:
if (flags & VALUE_IS_CONSTANT) {
0: f6 47 08 02 testb $0x2,0x8(%rdi)
4: 75 03 jne 9 <xe::cpu::hir::Value::IsConstantZero() const+0x9>
6: 31 c0 xor %eax,%eax
}
8: c3 retq
switch (type) {
9: 8b 47 04 mov 0x4(%rdi),%eax
c: 48 83 f8 06 cmp $0x6,%rax
10: 77 6a ja 7c <xe::cpu::hir::Value::IsConstantZero() const+0x7c>
12: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 19 <xe::cpu::hir::Value::IsConstantZero() const+0x19>
19: 48 63 04 81 movslq (%rcx,%rax,4),%rax
1d: 48 01 c8 add %rcx,%rax
20: ff e0 jmpq *%rax
return !constant.i8;
22: 80 7f 20 00 cmpb $0x0,0x20(%rdi)
26: 0f 94 c0 sete %al
}
29: c3 retq
2a: c5 f8 57 c0 vxorps %xmm0,%xmm0,%xmm0
return !constant.f32;
2e: c5 fa c2 47 20 00 vcmpeqss 0x20(%rdi),%xmm0,%xmm0
34: c5 f9 7e c0 vmovd %xmm0,%eax
38: 83 e0 01 and $0x1,%eax
}
3b: c3 retq
return !constant.i32;
3c: 83 7f 20 00 cmpl $0x0,0x20(%rdi)
40: 0f 94 c0 sete %al
}
43: c3 retq
return !constant.i16;
44: 66 83 7f 20 00 cmpw $0x0,0x20(%rdi)
49: 0f 94 c0 sete %al
}
4c: c3 retq
return !constant.i64;
4d: 48 83 7f 20 00 cmpq $0x0,0x20(%rdi)
52: 0f 94 c0 sete %al
}
55: c3 retq
56: c5 f9 57 c0 vxorpd %xmm0,%xmm0,%xmm0
return !constant.f64;
5a: c5 fb c2 47 20 00 vcmpeqsd 0x20(%rdi),%xmm0,%xmm0
60: c4 e1 f9 7e c0 vmovq %xmm0,%rax
65: 83 e0 01 and $0x1,%eax
}
68: c3 retq
return !constant.v128.low && !constant.v128.high;
69: 48 83 7f 20 00 cmpq $0x0,0x20(%rdi)
6e: 74 03 je 73 <xe::cpu::hir::Value::IsConstantZero() const+0x73>
70: 31 c0 xor %eax,%eax
}
72: c3 retq
return !constant.v128.low && !constant.v128.high;
73: 48 83 7f 28 00 cmpq $0x0,0x28(%rdi)
78: 0f 94 c0 sete %al
}
7b: c3 retq
7c: 50 push %rax
assert_unhandled_case(type);
7d: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 84 <xe::cpu::hir::Value::IsConstantZero() const+0x84>
84: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 8b <xe::cpu::hir::Value::IsConstantZero() const+0x8b>
8b: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 92 <xe::cpu::hir::Value::IsConstantZero() const+0x92>
92: ba fb 00 00 00 mov $0xfb,%edx
97: e8 00 00 00 00 callq 9c <.L.str.4+0x1f>
Disassembly of section .text._ZNK2xe3cpu3hir5Value13IsConstantOneEv:
0000000000000000 <xe::cpu::hir::Value::IsConstantOne() const>:
if (flags & VALUE_IS_CONSTANT) {
0: f6 47 08 02 testb $0x2,0x8(%rdi)
4: 75 03 jne 9 <xe::cpu::hir::Value::IsConstantOne() const+0x9>
6: 31 c0 xor %eax,%eax
}
8: c3 retq
switch (type) {
9: 8b 47 04 mov 0x4(%rdi),%eax
c: 48 83 f8 05 cmp $0x5,%rax
10: 77 61 ja 73 <xe::cpu::hir::Value::IsConstantOne() const+0x73>
12: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 19 <xe::cpu::hir::Value::IsConstantOne() const+0x19>
19: 48 63 04 81 movslq (%rcx,%rax,4),%rax
1d: 48 01 c8 add %rcx,%rax
20: ff e0 jmpq *%rax
return constant.i8 == 1;
22: 80 7f 20 01 cmpb $0x1,0x20(%rdi)
26: 0f 94 c0 sete %al
}
29: c3 retq
2a: c5 fa 10 05 00 00 00 vmovss 0x0(%rip),%xmm0 # 32 <xe::cpu::hir::Value::IsConstantOne() const+0x32>
31: 00
return constant.f32 == 1.f;
32: c5 fa c2 47 20 00 vcmpeqss 0x20(%rdi),%xmm0,%xmm0
38: c5 f9 7e c0 vmovd %xmm0,%eax
3c: 83 e0 01 and $0x1,%eax
}
3f: c3 retq
return constant.i32 == 1;
40: 83 7f 20 01 cmpl $0x1,0x20(%rdi)
44: 0f 94 c0 sete %al
}
47: c3 retq
return constant.i64 == 1;
48: 48 83 7f 20 01 cmpq $0x1,0x20(%rdi)
4d: 0f 94 c0 sete %al
}
50: c3 retq
return constant.i16 == 1;
51: 0f b7 47 20 movzwl 0x20(%rdi),%eax
55: 83 f8 01 cmp $0x1,%eax
58: 0f 94 c0 sete %al
}
5b: c3 retq
5c: c5 fb 10 05 00 00 00 vmovsd 0x0(%rip),%xmm0 # 64 <xe::cpu::hir::Value::IsConstantOne() const+0x64>
63: 00
return constant.f64 == 1.0;
64: c5 fb c2 47 20 00 vcmpeqsd 0x20(%rdi),%xmm0,%xmm0
6a: c4 e1 f9 7e c0 vmovq %xmm0,%rax
6f: 83 e0 01 and $0x1,%eax
}
72: c3 retq
73: 50 push %rax
assert_unhandled_case(type);
74: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 7b <xe::cpu::hir::Value::IsConstantOne() const+0x7b>
7b: 48 8d 35 00 00 00 00 lea 0x0(%rip),%rsi # 82 <xe::cpu::hir::Value::IsConstantOne() const+0x82>
82: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 89 <xe::cpu::hir::Value::IsConstantOne() const+0x89>
89: ba 12 01 00 00 mov $0x112,%edx
8e: e8 00 00 00 00 callq 93 <.L.str.4+0x16>
Disassembly of section .text._ZN2xe3cpu3hir5Value8set_zeroENS1_8TypeNameE:
0000000000000000 <xe::cpu::hir::Value::set_zero(xe::cpu::hir::TypeName)>:
type = new_type;
0: 89 77 04 mov %esi,0x4(%rdi)
flags |= VALUE_IS_CONSTANT;
3: 80 4f 08 02 orb $0x2,0x8(%rdi)
constant.v128.low = constant.v128.high = 0;
7: c5 f8 57 c0 vxorps %xmm0,%xmm0,%xmm0
b: c5 f8 29 47 20 vmovaps %xmm0,0x20(%rdi)
}
10: c3 retq
Disassembly of section .text._ZN2xe3cpu8compiler6passes23ConditionalGroupSubpass3RunEPNS0_3hir10HIRBuilderE:
0000000000000000 <xe::cpu::compiler::passes::ConditionalGroupSubpass::Run(xe::cpu::hir::HIRBuilder*)>:
class ConditionalGroupSubpass : public CompilerPass {
public:
ConditionalGroupSubpass();
virtual ~ConditionalGroupSubpass();
bool Run(hir::HIRBuilder* builder) override {
0: 48 83 ec 18 sub $0x18,%rsp
4: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
b: 00 00
d: 48 89 44 24 10 mov %rax,0x10(%rsp)
bool dummy;
return Run(builder, dummy);
12: 48 8b 07 mov (%rdi),%rax
15: 48 8d 54 24 0f lea 0xf(%rsp),%rdx
1a: ff 50 20 callq *0x20(%rax)
1d: 64 48 8b 0c 25 28 00 mov %fs:0x28,%rcx
24: 00 00
26: 48 3b 4c 24 10 cmp 0x10(%rsp),%rcx
2b: 75 05 jne 32 <xe::cpu::compiler::passes::ConditionalGroupSubpass::Run(xe::cpu::hir::HIRBuilder*)+0x32>
2d: 48 83 c4 18 add $0x18,%rsp
31: c3 retq
32: e8 00 00 00 00 callq 37 <xe::cpu::compiler::passes::ConstantPropagationPass::~ConstantPropagationPass()+0x7>
Disassembly of section .text._ZN2xe8vec128_saSERKS0_:
0000000000000000 <xe::vec128_s::operator=(xe::vec128_s const&)>:
high = other.high;
low = other.low;
}
vec128_s& operator=(const vec128_s& b) {
high = b.high;
0: 48 8b 46 08 mov 0x8(%rsi),%rax
4: 48 89 47 08 mov %rax,0x8(%rdi)
low = b.low;
8: 48 8b 06 mov (%rsi),%rax
b: 48 89 07 mov %rax,(%rdi)
return *this;
e: 48 89 f8 mov %rdi,%rax
11: c3 retq
@bwrsandman
Copy link
Author

The __attribute__ ((optnone)) was added by me and don't seem to do much

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment