1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

[X86][Btver2] Add vector extract costs

llvm-svn: 329524
This commit is contained in:
Simon Pilgrim 2018-04-08 11:26:26 +00:00
parent d3b507dfd6
commit 9f2a807458
8 changed files with 73 additions and 54 deletions

View File

@ -369,6 +369,25 @@ defm : JWriteResFpuPair<WriteVecLogic, [JFPU01, JVALU], 1>;
defm : JWriteResFpuPair<WriteShuffle256, [JFPU01, JVALU], 1>;
defm : JWriteResFpuPair<WriteVarVecShift, [JFPU01, JVALU], 1>; // NOTE: Doesn't exist on Jaguar.
////////////////////////////////////////////////////////////////////////////////
// Vector Extraction instructions.
////////////////////////////////////////////////////////////////////////////////
def JWritePEXTR : SchedWriteRes<[JFPU0, JFPA, JALU0]> { let Latency = 3; }
def : InstRW<[JWritePEXTR], (instrs MMX_PEXTRWrr,
EXTRACTPSrr, VEXTRACTPSrr,
PEXTRBrr, VPEXTRBrr,
PEXTRDrr, VPEXTRDrr,
PEXTRQrr, VPEXTRQrr,
PEXTRWrr, VPEXTRWrr, PEXTRWrr_REV, VPEXTRWrr_REV)>;
def JWritePEXTRSt : SchedWriteRes<[JFPU1, JSTC, JSAGU]> { let Latency = 3; }
def : InstRW<[JWritePEXTRSt], (instrs EXTRACTPSmr, VEXTRACTPSmr,
PEXTRBmr, VPEXTRBmr,
PEXTRDmr, VPEXTRDmr,
PEXTRQmr, VPEXTRQmr,
PEXTRWmr, VPEXTRWmr)>;
////////////////////////////////////////////////////////////////////////////////
// SSE42 String instructions.
////////////////////////////////////////////////////////////////////////////////

View File

@ -3018,7 +3018,7 @@ define i32 @test_pextrw(x86_mmx %a0) optsize {
;
; BTVER2-LABEL: test_pextrw:
; BTVER2: # %bb.0:
; BTVER2-NEXT: pextrw $0, %mm0, %eax # sched: [1:0.50]
; BTVER2-NEXT: pextrw $0, %mm0, %eax # sched: [3:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_pextrw:

View File

@ -2818,7 +2818,7 @@ define void @test_movhps(<4 x float> %a0, <4 x float> %a1, x86_mmx *%a2) {
; BTVER2: # %bb.0:
; BTVER2-NEXT: vmovhpd {{.*#+}} xmm1 = xmm1[0],mem[0] sched: [6:1.00]
; BTVER2-NEXT: vaddps %xmm1, %xmm0, %xmm0 # sched: [3:1.00]
; BTVER2-NEXT: vpextrq $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-NEXT: vpextrq $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-SSE-LABEL: test_movhps:

View File

@ -8970,13 +8970,13 @@ define i16 @test_pextrw(<8 x i16> %a0) {
;
; BTVER2-SSE-LABEL: test_pextrw:
; BTVER2-SSE: # %bb.0:
; BTVER2-SSE-NEXT: pextrw $6, %xmm0, %eax # sched: [1:0.50]
; BTVER2-SSE-NEXT: pextrw $6, %xmm0, %eax # sched: [3:1.00]
; BTVER2-SSE-NEXT: # kill: def $ax killed $ax killed $eax
; BTVER2-SSE-NEXT: retq # sched: [4:1.00]
;
; BTVER2-LABEL: test_pextrw:
; BTVER2: # %bb.0:
; BTVER2-NEXT: vpextrw $6, %xmm0, %eax # sched: [1:0.50]
; BTVER2-NEXT: vpextrw $6, %xmm0, %eax # sched: [3:1.00]
; BTVER2-NEXT: # kill: def $ax killed $ax killed $eax
; BTVER2-NEXT: retq # sched: [4:1.00]
;

View File

@ -797,14 +797,14 @@ define i32 @test_extractps(<4 x float> %a0, i32 *%a1) {
;
; BTVER2-SSE-LABEL: test_extractps:
; BTVER2-SSE: # %bb.0:
; BTVER2-SSE-NEXT: extractps $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-SSE-NEXT: extractps $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-SSE-NEXT: extractps $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-SSE-NEXT: extractps $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-SSE-NEXT: retq # sched: [4:1.00]
;
; BTVER2-LABEL: test_extractps:
; BTVER2: # %bb.0:
; BTVER2-NEXT: vextractps $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-NEXT: vextractps $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-NEXT: vextractps $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-NEXT: vextractps $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-SSE-LABEL: test_extractps:
@ -1650,14 +1650,14 @@ define i32 @test_pextrb(<16 x i8> %a0, i8 *%a1) {
;
; BTVER2-SSE-LABEL: test_pextrb:
; BTVER2-SSE: # %bb.0:
; BTVER2-SSE-NEXT: pextrb $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-SSE-NEXT: pextrb $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-SSE-NEXT: pextrb $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-SSE-NEXT: pextrb $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-SSE-NEXT: retq # sched: [4:1.00]
;
; BTVER2-LABEL: test_pextrb:
; BTVER2: # %bb.0:
; BTVER2-NEXT: vpextrb $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-NEXT: vpextrb $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-NEXT: vpextrb $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-NEXT: vpextrb $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-SSE-LABEL: test_pextrb:
@ -1766,15 +1766,15 @@ define i32 @test_pextrd(<4 x i32> %a0, i32 *%a1) {
; BTVER2-SSE-LABEL: test_pextrd:
; BTVER2-SSE: # %bb.0:
; BTVER2-SSE-NEXT: paddd %xmm0, %xmm0 # sched: [1:0.50]
; BTVER2-SSE-NEXT: pextrd $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-SSE-NEXT: pextrd $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-SSE-NEXT: pextrd $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-SSE-NEXT: pextrd $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-SSE-NEXT: retq # sched: [4:1.00]
;
; BTVER2-LABEL: test_pextrd:
; BTVER2: # %bb.0:
; BTVER2-NEXT: vpaddd %xmm0, %xmm0, %xmm0 # sched: [1:0.50]
; BTVER2-NEXT: vpextrd $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-NEXT: vpextrd $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-NEXT: vpextrd $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-NEXT: vpextrd $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-SSE-LABEL: test_pextrd:
@ -1872,14 +1872,14 @@ define i64 @test_pextrq(<2 x i64> %a0, <2 x i64> %a1, i64 *%a2) {
;
; BTVER2-SSE-LABEL: test_pextrq:
; BTVER2-SSE: # %bb.0:
; BTVER2-SSE-NEXT: pextrq $1, %xmm0, %rax # sched: [1:0.50]
; BTVER2-SSE-NEXT: pextrq $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-SSE-NEXT: pextrq $1, %xmm0, %rax # sched: [3:1.00]
; BTVER2-SSE-NEXT: pextrq $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-SSE-NEXT: retq # sched: [4:1.00]
;
; BTVER2-LABEL: test_pextrq:
; BTVER2: # %bb.0:
; BTVER2-NEXT: vpextrq $1, %xmm0, %rax # sched: [1:0.50]
; BTVER2-NEXT: vpextrq $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-NEXT: vpextrq $1, %xmm0, %rax # sched: [3:1.00]
; BTVER2-NEXT: vpextrq $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-SSE-LABEL: test_pextrq:
@ -1974,14 +1974,14 @@ define i32 @test_pextrw(<8 x i16> %a0, i16 *%a1) {
;
; BTVER2-SSE-LABEL: test_pextrw:
; BTVER2-SSE: # %bb.0:
; BTVER2-SSE-NEXT: pextrw $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-SSE-NEXT: pextrw $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-SSE-NEXT: pextrw $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-SSE-NEXT: pextrw $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-SSE-NEXT: retq # sched: [4:1.00]
;
; BTVER2-LABEL: test_pextrw:
; BTVER2: # %bb.0:
; BTVER2-NEXT: vpextrw $3, %xmm0, %eax # sched: [1:0.50]
; BTVER2-NEXT: vpextrw $1, %xmm0, (%rdi) # sched: [6:1.00]
; BTVER2-NEXT: vpextrw $3, %xmm0, %eax # sched: [3:1.00]
; BTVER2-NEXT: vpextrw $1, %xmm0, (%rdi) # sched: [3:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-SSE-LABEL: test_pextrw:

View File

@ -1182,8 +1182,8 @@ vzeroupper
# CHECK-NEXT: 10 17 6.00 * vdpps $22, (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vextractf128 $1, %ymm0, %xmm2
# CHECK-NEXT: 1 1 1.00 * vextractf128 $1, %ymm0, (%rax)
# CHECK-NEXT: 1 1 0.50 vextractps $1, %xmm0, %ecx
# CHECK-NEXT: 2 6 1.00 * vextractps $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vextractps $1, %xmm0, %ecx
# CHECK-NEXT: 1 3 1.00 * vextractps $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vhaddpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 8 1.00 * vhaddpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 2 3 2.00 vhaddpd %ymm0, %ymm1, %ymm2
@ -1427,14 +1427,14 @@ vzeroupper
# CHECK-NEXT: 2 6 2.00 * vpermilps $1, (%rax), %ymm2
# CHECK-NEXT: 6 3 3.00 vpermilps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: 6 8 3.00 * vpermilps (%rax), %ymm1, %ymm2
# CHECK-NEXT: 1 1 0.50 vpextrb $1, %xmm0, %ecx
# CHECK-NEXT: 2 6 1.00 * vpextrb $1, %xmm0, (%rax)
# CHECK-NEXT: 1 1 0.50 vpextrd $1, %xmm0, %ecx
# CHECK-NEXT: 2 6 1.00 * vpextrd $1, %xmm0, (%rax)
# CHECK-NEXT: 1 1 0.50 vpextrq $1, %xmm0, %rcx
# CHECK-NEXT: 2 6 1.00 * vpextrq $1, %xmm0, (%rax)
# CHECK-NEXT: 1 1 0.50 vpextrw $1, %xmm0, %ecx
# CHECK-NEXT: 2 6 1.00 * vpextrw $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vpextrb $1, %xmm0, %ecx
# CHECK-NEXT: 1 3 1.00 * vpextrb $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vpextrd $1, %xmm0, %ecx
# CHECK-NEXT: 1 3 1.00 * vpextrd $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vpextrq $1, %xmm0, %rcx
# CHECK-NEXT: 1 3 1.00 * vpextrq $1, %xmm0, (%rax)
# CHECK-NEXT: 1 3 1.00 vpextrw $1, %xmm0, %ecx
# CHECK-NEXT: 1 3 1.00 * vpextrw $1, %xmm0, (%rax)
# CHECK-NEXT: 1 1 0.50 vphaddd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: 1 6 1.00 * vphaddd (%rax), %xmm1, %xmm2
# CHECK-NEXT: 1 1 0.50 vphaddsw %xmm0, %xmm1, %xmm2
@ -1885,8 +1885,8 @@ vzeroupper
# CHECK-NEXT: - - - 6.00 6.00 - 2.00 2.00 - - - - - - vdpps $22, (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vextractf128 $1, %ymm0, %xmm2
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vextractf128 $1, %ymm0, (%rax)
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - vextractps $1, %xmm0, %ecx
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - 1.00 - - - - vextractps $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vextractps $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vextractps $1, %xmm0, (%rax)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - vhaddpd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - vhaddpd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - 2.00 - 2.00 - - - - - - - - vhaddpd %ymm0, %ymm1, %ymm2
@ -2130,14 +2130,14 @@ vzeroupper
# CHECK-NEXT: - - - 1.00 1.00 1.00 1.00 2.00 - - - - - - vpermilps $1, (%rax), %ymm2
# CHECK-NEXT: - - - 3.00 3.00 1.00 1.00 - - - - - - - vpermilps %ymm0, %ymm1, %ymm2
# CHECK-NEXT: - - - 3.00 3.00 1.00 1.00 2.00 - - - - - - vpermilps (%rax), %ymm1, %ymm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrb $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrb $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrd $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrd $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrq $1, %xmm0, %rcx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrq $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vpextrw $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - vpextrw $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vpextrb $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vpextrb $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vpextrd $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vpextrd $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vpextrq $1, %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vpextrq $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - vpextrw $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - vpextrw $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphaddd %xmm0, %xmm1, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - vphaddd (%rax), %xmm1, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - vphaddsw %xmm0, %xmm1, %xmm2

View File

@ -540,7 +540,7 @@ xorpd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpgtd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpgtw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpgtw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrw $1, %xmm0, %ecx
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - pextrw $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 pmaddwd %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 pmaddwd (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pmaxsw %xmm0, %xmm2

View File

@ -175,8 +175,8 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: - - - 3.00 3.00 - 1.00 1.00 - - - - - - dppd $22, (%rax), %xmm2
# CHECK-NEXT: - - - 3.00 3.00 - 1.00 - - - - - - - dpps $22, %xmm0, %xmm2
# CHECK-NEXT: - - - 3.00 3.00 - 1.00 1.00 - - - - - - dpps $22, (%rax), %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - extractps $1, %xmm0, %ecx
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - 1.00 - - - - extractps $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - extractps $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - extractps $1, %xmm0, (%rax)
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 - - - - - - - insertps $1, %xmm0, %xmm2
# CHECK-NEXT: - - - 0.50 0.50 0.50 0.50 1.00 - - - - - - insertps $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - movntdqa (%rax), %xmm2
@ -190,13 +190,13 @@ roundss $1, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pblendw $11, (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pcmpeqq %xmm0, %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - - - 0.50 0.50 - pcmpeqq (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrb $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - pextrb $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrd $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - pextrd $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pextrq $1, %xmm0, %rcx
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - pextrq $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 0.50 0.50 1.00 - 1.00 - 0.50 0.50 - pextrw $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - pextrb $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - pextrb $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - pextrd $1, %xmm0, %ecx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - pextrd $1, %xmm0, (%rax)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - pextrq $1, %xmm0, %rcx
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - pextrq $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - - 1.00 - - 1.00 1.00 - - - pextrw $1, %xmm0, (%rax)
# CHECK-NEXT: - - - - - 1.00 - - - - - - - 1.00 phminposuw %xmm0, %xmm2
# CHECK-NEXT: - - - - - 1.00 - 1.00 - - - - - 1.00 phminposuw (%rax), %xmm2
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - 0.50 0.50 - pinsrb $1, %eax, %xmm1