search for: movsd

Displaying 20 results from an estimated 83 matches for "movsd".

Did you mean: moved
2012 Mar 28
2
[LLVMdev] Suboptimal code due to excessive spilling
...%xmm0, %xmm0 movl 112(%esp), %eax testl %eax, %eax je .LBB1_3 # BB#1: xorl %ebx, %ebx movl 108(%esp), %ecx movl 104(%esp), %edx xorl %esi, %esi .align 16, 0x90 .LBB1_2: # %.lr.ph.i # =>This Inner Loop Header: Depth=1 movsd (%edx,%ebx,8), %xmm2 addsd .LCPI1_0, %xmm2 movsd 16(%edx,%ebx,8), %xmm1 movsd %xmm1, (%esp) # 8-byte Spill movl %ebx, %edi addl $1, %edi addsd (%edx,%edi,8), %xmm2 movsd 136(%edx,%ebx,8), %xmm1 movsd %xmm1, 72(%esp) # 8-byte Spill movsd 128(%edx,%ebx,8), %xmm1 movsd %xmm...
2012 Apr 05
0
[LLVMdev] Suboptimal code due to excessive spilling
...%xmm0, %xmm0 movl 112(%esp), %eax testl %eax, %eax je .LBB1_3 # BB#1: xorl %ebx, %ebx movl 108(%esp), %ecx movl 104(%esp), %edx xorl %esi, %esi .align 16, 0x90 .LBB1_2: # %.lr.ph.i # =>This Inner Loop Header: Depth=1 movsd (%edx,%ebx,8), %xmm2 addsd .LCPI1_0, %xmm2 movsd 16(%edx,%ebx,8), %xmm1 movsd %xmm1, (%esp) # 8-byte Spill movl %ebx, %edi addl $1, %edi addsd (%edx,%edi,8), %xmm2 movsd 136(%edx,%ebx,8), %xmm1 movsd %xmm1, 72(%esp) # 8-byte Spill movsd 128(%edx,%ebx,8), %xmm1 movsd %xmm...
2017 Mar 01
2
[Codegen bug in LLVM 3.8?] br following `fcmp une` is present in ll, absent in asm
....LBB6_55: # %merge128 movq 184(%rsp), %rcx movq %rax, 728(%rcx) movq 184(%rsp), %rax movq 728(%rax), %rcx movq %rcx, 736(%rax) movq 184(%rsp), %rax movq $0, 744(%rax) movq 184(%rsp), %rax movq $0, 752(%rax) movq 184(%rsp), %rax movq $0, 760(%rax) movq 176(%rsp), %rax movsd 5608(%rax), %xmm0 # xmm0 = mem[0],zero movq 184(%rsp), %rax mulsd 648(%rax), %xmm0 movsd 160(%rsp), %xmm1 # 8-byte Reload # xmm1 = mem[0],zero addsd %xmm0, %xmm1 movsd %xmm1, 672(%rax) movq 176(%rsp), %rax movsd 5648(%rax), %xmm0 # xmm0 = m...
2012 Jan 13
2
[LLVMdev] Odd weak symbol thing on i386
...denom; if (num >= 0 && r.rem < 0) { r.quot++; r.rem -= denom; } return (r); } I get the following code emitted for the return if the alias line is present: LBB0_3: # %if.end movl 64(%esp), %eax movsd 24(%esp), %xmm0 movsd 32(%esp), %xmm1 movsd %xmm1, 8(%eax) movsd %xmm0, (%eax) addl $56, %esp popl %esi ret .Ltmp0: .size _lldiv, .Ltmp0-_lldiv .weak lldiv lldiv = _lldiv And this if it isn't: LBB0_3: # %if.end movl 64(%esp), %eax movsd 24(%esp), %xmm...
2013 Jul 19
0
[LLVMdev] llvm.x86.sse2.sqrt.pd not using sqrtpd, calling a function that modifies ECX
...C subpd xmm2,xmm6 002E04E0 movapd xmm1,xmm2 002E04E4 addpd xmm1,xmm0 002E04E8 mulpd xmm0,xmm0 002E04EC mulpd xmm2,xmm2 002E04F0 addpd xmm2,xmm0 002E04F4 sqrtpd xmm0,xmm2 002E04F8 addpd xmm0,xmm1 002E04FC addpd xmm2,xmm7 002E0500 movsd xmm4,mmword ptr ds:[2E0090h] 002E0508 movapd xmm1,xmm4 002E050C divsd xmm1,xmm2 002E0510 unpckhpd xmm2,xmm2 002E0514 movapd xmm3,xmm4 002E0518 divsd xmm3,xmm2 002E051C unpcklpd xmm1,xmm3 002E0520 mulpd xmm1,xmmword ptr ds:[2E00A0h] 002E0528 ad...
2019 Oct 25
4
unnecessary reload of 8-byte struct on i386
...es, and I came across a curious pattern. A smallish repro case is available at https://godbolt.org/z/Dsu1WI . In that case, the function Assembler::emit_arith receives a struct (Operand) by value and passes it by value to another function. That struct is 8 bytes long, so the -O3 generated code uses movsd to copy it up the stack. However, we end up with some loads that aren't needed, as in the following chunk: movsd xmm0, qword ptr [ecx] # xmm0 = mem[0],zero mov dword ptr [esp + 24], edx movsd qword ptr [esp + 40], xmm0 movsd xmm0, qword ptr [esp + 40] # xmm0 = mem[0],zero movsd qword ptr [esp...
2012 Aug 13
2
[LLVMdev] x86 REP-prefixed instructions seem to be dropped by instruction decoder?
I think there's a bug somewhere in TableGen for the X86 disassembler emitter. The following test: $ echo "0xF3 0xA5" | ./bin/llvm-mc -disassemble .section __TEXT,__text,regular,pure_instructions movsd (from llvm trunk) 0xF3 is the REP prefix, so the printed instruction should be 'rep movsd', however all that is printed is 'movsd'. It seems that there is an instruction enum for REP_MOVSD, but it isn't emitted in the generated .inc file? Is this a bug/oversight, or is there s...
2012 Jan 13
0
[LLVMdev] Odd weak symbol thing on i386
...               r.quot++; >                r.rem -= denom; >        } >        return (r); > } > > I get the following code emitted for the return if the alias line is present: > > LBB0_3:                                # %if.end >        movl    64(%esp), %eax >        movsd   24(%esp), %xmm0 >        movsd   32(%esp), %xmm1 >        movsd   %xmm1, 8(%eax) >        movsd   %xmm0, (%eax) >        addl    $56, %esp >        popl    %esi >        ret > .Ltmp0: >        .size   _lldiv, .Ltmp0-_lldiv > > >        .weak   lldiv > lldiv = _...
2019 Aug 09
0
[RFC PATCH v6 79/92] kvm: x86: emulate movsd xmm, m64
From: Mihai Don?u <mdontu at bitdefender.com> This is needed in order to be able to support guest code that uses movsd to write into pages that are marked for write tracking. Signed-off-by: Mihai Don?u <mdontu at bitdefender.com> Signed-off-by: Adalbert Laz?r <alazar at bitdefender.com> --- arch/x86/kvm/emulate.c | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-)...
2012 Aug 14
0
[LLVMdev] x86 REP-prefixed instructions seem to be dropped by instruction decoder?
...Andrew Ruef <awruef at umd.edu> wrote: > I think there's a bug somewhere in TableGen for the X86 disassembler > emitter. The following test: > > $ echo "0xF3 0xA5" | ./bin/llvm-mc -disassemble > .section __TEXT,__text,regular,pure_instructions > movsd > > (from llvm trunk) > > 0xF3 is the REP prefix, so the printed instruction should be 'rep > movsd', however all that is printed is 'movsd'. It seems that there is > an instruction enum for REP_MOVSD, but it isn't emitted in the > generated .inc file? Is th...
2013 Jul 19
4
[LLVMdev] SIMD instructions and memory alignment on X86
Hmm, I'm not able to get those .ll files to compile if I disable SSE and I end up with SSE instructions(including sqrtpd) if I don't disable it. On Thu, Jul 18, 2013 at 10:53 PM, Peter Newman <peter at uformia.com> wrote: > Is there something specifically required to enable SSE? If it's not > detected as available (based from the target triple?) then I don't think
2013 Jan 04
3
[LLVMdev] instruction scheduling issue
...is passed to the function call. 402a91: 48 8d bc 1c 48 02 00 lea 0x248(%rsp,%rbx,1),%rdi 402a98: 00 402a99: e8 82 e0 ff ff callq 400b20 <llvm_memory_profiling at plt> /home/xl10/llvm/test//luleshOMP-0611.cc:1974 402a9e: f2 0f 10 84 1c 48 02 movsd 0x248(%rsp,%rbx,1),%xmm0 402aa5: 00 00 402aa7: f2 0f 11 84 24 b8 01 movsd %xmm0,0x1b8(%rsp) However, due to instruction scheduling, the following instruction of the function call is not always the desired memory access instruction. For example, in the following code, the memo...
2012 Jan 04
1
[LLVMdev] How can I compile a c source file to use SSE2 Data Movement Instructions?
...rc -fobjc-runtime-has-weak -fobjc-fragile-abi -fdiagnostics show-option -fcolor-diagnostics -o test.s -x c test.c .def _f; .scl 2; .type 32; .endef .text .globl _f .align 16, 0x90 _f: # @f # BB#0: movl $-800, %eax # imm = 0xFFFFFFFFFFFFFCE0 movsd _DA, %xmm0 .align 16, 0x90 LBB0_1: # =>This Inner Loop Header: Depth=1 movsd _X+800(%eax), %xmm1 mulsd %xmm0, %xmm1 movsd _Y+800(%eax), %xmm2 subsd %xmm1, %xmm2 movsd %xmm2, _Y+800(%eax) addl $8, %eax jne LBB0_1 # BB#2: xorl %eax, %eax ret .data .globl...
2011 Mar 19
2
[LLVMdev] Apparent optimizer bug on X86_64
...1312 users should not rely upon it. Assigning to YYVAL 1313 unconditionally makes the parser a bit smaller, and it avoids a 1314 GCC warning that YYVAL may be used uninitialized. */ 1315 yyval = yyvsp[1-yylen]; => 0x0000000000400c2d <rpcalc_parse+653>: movsd xmm0,QWORD PTR [rbx+rax*8] 0x0000000000400c32 <rpcalc_parse+658>: movsd QWORD PTR [rbp-0x808],xmm0 As far as I understand it, assigning to eax zero-extends to rax. However, eax holds the result of "1-yylen" which is expected to be negative, so it should be sign-extended...
2008 Nov 17
2
[LLVMdev] Patterns with Multiple Stores
I want to write a pattern that looks something like this: def : Pat<(unalignedstore (v2f64 VR128:$src), addr:$dst), (MOVSDmr ADD64ri8(addr:$dst, imm:8), ( SHUFPDrri (VR128:$src, (MOVSDmr addr:$dst, FR64:$src))), imm:3) So I want to convert an unaligned vector store to a scalar store, a shuffle and a scalar store. There are several question I have: - Is the imm:3 syntax correct? Basically I want to hard-...
2011 Sep 26
3
[LLVMdev] x86-64 large stack offsets
...handle it. void fool( int long n ) { double w[268435600]; double z[268435600]; unsigned long i; for ( i = 0; i < n; i++ ) { w[i] = 1.0; z[i] = 2.0; } printf(" n: %lld, W %g Z %g\n", n, w[1], z[1] ); } Here's one of the offending instructions produced by 2.9: movsd -2147482472(%rsp), %xmm0 Fixing the displacement overflow is pretty easy. It's just a matter of changing a few variable types in LLVM from unsigned to uint64_t in the functions that calculate the stack offsets. The real trouble I'm having is finding a good place to break up the displacem...
2018 Nov 15
2
[RFC][llvm-mca] Adding binary support to llvm-mca.
...or the user, and simplifies reading an llvm-mca analysis report later. When this code is compiled, the region markers (the mca_code_region markers) are transformed into assembly labels. While the markers are presented as function calls, in reality they are no-ops. test: pushq %rbp movq %rsp, %rbp movsd %xmm0, -8(%rbp) movsd %xmm1, -16(%rbp) .Lmca_code_region_start_0: # LLVM-MCA-START ID: 42 xorps %xmm0, %xmm0 movsd %xmm0, -24(%rbp) movsd -8(%rbp), %xmm0 mulsd -16(%rbp), %xmm0 addsd -24(%rbp), %xmm0 movsd %xmm0, -24(%rbp) .Lmca_code_region_end_0: # LLVM-MCA-END ID: 42 movsd -24(%rbp), %xmm0 popq %...
2013 Jan 07
0
[LLVMdev] instruction scheduling issue
...sed to the function call. 402a91: 48 8d bc 1c 48 02 00 lea 0x248(%rsp,%rbx,1),%rdi 402a98: 00 402a99: e8 82 e0 ff ff callq 400b20 <llvm_memory_profiling at plt> /home/xl10/llvm/test//luleshOMP-0611.cc:1974 402a9e: f2 0f 10 84 1c 48 02 movsd 0x248(%rsp,%rbx,1),%xmm0 402aa5: 00 00 402aa7: f2 0f 11 84 24 b8 01 movsd %xmm0,0x1b8(%rsp) However, due to instruction scheduling, the following instruction of the function call is not always the desired memory access instruction. For example, in the following code, th...
2007 Dec 20
1
[LLVMdev] Code Generation Problem llvm 1.9
...5b50 MOV32mi %EBP, 1, %NOREG, -224, <ga:DataStore> %EAX = MOV32rm %EBP, 1, %NOREG, -224 %EAX = ADD32ri8 %EAX, 40 MOV32mi %EAX, 1, %NOREG, 0, 0 MOV32mi %EAX, 1, %NOREG, 4, 1075576832 %ESP = SUB32ri %ESP, 16 %XMM0 = CVTSI2SDrr %EDI MOVSDmr %ESP, 1, %NOREG, 0, %XMM0 MOV32mr %EBP, 1, %NOREG, -268, %ESP ADD32mi8 %EBP, 1, %NOREG, -268, 4294967288 %ESP = MOV32rm %EBP, 1, %NOREG, -268 %ESI = MOV32rm %EBP, 1, %NOREG, -224 %ESI = ADD32ri8 %ESI, 16 MOV32mi %ESI, 1, %NOREG, 0, 0 MOV32mi...
2012 Mar 02
3
[LLVMdev] how to annotate assembler
...# ??? what insn in X86InstrInfo.td? .Llabel1: movq %rsp, %rbp # ??? what insn in X86InstrInfo.td? .Llabel2: movq %rdi, -16(%rbp) # ??? what insn in X86InstrInfo.td? movq -16(%rbp), %rax # ??? what insn in X86InstrInfo.td? cvtsi2sdq %rax, %xmm0 # ??? what insn in X86InstrInfo.td? movsd %xmm0, -8(%rbp) # ??? what insn in X86InstrInfo.td? movsd -8(%rbp), %xmm0 # ??? what insn in X86InstrInfo.td? popq %rbp # ??? what insn in X86InstrInfo.td? ret --- With best regards, Konstantin