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