Có lệnh SSE2 nào để tải đăng ký véc tơ 128 bit int
từ bộ đệm int
theo thứ tự ngược lại không?Lệnh SSE2 để tải các số nguyên theo thứ tự ngược
Trả lời
Đó là khá dễ dàng để đảo ngược 32 bit int
yếu tố sau một tải bình thường:
__m128i v = _mm_load_si128(buff); // MOVDQA
v = _mm_shuffle_epi32(v, _MM_SHUFFLE(0, 1, 2, 3)); // PSHUFD - mask = 00 01 10 11 = 0x1b
Bạn có thể làm điều tương tự cho 16 bit short
yếu tố, nhưng phải mất nhiều hướng dẫn:
__m128i v = _mm_load_si128(buff); // MOVDQA
v = _mm_shuffle_epi32(v, _MM_SHUFFLE(0, 1, 2, 3)); // PSHUFD - mask = 00 01 10 11 = 0x1b
v = _mm_shufflelo_epi16(v, _MM_SHUFFLE(2, 3, 0, 1)); // PSHUFLW - mask = 10 11 00 01 = 0xb1
v = _mm_shufflehi_epi16(v, _MM_SHUFFLE(2, 3, 0, 1)); // PSHUFHW - mask = 10 11 00 01 = 0xb1
Lưu ý rằng bạn có thể thực hiện việc này với ít hướng dẫn hơn bằng cách sử dụng _mm_shuffle_epi8
(PSHUFB
), nếu SSSE3 có sẵn:
const __m128i vm = _mm_setr_epi8(14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1);
// initialise vector mask for use with PSHUFB
// NB: do this once, outside any processing loop
...
__m128i v = _mm_load_si128(buff); // MOVDQA
v = _mm_shuffle_epi8(v, vm); // PSHUFB
EDIT: (Sau đây là cho vô hướng điểm chính xác duy nhất nổi, để lại nó ở đây chỉ trong trường hợp)
Các xấp xỉ nhất (và tiện dụng) là _mm_loadr_ps
nội tại. Hãy nhận biết địa chỉ phải được liên kết 16byte.
Mặc dù nội tại này dịch sang số nhiều hơn chỉ dẫn (MOVAPS
+ xáo trộn).
Cảm ơn bạn đã trả lời nhưng hướng dẫn này tải bốn giá trị độ chính xác, dấu phẩy động theo thứ tự ngược. Tôi đang tìm kiếm phép toán tương tự cho số nguyên nhưng tôi đoán không có hỗ trợ cho điều đó. – Andy
Có, tôi không nhận thấy bạn đang nói về các giá trị số nguyên (nên đọc lại tiêu đề của bạn). Paul R câu trả lời là những gì bạn cần. – Trax
Có.Chỉ cần tò mò, có thể thực hiện cùng một thao tác với giá trị ngắn không? – Andy
- 1. Kiểm tra tràn số nguyên SSE2
- 2. apply-templates theo thứ tự ngược
- 3. Đảo ngược thứ nguyên tùy ý trong một số thứ tự
- 4. "Sắp xếp theo desc" theo thứ tự ngược lại?
- 5. Làm thế nào để đặt các cặp số nguyên không theo thứ tự trong C++?
- 6. Thứ tự Đảo ngược
- 7. Sắp xếp một NSArray theo thứ tự ngược lại
- 8. Cách di chuyển C# LinkedList theo thứ tự ngược lại
- 9. Thứ tự các vị trí được tìm kiếm để tải các DLL được tham chiếu theo thứ tự nào?
- 10. Chọn Bản ghi N Hàng đầu theo thứ tự X, nhưng có kết quả theo thứ tự ngược
- 11. Mẫu lệnh: Thực hiện nhiều lệnh theo thứ tự
- 12. Khóa chính của SQL composite không có thứ tự (cặp số nguyên theo thứ tự phải là duy nhất)
- 13. Tìm các đảo số 0 theo thứ tự
- 14. Lấy các phần tử `std :: priority_queue` theo thứ tự ngược lại?
- 15. Làm cách nào tôi có thể chọn các hàng theo thứ tự ngược lại (mysql)
- 16. cách sử dụng lệnh Linux Sắp xếp để sắp xếp tệp văn bản theo cột thứ 4, thứ tự số?
- 17. ggplot2 thứ tự đảo ngược của scale_brewer
- 18. cách thanh lịch để đảo ngược thứ tự cột
- 19. Tại sao hàm tạo được gọi theo thứ tự ngược lại?
- 20. Các trường JSON không theo thứ tự
- 21. làm thế nào để đọc một tập tin csv theo thứ tự ngược trong python
- 22. Làm cách nào để lặp lại bộ sưu tập .Net IList theo thứ tự ngược lại?
- 23. cao theo thứ tự ScalaCheck
- 24. Tải danh bạ điện thoại theo thứ tự tăng dần
- 25. Rails 3.1 Tải css theo thứ tự cụ thể
- 26. Sắp xếp tự nhiên mảng PHP theo thứ tự ngược lại và không giữ phím
- 27. Đảo ngược các bit của số nguyên Python
- 28. C bit đảo ngược trong số nguyên không dấu
- 29. HashSet giữ nguyên thứ tự
- 30. Tại sao Guid.ToString() đảo ngược thứ tự byte?
Cảm ơn Paul.Giao diện của bạn đang hoạt động tốt.Nhưng tôi không thể hiểu việc sử dụng tham số thứ hai "0x1B". Có một số loại mặt nạ? Một nghi ngờ khác là .. Có thể thực hiện thao tác tương tự trên quần short không? – Andy
Tôi đã thêm một ví dụ thứ hai để tải và đảo ngược quần short. Mặt nạ được bao phủ trong các tài liệu của Intel nhưng tôi đã thêm các bình luận để hiển thị nó được xây dựng như thế nào. –
P.S. Tôi rất khuyên bạn nên tải xuống [Hướng dẫn nội tại của Intel] (http://software.intel.com/en-us/articles/intel-intrinsics-guide) - một công cụ rất hữu ích cho WIN/Mac OS X/Linux có tài liệu tất cả Hướng dẫn và bản chất SSE/AVX theo cách rất dễ tiếp cận. –