- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
I have two 128-bit register xmm1, xmm2, each with 16 packed unsigned char, I want to get the absolute value of the difference between the corresponding unsigned chars, Is there an instruction to get it? Why isn't there the instruction to get it?
Link copiado
6 Respostas
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Quoting - hurricanezhb
I have two 128-bit register xmm1, xmm2, each with 16 packed unsigned char, I want to get the absolute value of the difference between the corresponding unsigned chars, Is there an instruction to get it? Why isn't there the instruction to get it?
PSUBB xmm1, xmm2
PABSB xmm1, xmm2
- si the easyest way...
look at:
Intel 64 and IA-32 Architectures
Software Developers Manual
Volume 2B:
Instruction Set Reference, N-Z
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Quoting - hurricanezhb
I have two 128-bit register xmm1, xmm2, each with 16 packed unsigned char, I want to get the absolute value of the difference between the corresponding unsigned chars, Is there an instruction to get it? Why isn't there the instruction to get it?
Probably, both unsigned char and unsigned int instructions are not supported till date.
The Intel Reference document - Intel-64 & IA-32 Architectures Software Develope's Manual, Vol.2B 4-91, Order# 253667-025US only speaks about signed bytes/words/double intergers.
~BR
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Probably, both unsigned char and unsigned int instructions are not supported till date.
The Intel Reference document - Intel-64 & IA-32 Architectures Software Develope's Manual, Vol.2B 4-91, Order# 253667-025US only speaks about signed bytes/words/double intergers.
The Intel Reference document - Intel-64 & IA-32 Architectures Software Develope's Manual, Vol.2B 4-91, Order# 253667-025US only speaks about signed bytes/words/double intergers.
That probavly because data type char in C languages is the same as byte, I think. Both are 8 bits long and it doesn't mather whether it is signed or unsigned because in 2 complement logics it is the same...
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Quoting - hurricanezhb
I have two 128-bit register xmm1, xmm2, each with 16 packed unsigned char, I want to get the absolute value of the difference between the corresponding unsigned chars, Is there an instruction to get it? Why isn't there the instruction to get it?
Other sources say that abs value of the difference can be obtained by (a saturatedminus b) OR (b saturatedminus a). You can translate that into three vector operations using psubsb (subtraction using saturated arithmetic) and por.
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
The question is, what do you want to do, if the result overflow...
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
psubb(pmaxub(a,b), pminub(a,b))
Responder
Opções do tópico
- Subscrever fonte RSS
- Marcar tópico como novo
- Marcar tópico como lido
- Flutuar este Tópico para o utilizador atual
- Marcador
- Subscrever
- Página amigável para impressora