Guest User

Untitled

a guest
Jan 17th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.55 KB | None | 0 0
  1. __builtin_prefetch(const void*)
  2.  
  3. void foo(double *d, unsigned len) {
  4. for (unsigned i = 0; i < len; ++i) {
  5. __builtin_prefetch(&d[i]);
  6. d[i] = d[i] * d[i];
  7. }
  8. }
  9.  
  10. void foo(double *d, unsigned len) {
  11. for (unsigned i = 0; i < len; ++i) {
  12. asm("prefetcht0 (%0)"
  13. : /**/
  14. : "g"(&d[i])
  15. : /**/
  16. );
  17. d[i] = d[i] * d[i];
  18. }
  19. }
  20.  
  21. .file "test1.c" | .file "test2.c"
  22. .text .text
  23. .p2align 4,,15 .p2align 4,,15
  24. .globl foo .globl foo
  25. .type foo, @function .type foo, @function
  26. foo: foo:
  27. .LFB0: .LFB0:
  28. .cfi_startproc .cfi_startproc
  29. testl %esi, %esi # len testl %esi, %esi # len
  30. je .L1 #, je .L1 #,
  31. leal -1(%rsi), %eax #, D.1749 | leal -1(%rsi), %eax #, D.1745
  32. leaq 8(%rdi,%rax,8), %rax #, D.1749 | leaq 8(%rdi,%rax,8), %rax #, D.1745
  33. .p2align 4,,10 .p2align 4,,10
  34. .p2align 3 .p2align 3
  35. .L4: .L4:
  36. movsd (%rdi), %xmm0 # MEM[base: _8, offset: 0B], D. | #APP
  37. prefetcht0 (%rdi) # ivtmp.6 | # 3 "test2.c" 1
  38. > prefetcht0 (%rdi) # ivtmp.6
  39. > # 0 "" 2
  40. > #NO_APP
  41. > movsd (%rdi), %xmm0 # MEM[base: _8, offset: 0B], D.
  42. addq $8, %rdi #, ivtmp.6 addq $8, %rdi #, ivtmp.6
  43. mulsd %xmm0, %xmm0 # D.1748, D.1748 | mulsd %xmm0, %xmm0 # D.1747, D.1747
  44. movsd %xmm0, -8(%rdi) # D.1748, MEM[base: _8, offset: | movsd %xmm0, -8(%rdi) # D.1747, MEM[base: _8, offset:
  45. cmpq %rax, %rdi # D.1749, ivtmp.6 | cmpq %rax, %rdi # D.1745, ivtmp.6
  46. jne .L4 #, jne .L4 #,
  47. .L1: .L1:
  48. rep ret rep ret
  49. .cfi_endproc .cfi_endproc
  50. .LFE0: .LFE0:
  51. .size foo, .-foo .size foo, .-foo
  52. .ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4" .ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4"
  53. .section .note.GNU-stack,"",@progbits .section .note.GNU-stack,"",@progbits
  54.  
  55. asm volatile (
  56. "prefetcht0 (%rax) ;"
Add Comment
Please, Sign In to add comment