Created
March 10, 2019 00:38
-
-
Save bwrsandman/d218a2d8590e5b74310cfd6dac8f234e to your computer and use it in GitHub Desktop.
constant_propagation_pass optimization issue
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The
__attribute__ ((optnone))
was added by me and don't seem to do much