Save 37% off PRO during our Black Friday Sale! »

SwiftとCPUレジスタ

 SwiftとCPUレジスタ

F6f299e604f7a8a540bbe7b86057522f?s=128

rikusouda

June 24, 2019
Tweet

Transcript

  1. SwiftͱCPUϨδελ 2019/06/24 YUMEMI.swift #1 @rikusouda

  2. ࣗݾ঺հ • @rikusouda (٢Ԭ༞थ) • גࣜձࣾGunosy • ϧʔτϏΞ͕޷͖ • WWDC19͕ॳWWDC

  3. None
  4. Swiftͱ CPUϨδελ

  5. ͳͥWWDC͔ΒϨδελͷ࿩? • WWDCʹ͸Lab͕͋ΔɻAppleͷΤϯδχΞ ʹ࣭໰͕Ͱ͖Δ৔ॴ • Swiftؔ࿈ͷLabߦ͖ͬͯͨ • ղܾͰ͖ͳ͔ͬͨ͜ͱ͕͋Γɺ೔ຊʹؼͬͯ ͖͔ͯΒࣗ෼Ͱௐ΂ͨ

  6. CPUϨδελͬͯԿ͚ͩͬ • ԋࢉ͢Δͱ͖ʹ࢖͏࡞ۀྖҬ = ൚༻Ϩδελ • CPUͷ಺෦ʹ͋ͬͯɺϝΠϯϝϞϦΑΓܻҧ ͍ʹૣ͍ • ͨͩ͠਺ेݸͱ͔ɺ਺͕ݶΒΕ͍ͯΔ

    • Ϩδελʹͳ͍σʔλΛԋࢉ͢Δͱ͖͸ϝΠϯ ϝϞϦ͔ΒҰ୴ϩʔυ͢Δ
  7. ୊ࡐͷSwiftίʔυ

  8. ͜͏͍͏஋ܕͷม਺͸ ʮελοΫͷϝϞϦྖҬʹ֬อ ͞ΕΔʯͱ͍͏ͷ͸༗໊ ୊ࡐͷSwiftίʔυ

  9. ϝΠϯϝϞϦ࢖ΘͣʹϨδελ ͚ͩ࢖ͬͨ΄͏͕ޮ཰Α͘ͳ͍  ͦ͏ͳ͍ͬͯΔ ୊ࡐͷSwiftίʔυ

  10. LabͰฉ͍ͯΈͨ • SwiftͷLabʹͯ • A. SwiftίϯύΠϥνʔϜͰ͸୲౰͍ͯ͠ͳ͍ൣғɻ LLVMͷਓʹฉ͘ͱΑͦ͞͏ • LLVMͷLabʹͯ •

    A. Swift͸Θ͔Βͳ͍ɻCݴޠͩͱ͢ΔͱYesɻLLVM IRͱ͔ΞηϯϒϥಡΉͱ͍Ζ͍ΖΘ͔ͬͯ໘ന͍Α
  11. LLVM IRͱΞηϯϒϥͱ͸ http://llvm.org/devmtg/2015-10/slides/GroffLattner-SILHighLevelIR.pdf

  12. LLVM IRͱΞηϯϒϥͱ͸ http://llvm.org/devmtg/2015-10/slides/GroffLattner-SILHighLevelIR.pdf

  13. LLVM IRݟͯΈΑ͏

  14. Swiftίʔυ

  15. swiftc -emit-ir -O test.swift > test.ll ௨ৗɺϦϦʔεϏϧυ͸࠷ద Խ͢ΔͷͰಉ༷ʹ࠷దԽ

  16. None
  17. ࠷దԽ͞Ε͗͢!!

  18. Swiftίʔυ

  19. Swiftίʔυ ϝιουͷࢀরܦ༝ͷݺͼग़͠ʹ͠ ͯؔ਺ίʔϧ͕ͳ͘ͳΔͷΛආ͚Δ

  20. swiftc -emit-ir -O test.swift > test.ll

  21. LLVM IRίʔυ(barؔ਺಺)

  22. LLVM IRίʔυ(barؔ਺಺) ͷؔ਺Λίʔϧ݁͠ՌΛ΁ GPPؔ਺ͷϙΠϯλ͕ʹೖ͍ͬͯΔ

  23. LLVM IRίʔυ(barؔ਺಺) ʹΛ଍ͯ͠ɺ໭Γ஋Λʹ

  24. LLVM IRίʔυ(barؔ਺಺) !MMWNTBEEXJUIPWFSqPXJͷ໭Γ஋ ߏ଄ମ͔Βܭࢉ݁ՌΛऔΓग़͠ɺ ͦΕΛ໭Γ஋ͱͯ͠SFUVSO

  25. Α͛͞

  26. ೦ͷҝΞηϯϒϥ΋ݟΑ͏
 iPhoneΛ૝ఆ͠ARM64Ͱ

  27. xcrun -sdk iphoneos swiftc - emit-assembly -O -target arm64- apple-ios12.0

    test.swift > test.s ͜ͷίϚϯυ͕ϕετͳͷ͔ ࣗ৴͕ͳ͍ͷͰϚαΧϦืू
  28. ARM64ͷ Ξηϯϒϥ

  29. None
  30. Y  ΛҾ਺ͱͯ͠YʹඈͿ Yʹ͸GPPͷΞυϨε͕ೖ͍ͬͯΔ

  31. ໭Γ஋ Y ΛYʹίϐʔ

  32. YY  ϨδελͱϦςϥϧͷՃࢉ ϝϞϦΞΫηεͳ͠

  33. YΛ໭Γ஋ͱͯ͠SFUVSO

  34. Swiftͷؔ਺಺ͷInt͸ ϨδελͰ׬͍݁ͯͨ͠

  35. ͜Ε͔Β • LLVMίʔυΛݟͯཪ෇͚͕Ͱ͖͍ͯͳ͍ͷͰ ΍Γ͍ͨ • ↑͜͜·Ͱ΍ͬͯiOSDCͷLTͰ஻Γ͍ͨ

  36. ϓϩϙʔβϧʹελʔ͍ͩ͘͞ • SwiftͷελοΫม਺ͱCPUϨδελͷؔ܎ΛಡΈղ͍ͨ • https://fortee.jp/iosdc-japan-2019/proposal/ c2a89fff-ce66-4821-b2d4-4b7b6ff293d5 • Swiftͷ஌ࣝΛ࢖ͬͯC++ͷੈքʹඈͼࠐ΋͏ • https://fortee.jp/iosdc-japan-2019/proposal/

    c39e331a-8c70-42ef-b58e-38f798f40295 • “rikusouda”Ͱݕࡧ͢Ε͹ग़͖ͯ·͢
  37. ·ͱΊ • Swiftͷ಺෦ಈ࡞Λ஌Γ͍ͨ৔߹͸தؒίʔυ ΛಡΉ͚ͩͰ݁ߏ෼͔Δɻ • ໋ྩͷ࢓༷ͱ͔άάΕ͹݁ߏಡΊΔ • ίϯύΠϥͷ஌ࣝͳͯ͘΋͜͜·Ͱ͸ߦ͚Δ • SwiftͷInt͸ɺҰൠతʹ࠷దԽ͋ΓͳΒ͹Ϩδ

    ελͰ׬݁͢Δ͜ͱ͕Θ͔ͬͨ
  38. None