Tôi không ở vị trí nào để tạo ra sự khác biệt giữa vld4_f32
và vld4q_f32
trong hướng dẫn ARM NEON.ARM NEON: Sự khác nhau giữa vld4_f32 và vld4q_f32 là gì?
Sự nhầm lẫn bắt đầu khi tôi tăng cấp độ mã hóa của mình và bắt đầu xem hướng dẫn lắp ráp thay vì bản chất ít thông tin hơn.
Lý do tôi cần phải sử dụng vld4 hướng dẫn biến thể ở đây là bởi vì, tôi muốn chụp float32_t
's từ mọi vị trí thứ 4 của mảng lớn của tôi.
Các vld4_f32
intrinsics và hướng dẫn lắp ráp tương ứng giống như thế này (From this link)
float32x2x4_t vld4_f32 (const float32_t *)
Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0]
Các vld4q_f32
intrinsics và hướng dẫn lắp ráp tương ứng của nó trông như thế này
float32x4x4_t vld4q_f32 (const float32_t *)
Form of expected instruction(s): vld4.32 {d0, d1, d2, d3}, [r0]
Vâng, ở cấp độ nội tại sự khác biệt tôi thấy là kiểu trả về, nhưng nếu tôi nhìn vào hướng dẫn lắp ráp và số lượng thanh ghi, cả hai đều giống nhau. Làm thế nào trình biên dịch hoặc trình biên dịch biết sự khác biệt giữa hai?
ai đó có thể làm rõ hơn về vấn đề này và cũng có thể giải thích làm thế nào tôi có thể đạt được tải 4 float32_t giá trị mà được định vị ở mọi vị trí bộ nhớ 4 thành một đơn đăng ký?
Vâng, tải vld4q 4 q đăng ký, như tên của nó ... – jcayzac