search for: call64r

Displaying 11 results from an estimated 11 matches for "call64r".

Did you mean: call64m
2015 Jul 28
1
[LLVMdev] splice and undefined physical reg
Hi, i have got some troubles while trying to instrumentate a indirect call instruction. Basically, every time i run into a CALL64r i would like to have this situation: ------ | .... | | CMP | | JE | ------ | | --- ----- | | ---- ---- |EXIT| |CALL|...
2015 Jul 28
1
[LLVMdev] Splice and undefined physical reg
Hi, i have got some troubles while writing an X86 machine pass to instrumentate indirect calls . Basically, every time i run into a CALL64r i would like to have this situation: ------ | .... | | CMP | | JE | ------ | | --- ----- | | ---- ---- |EXIT| |CALL|...
2013 Oct 28
2
[LLVMdev] Are Opcode and register mappings exposed anywhere?
...per class. Hopefully, if it's a member, it's public.) Looks like X86ATTInstPrinter::getRegisterName() and X86IntelInstPrinter::getRegisterName() are static, public members. It would still be handy to expose an enum somewhere. This is to support something like: if (Inst.getOpcode() == X86::CALL64r) { if (Inst.getOperand(0).getReg() == X86::RIP) { // ... } } E.g., exposing some of the tablegened enums in X86GenRegisterInfo.inc and X86GenInstrInfo.inc would be very handy. Steve > > > On Oct 28, 2013 12:03 PM, "Stephen Checkoway" <s at pahtak.org> wrote: &g...
2010 Jun 09
1
[LLVMdev] Always unfold memory operand
After removing CALL64m, the resulting DAG has a cycle that cannot be scheduled. I've attached a PDF of the DAG before instruction selection (-view-isel-dags), and after instruction select (-view-sched-dags). Notice how the flag/chain relationships between MOV64rm and CALL64r make it impossible to schedule. Here's the code being compiled: define ccc void @ArgsFree() nounwind { entry: %0 = load void (i8*)** undef, align 4 call ccc void %0(i8* undef) nounwind unreachable } Is this a bug in LLVM, or is there something else I need to do than just remove CALL64m...
2013 Oct 29
0
[LLVMdev] Are Opcode and register mappings exposed anywhere?
...a member, it's public.) > > Looks like X86ATTInstPrinter::getRegisterName() and > X86IntelInstPrinter::getRegisterName() are static, public members. It would > still be handy to expose an enum somewhere. This is to support something > like: > > if (Inst.getOpcode() == X86::CALL64r) { > if (Inst.getOperand(0).getReg() == X86::RIP) { > // ... > } > } > > E.g., exposing some of the tablegened enums in X86GenRegisterInfo.inc and > X86GenInstrInfo.inc would be very handy. > > Steve > > > > > > > On Oct 28, 2013 12:03 PM, &qu...
2013 Oct 28
0
[LLVMdev] Are Opcode and register mappings exposed anywhere?
See the source here: https://github.com/earl/llvm-mirror/blob/master/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp. It looks like getRegisterName might do what you want, but I don't know where it's coming from. (Whether it's a function or a member of a super class. Hopefully, if it's a member, it's public.) PS Sorry for the duplicate, Stephen. I forgot to CC the list. On
2010 Nov 09
0
[LLVMdev] Questions on using Metadata in JIT mode
...cpp:5:1 MOV32mr %RSP, 1, %reg0, 20, %reg0, %EAX; mem:ST4[%X] dbg:l8.cpp:5:1 %EDI<def> = ADD32rr %EDI, %EAX<kill>, %EFLAGS<imp-def,dead>; dbg:l8.cpp:6:1 MOV32mr %RSP, 1, %reg0, 20, %reg0, %EDI; mem:ST4[%X] dbg:l8.cpp:6:1 %RAX<def> = MOV64ri <ga:@intDisp>; dbg:l8.cpp:7:1 CALL64r %RAX<kill>, %EDI<kill>, %RAX<imp-def,dead>, %RDI<imp-def,dead>, %RSP<imp-use>, ...; dbg:l8.cpp:7:1 %RSP<def> = ADD64ri8 %RSP, 24, %EFLAGS<imp-def,dead>; dbg:l8.cpp:7:1 RET; dbg:l8.cpp:7:1 My other questions are: 1. What is the correct way to obtain the r...
2013 Oct 28
2
[LLVMdev] Are Opcode and register mappings exposed anywhere?
I'm iterating over MCInsts and I'd like to examine particular instructions. For example, I'd like to look at all x86 CALL64m instructions. I may be missing something, but it seems like my only option is to use MCInstPrinter::getOpcodeName and compare strings. (Of course, I could iterate through the opcodes and build up a table of the ones I'm interested in to avoid string
2011 Mar 23
4
[LLVMdev] Calling external functions failed on PowerPC
...ck_flush(%struct.CPUX86State* %62) noinline, !flags !12 - ppc call void @helper_shack_flush(%struct.CPUX86State* %62) noinline, !flags !10 After lowering above LLVM IR for x86 and ppc, it becomes: - x86 %RAX<def> = MOV64ri <ga:@helper_shack_flush> %RDI<def> = COPY %RBX CALL64r %RAX<kill>, %RDI<kill>, %RAX<imp-def,dead>, %RCX<imp-def,dead>, %RDX<imp-def,dead>, %RSI<imp-def,dead>, %%RDI<imp-def,dead>, %R8<imp-def,dead>, %EFLAGS<imp-def,dead>, %RSP<imp-use>, ... - ppc %X4<def> = LDtoc <ga:@helper_shack_...
2010 Jun 09
0
[LLVMdev] Always unfold memory operand
On Tue, Jun 8, 2010 at 4:20 PM, David Meyer <pdox at google.com> wrote: > Hi Eli, > I have tried this, but the resulting tool-chain was broken. > There are only two references to "CALL64m": the definition in > X86Instr64bit.td, and an entry in X86InstrInfo.cpp. > After commenting both out, compilation of a large application fails with: > llc: ScheduleDAG.cpp:462:
2010 Jun 08
2
[LLVMdev] Always unfold memory operand
Hi Eli, I have tried this, but the resulting tool-chain was broken. There are only two references to "CALL64m": the definition in X86Instr64bit.td, and an entry in X86InstrInfo.cpp. After commenting both out, compilation of a large application fails with: llc: ScheduleDAG.cpp:462: void llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting(): Assertion `Node2Index[SU->NodeNum]