Tôi rất mới đối với SSE và đã tối ưu hóa một phần mã bằng nội tại. Tôi hài lòng với bản thân chiến dịch, nhưng tôi đang tìm cách tốt hơn để viết kết quả. Kết quả sẽ kết thúc trong ba biến số _m128i
.Làm thế nào để lưu trữ các giá trị trong các vị trí bộ nhớ không tiếp giáp với SSE nội tại?
Điều tôi đang cố gắng lưu trữ các byte cụ thể từ các giá trị kết quả đến các vị trí bộ nhớ không tiếp giáp. Tôi hiện đang làm điều này:
__m128i values0,values1,values2;
/*Do stuff and store the results in values0, values1, and values2*/
y[0] = (BYTE)_mm_extract_epi16(values0,0);
cb[2]=cb[3] = (BYTE)_mm_extract_epi16(values0,2);
y[3] = (BYTE)_mm_extract_epi16(values0,4);
cr[4]=cr[5] = (BYTE)_mm_extract_epi16(values0,6);
cb[0]=cb[1] = (BYTE)_mm_extract_epi16(values1,0);
y[1] = (BYTE)_mm_extract_epi16(values1,2);
cr[2]=cr[3] = (BYTE)_mm_extract_epi16(values1,4);
y[4] = (BYTE)_mm_extract_epi16(values1,6);
cr[0]=cr[1] = (BYTE)_mm_extract_epi16(values2,0);
y[2] = (BYTE)_mm_extract_epi16(values2,2);
cb[4]=cb[5] = (BYTE)_mm_extract_epi16(values2,4);
y[5] = (BYTE)_mm_extract_epi16(values2,6);
đâu y
, cb
, và cr
là byte (unsigned char
) mảng. Điều này có vẻ sai với tôi vì lý do tôi không thể xác định. Có ai có bất cứ đề nghị cho một cách tốt hơn?
Cảm ơn!
Tôi nghĩ bạn đang tìm kiếm một trong các nội dung _mm_packXxx. –
Tôi nhìn vào những thứ đó, nhưng không ai trong số họ dường như làm những gì tôi muốn. Tôi sẽ đi kiểm tra một lần nữa, cảm ơn. – Scott