search for: opsize32

Displaying 12 results from an estimated 12 matches for "opsize32".

Did you mean: opsize
2018 Nov 07
2
how to add a instruction
...6InstrArithmetic.td. I add ,(To make sure the Sched is right, I use the WriteIMul16Reg ) def max_qb : I<0xF0,MRMSrcReg, (outs GR32:$dst), (ins GR32:$src1,GR32:$src2), "max_qb\t {$dst, $src1,$src2}", [(set GR32:$dst,(X86max_qb GR32:$src1, GR32:$src2))]>,Sched<[WriteIMul16Reg]>,OpSize32 ; when compile LLVM , the error appears. "[ 97%] Updating X86GenAsmWriter1.inc... Unhandled immediate encoding GR32 Unhandled immediate encoding " But when I write the same as the instruction IMUL32rr, there is no error in compiling.(I don't use the EFLAGS at all, so I think it...
2018 Sep 06
2
Adding an trinsics in x86
...ing:implicit declaration of function 'int_x86_max_qb' is invalid in C99 [-Wimplicit-function-declaration]. So I add the definition in src/lib/Target/X86/X86InstrInfo.td def MAX_QB : I<0xff,RawFrm, (outs GR32:$Rd), (ins GR32:$src1,GR32:$src2),"max_qb \t $Rd $src1 $src2", []>, OpSize32; But it doesn't work.What should I do to make it correct? please tell me.Thanks. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180906/57706ad3/attachment.html>
2018 Nov 14
2
Fw: How to define an instruction
...uot; is the most important and the defines the multiplication. def IMUL32rr : I<0xAF, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src1,GR32:$src2),"imul{l}\t{$src2, $dst|$dst, $src2}", [(set GR32:$dst, EFLAGS, (X86smul_flag GR32:$src1, GR32:$src2))]>,Sched<[WriteIMul32Reg]>, TB, OpSize32; And in X86ScheduleXXX.td ,there is definition of Ports and so on. My questions are here,as following: 1.whether the schedule of an instruction defines the machine how to do. 2.Why is there no "add" or "sub" instructions("ALU insturctions") in X86InstrArithmetic.td?...
2018 Sep 17
2
error about adding an trinsics
...get/X86/X86InstrArithmetic.td: def max_qb : I<0xff,MRMSrcReg, (outs GR32:$dst), (ins GR32:$src1,GR32:$src2), "max_qb\t {$dst, $src1,$src2|$src1,$src2, $dst}", [(set GR32:$dst,EFLAGS,(X86max_qb_flag GR32:$src1, GR32:$src2))]>, Sched<[WriteIMul]>, TB, OpSize32 ; I think it can be work ,at least work as one multiplication(because I use the Sched<[WriteIMul]>). But there is an error :"error: use of unknown builtin '__builtin_x86_max_qb'". And I don't konw what I should do. Thanks a lot. -------------- next part -------------- A...
2018 Nov 14
2
Fw: How to define an instruction
...uot; is the most important and the defines the multiplication. def IMUL32rr : I<0xAF, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src1,GR32:$src2),"imul{l}\t{$src2, $dst|$dst, $src2}", [(set GR32:$dst, EFLAGS, (X86smul_flag GR32:$src1, GR32:$src2))]>,Sched<[WriteIMul32Reg]>, TB, OpSize32; And in X86ScheduleXXX.td ,there is definition of Ports and so on. My questions are here,as following: 1.whether the schedule of an instruction defines the machine how to do. 2.Why is there no "add" or "sub" instructions("ALU insturctions") in X86InstrArithmetic.td?...
2017 Aug 02
2
Efficiently ignoring upper 32 pointer bits when dereferencing
...R, 5, "selectAddr", [], [SDNPWantParent]>; The derefencing mov instruction looks like this: def MOV32rm : I<0x8B, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src), "mov{l}\t{$src, $dst|$dst, $src}", [(set GR32:$dst, (loadi32 addr:$src))], IIC_MOV_MEM>, OpSize32; So it expects a source address of type 'addr' which is 8 bytes. This leads to the following code being emitted when I apply my solution to problem 1: mov (%rcx),%eax In other words, the upper bits are not ignored. I am currently not sure what is the best place to solve this pro...
2018 Mar 28
0
x86 instruction format which takes a single 64-bit immediate
...gister encoded in bits 7:4 Imm16 Imm16PCRel Imm32 - 32-bit immediate Imm32PCRel Imm32S - 32-bit immediate that is sign extended to 64-bits. Imm64 Opsize ------ OpSizeFixed(default) - Operand size isn't mode dependent OpSize16 - 0x66 prefix required in 32-bit mode OpSize32 - 0x66 prefix required in 16-bit mode OpSizeIgnored - 0x66 prefix should be ignored if present. Adsize ------ AdSizeX(default) - Address size prefix determined from memory operand registers encoded in modrm byte AdSize16 - Need a 0x67 prefix in 32-bit mode AdSize...
2017 Aug 02
2
Efficiently ignoring upper 32 pointer bits whendereferencing
...ot;, [], > [SDNPWantParent]>; > The derefencing mov instruction looks like this: > def MOV32rm : I<0x8B, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src), > "mov{l}\t{$src, $dst|$dst, $src}", > [(set GR32:$dst, (loadi32 addr:$src))], IIC_MOV_MEM>, OpSize32; > So it expects a source address of type 'addr' which is 8 bytes. This > leads to the following code being emitted when I apply my solution to > problem 1: > mov (%rcx),%eax > In other words, the upper bits are not ignored. > > > I am currently not sure wh...
2018 Mar 28
4
x86 instruction format which takes a single 64-bit immediate
I am attempting to create an instruction which takes a single 64-bit immediate. This doesn't seem like a thing that would exist already (because who needs an instruction which just takes an immediate?) How might I implement this easily? Perhaps I could use a format which encodes a register, which is then unused? Thanks for the help. Gus -------------- next part -------------- An HTML
2018 Mar 01
0
[X86] API to query MCInstr operand types
...ry operands? As an example, consider the following description of MOV32mr (from X86InstrInfo.td) def MOV32mr : I<0x89, MRMDestMem, (outs), (ins i32mem:$dst, GR32:$src), "mov{l}\t{$src, $dst|$dst, $src}", [(store GR32:$src, addr:$dst)], IIC_MOV_MEM>, OpSize32; or that of MOVSX64rm (from X86InstrExtension.td) def MOVSX64rm32: RI<0x63, MRMSrcMem, (outs GR64:$dst), (ins i32mem:$src), "movs{lq|xd}\t{$src, $dst|$dst, $src}", [(set GR64:$dst, (sextloadi64i32 addr:$src))], IIC_MOVSX>,...
2018 Jul 10
2
Stuck with instruction in tablegen
2018 Jul 10
2
Stuck with instruction in tablegen
Hi, I'm trying to revive jacobly0's Z80 back-end (from https://github.com/jacobly0/llvm-z80) and build it with a current version of LLVM. Apart from some interface changes, I'm stuck at building the tables. Specifically, the generation of the DAG instruction selector causes an assertion in the table generator: Assertion failed: Ops.size() >= NumSrcResults &&