2009-07-01 33 views
29

Tôi đã thêm cấu hình x64 vào dự án C++ của mình để biên dịch phiên bản 64 bit của ứng dụng. Mọi thứ đều ổn, nhưng trình biên dịch đưa ra cảnh báo sau:Tùy chọn SSE2 trong Visual C++ (x64)

`cl : Command line warning D9002 : ignoring unknown option '/arch:SSE2'` 

Có tối ưu hóa SSE2 thực sự không có sẵn cho các dự án 64 bit không?

Trả lời

41

Dường như tất cả các bộ vi xử lý 64 bit đều có SSE2. Vì tùy chọn trình biên dịch luôn được bật theo mặc định, không cần phải bật nó theo cách thủ công.

Từ Wikipedia:

lệnh SSE: Kiến trúc AMD64 gốc thông qua SSE và SSE2 của Intel như hướng dẫn cốt lõi. Hướng dẫn SSE3 được thêm vào tháng 4 năm 2005. SSE2 thay thế độ chính xác IEEE 80 bit của bộ chỉ lệnh x87 bằng lựa chọn của toán học dấu chấm động IEEE 32-bit hoặc 64-bit. Điều này cung cấp các hoạt động điểm nổi tương thích với nhiều CPU hiện đại khác. Các lệnh SSE và SSE2 cũng đã được mở rộng để hoạt động trên tám thanh ghi XMM mới. SSE và SSE2 có sẵn trong chế độ 32 bit trong các bộ vi xử lý x86 hiện đại; tuy nhiên, nếu chúng được sử dụng trong các chương trình 32 bit, các chương trình đó sẽ chỉ hoạt động trên các hệ thống có bộ xử lý có tính năng này. Đây không phải là vấn đề trong các chương trình 64 bit, vì tất cả các bộ vi xử lý AMD64 đều có SSE và SSE2, do đó, sử dụng lệnh SSE và SSE2 thay vì lệnh x87 không làm giảm bộ máy có thể chạy chương trình x64. SSE và SSE2 thường nhanh hơn và sao chép hầu hết các tính năng của hướng dẫn x87 truyền thống, MMX và 3DNow !.

+4

yep, SSE2 là tùy chọn duy nhất ở chế độ 64 bit. FPU x87 cũ không còn nữa. – jalf

+1

vậy tại sao lỗi xuất hiện? –

+4

Nó không phải là một lỗi, đó là một cảnh báo, và nó có để cảnh báo bạn rằng lá cờ không làm những gì bạn nghĩ rằng nó đang làm. –

3

Tôi hiểu cảnh báo xuất hiện nếu bạn chọn SSE2, mặc dù nó vẫn ngớ ngẩn. Tuy nhiên bạn vẫn nhận được cảnh báo nếu bạn chọn/arch: AVX. Tôi chắc chắn nó sẽ được sửa chữa với SP1. Nó chỉ là một chút spam và một ít phiền toái.

Các vấn đề liên quan