LLVM 11.0 มาพร้อมกับการอัปเดต Python 3 การปรับปรุงสำหรับ RISC-V และอื่น ๆ

LLVM

หลังจากหกเดือนของการพัฒนา ได้มีการนำเสนอการเปิดตัวโครงการ LLVM 11.0 ฉบับใหม่ ซึ่งมีการนำเสนอการปรับปรุงหลายอย่างเช่นการอัปเดต Python 3 แพตช์เพื่อรองรับคำแนะนำการทดลองใน RISC-V และการเปลี่ยนแปลงอื่น ๆ อีกมากมาย

สำหรับผู้ที่ไม่คุ้นเคยกับ LLVM ควรรู้ว่ามันคืออะไร ชุดเครื่องมือที่สอดคล้องกับ GCC (คอมไพเลอร์ตัวเพิ่มประสิทธิภาพและตัวสร้างโค้ด) ที่รวบรวมโปรแกรมไว้ในคำสั่งเสมือนตัวกลางระดับกลางคล้ายรหัสบิต RISC (เครื่องเสมือนระดับต่ำพร้อมระบบเพิ่มประสิทธิภาพหลายระดับ)

ได้รับการออกแบบมาเพื่อเพิ่มประสิทธิภาพเวลาในการรวบรวม, เวลาผูกมัด, เวลาดำเนินการในภาษาโปรแกรมใด ๆ ที่ผู้ใช้ต้องการกำหนด. เดิมใช้เพื่อคอมไพล์ C และ C ++, การออกแบบโดยไม่เชื่อเรื่องพระเจ้าภาษาของ LLVM และความสำเร็จของโครงการ พวกเขาได้สร้างภาษาที่หลากหลาย

pseudocode ที่สร้างขึ้นสามารถแปลงโดยใช้คอมไพเลอร์ JIT เป็นคำสั่งของเครื่องได้โดยตรงในขณะที่ดำเนินการโปรแกรม

คุณสมบัติใหม่ที่สำคัญของ LLVM 11.0

ใน LLVM 11.0 เวอร์ชันใหม่นี้ ระบบสร้างถูกย้ายไปใช้ Python 3ด้วยเหตุนี้จึงไม่บังคับใช้ Python 3 เนื่องจากในกรณีที่ไม่มีให้ใช้งานตัวเลือกการย้อนกลับจึงถูกนำไปใช้เพื่อใช้ Python 2

แอตทริบิวต์ เพิ่ม vector-function-abi-variant เป็นตัวแทนระดับกลาง (IR) เพื่ออธิบายการจับคู่ระหว่างฟังก์ชันสเกลาร์และเวกเตอร์ สำหรับการโทร vectorization เวกเตอร์สองประเภทแยกกัน llvm :: FixedVectorType และ llvm :: ScalableVectorType ถูกแยกจาก llvm :: VectorType

พฤติกรรมที่ไม่ได้กำหนดคือการแตกแขนงตาม undef และส่งต่อจากค่าที่ไม่ได้กำหนดไปยังฟังก์ชันไลบรารีมาตรฐาน

ใน memset / memcpy / memmove อนุญาตให้ส่งพอยน์เตอร์ที่ไม่ได้กำหนดได้ แต่ถ้าพารามิเตอร์ที่มีขนาดเท่ากับศูนย์

LLJIT เพิ่มการสนับสนุนสำหรับการเริ่มต้นแบบคงที่ผ่านวิธี LLJIT :: initialize และ LLJIT :: deinitialize

เพิ่มไฟล์ ความสามารถในการเพิ่มไลบรารีแบบคงที่ไปยัง JITDylib โดยใช้คลาส StaticLibraryDefinitionGenerator เพิ่ม C API สำหรับ ORCv2 (API สำหรับสร้างคอมไพเลอร์ JIT)

ในส่วนของการปรับปรุงการรองรับสถาปัตยกรรมโปรเซสเซอร์ที่แตกต่างกัน:

  • เพิ่มแล้ว รองรับโปรเซสเซอร์ Cortex-A34, Cortex-A77, Cortex-A78 และ Cortex-X1 ในแบ็กเอนด์ของสถาปัตยกรรม AArch64 มีการใช้งานส่วนขยาย ARMv8.2-BF16 (BFloat16) และ ARMv8.6-A รวมถึง RMv8.6-ECV (Enhanced Counter Virtualization), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (Activity มอนิเตอร์การจำลองเสมือน) และ ARMv8.0-DGH (คำใบ้การรวบรวมข้อมูล)
  • เพิ่มการรองรับโปรเซสเซอร์ Cortex-M55, Cortex-A77, Cortex-A78 และ Cortex-X1 บนแบ็กเอนด์ ARM ใช้ส่วนขยาย Armv8.6-A Matrix Multiply และ RMv8.2-AA32BF16 BFloat16
  • เพิ่มการสนับสนุนสำหรับการสร้างรหัสสำหรับโปรเซสเซอร์ POWER10 ในแบ็กเอนด์ PowerPC ปรับปรุงการเพิ่มประสิทธิภาพของลูปและการสนับสนุนที่ดีขึ้นสำหรับการดำเนินการจุดลอยตัว
  • แบ็กเอนด์สถาปัตยกรรม RISC-V สามารถรับแพตช์พร้อมการสนับสนุน สำหรับชุดคำสั่งเพิ่มเติมสำหรับการทดลองที่ยังไม่ได้รับการอนุมัติอย่างเป็นทางการ

นอกจากนี้ มีความสามารถในการสร้างรหัสสำหรับฟังก์ชันการผูก รวมเข้ากับคำสั่ง SVE ของเวกเตอร์

แบ็กเอนด์สำหรับสถาปัตยกรรม AVR ถูกย้ายจากหมวดหมู่การทดลองไปยังกลุ่มที่เสถียรที่รวมอยู่ในการกระจายฐาน

แบ็กเอนด์ x86 รองรับคำแนะนำ Intel AMX และ TSXLDTRK เพิ่มการป้องกันการโจมตี LVI (Load Value Injection) และกลไกการปราบปราม Speculative Execution Side Effects เพื่อป้องกันการโจมตีที่เกิดจากการดำเนินการเชิงคาดเดาของการดำเนินการบน CPU

การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น:

  • แบ็กเอนด์สำหรับสถาปัตยกรรม SystemZ เพิ่มการรองรับ MemorySanitizer และ LeakSanitizer
  • Libc ++ เพิ่มการรองรับไฟล์ส่วนหัวค่าคงที่ทางคณิตศาสตร์ .
  • ความสามารถเพิ่มเติมของ LLD linker
  • การสนับสนุน ELF ที่ปรับปรุงใหม่รวมถึงตัวเลือกที่เพิ่มเข้ามา "–lto-emit-asm", "–lto-whole-program-visible", "–print-archive-stats", "–shuffle-section", "–thinlto-single -module "," –unique "," –rosegment "," –threads = N "
  • เพิ่มตัวเลือก "–time-trace" เพื่อบันทึกการติดตามลงในไฟล์ซึ่งสามารถแยกวิเคราะห์ผ่าน chrome: // trace interface ใน Chrome
  • อินเทอร์เฟซกับคอมไพเลอร์ Go (llgo) ถูกลบออกจากรีลีสและอาจมีการปรับโครงสร้างในอนาคต

ในที่สุด หากคุณต้องการทราบข้อมูลเพิ่มเติม เกี่ยวกับเวอร์ชันใหม่นี้คุณสามารถตรวจสอบได้ รายละเอียดตามลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา