Changes between Version 4 and Version 5 of I2Result


Ignore:
Timestamp:
Apr 2, 2014, 5:44:18 PM (4 years ago)
Author:
cameron
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • I2Result

    v4 v5  
    8585}}}
    8686
    87 Here is the assembly output for {{{signmaskd}}}.
     87The assembly output for {{{signmaskd}}} shows that there is an issue
     88in code generation for the LLVM IR above, with the first bit value
     89extracted being clobbered by the second bit value (both written to the
     90same memory location).
    8891{{{
    89 >       movdqa  .LCPI2_0(%rip), %xmm1
    90 >       pxor    %xmm1, %xmm0
    91 >       movdqa  %xmm1, %xmm2
    92 >       pcmpgtd %xmm0, %xmm2
    93 >       pshufd  $-96, %xmm2, %xmm3      # xmm3 = xmm2[0,0,2,2]
    94 >       pcmpeqd %xmm1, %xmm0
    95 >       pshufd  $-11, %xmm0, %xmm0      # xmm0 = xmm0[1,1,3,3]
    96 >       pand    %xmm3, %xmm0
    97 >       pshufd  $-11, %xmm2, %xmm1      # xmm1 = xmm2[1,1,3,3]
    98 >       por     %xmm0, %xmm1
    99 >       movd    %xmm1, %rax
    100 >       andl    $1, %eax
    101 >       movb    %al, -2(%rsp)
    102 >       punpckhqdq      %xmm1, %xmm1    # xmm1 = xmm1[1,1]
    103 >       movd    %xmm1, %rax
    104 >       andl    $1, %eax
    105 >       movb    %al, -2(%rsp)
    106 >       movzbl  -2(%rsp), %eax
    107 >       ret
    108 
     92signmaskd:                              # @signmaskd
     93# BB#0:
     94        movdqa  .LCPI2_0(%rip), %xmm1
     95        pxor    %xmm1, %xmm0
     96        movdqa  %xmm1, %xmm2
     97        pcmpgtd %xmm0, %xmm2
     98        pshufd  $-96, %xmm2, %xmm3      # xmm3 = xmm2[0,0,2,2]
     99        pcmpeqd %xmm1, %xmm0
     100        pshufd  $-11, %xmm0, %xmm0      # xmm0 = xmm0[1,1,3,3]
     101        pand    %xmm3, %xmm0
     102        pshufd  $-11, %xmm2, %xmm1      # xmm1 = xmm2[1,1,3,3]
     103        por     %xmm0, %xmm1
     104        movd    %xmm1, %rax
     105        andl    $1, %eax
     106        movb    %al, -2(%rsp)
     107        punpckhqdq      %xmm1, %xmm1    # xmm1 = xmm1[1,1]
     108        movd    %xmm1, %rax
     109        andl    $1, %eax
     110        movb    %al, -2(%rsp)
     111        movzbl  -2(%rsp), %eax
     112        ret
    109113}}}