Table of Opcodes opcode destination size source 1 size source 2 size description pseudo code absb 1 1 absolute value (a < 0) ? -a : a addb 1 1 1 add a + b addssb 1 1 1 add with signed saturate clamp(a + b) addusb 1 1 1 add with unsigned saturate clamp(a + b) andb 1 1 1 bitwise AND a & b andnb 1 1 1 bitwise AND NOT a & (~b) avgsb 1 1 1 signed average (a + b + 1)>>1 avgub 1 1 1 unsigned average (a + b + 1)>>1 cmpeqb 1 1 1 compare equal (a == b) ? (~0) : 0 cmpgtsb 1 1 1 compare greater than (a > b) ? (~0) : 0 copyb 1 1 copy a loadb 1 1 load from memory array[i] loadoffb 1 1 4S load from memory with offset array[i+offset] loadupdb 1 1 load upsampled duplicate array[i>>1] loadupib 1 1 load upsampled interpolate (array[i>>1] + array[(i+1)>>1] + 1)>>1 loadpb 1 1 load parameter or constant scalar ldresnearb 1 1 4S load, nearest neighbor resampled array[(b+c*i)>>8] ldresnearl 4 4 4S load, nearest neighbor resampled array[(b+c*i)>>8] ldreslinb 1 1 4S load, bilinear resampled special ldreslinl 4 4 4S load, bilinear resampled special maxsb 1 1 1 signed maximum (a > b) ? a : b maxub 1 1 1 unsigned maximum (a > b) ? a : b minsb 1 1 1 signed minimum (a < b) ? a : b minub 1 1 1 unsigned minimum (a < b) ? a : b mullb 1 1 1 low bits of multiply a * b mulhsb 1 1 1 high bits of signed multiply (a * b) >> 8 mulhub 1 1 1 high bits of unsigned multiply (a * b) >> 8 orb 1 1 1 bitwise or a | b shlb 1 1 1S shift left a << b shrsb 1 1 1S signed shift right a >> b shrub 1 1 1S unsigned shift right a >> b signb 1 1 sign sign(a) storeb 1 1 store to memory special subb 1 1 1 subtract a - b subssb 1 1 1 subtract with signed saturate clamp(a - b) subusb 1 1 1 subtract with unsigned saturate clamp(a - b) xorb 1 1 1 bitwise XOR a ^ b absw 2 2 absolute value (a < 0) ? -a : a addw 2 2 2 add a + b addssw 2 2 2 add with signed saturate clamp(a + b) addusw 2 2 2 add with unsigned saturate clamp(a + b) andw 2 2 2 bitwise AND a & b andnw 2 2 2 bitwise AND NOT a & (~b) avgsw 2 2 2 signed average (a + b + 1)>>1 avguw 2 2 2 unsigned average (a + b + 1)>>1 cmpeqw 2 2 2 compare equal (a == b) ? (~0) : 0 cmpgtsw 2 2 2 compare greater than (a > b) ? (~0) : 0 copyw 2 2 copy a div255w 2 2 divide by 255 a/255 divluw 2 2 2 saturated unsigned divide 16-bit by 8-bit clamp(a/(b & 255),0,255) loadw 2 2 load from memory array[i] loadoffw 2 2 4S load from memory with offset array[i+offset] loadpw 2 2 load parameter or constant scalar maxsw 2 2 2 signed maximum (a > b) ? a : b maxuw 2 2 2 unsigned maximum (a > b) ? a : b minsw 2 2 2 signed minimum (a < b) ? a : b minuw 2 2 2 unsigned minimum (a < b) ? a : b mullw 2 2 2 low bits of multiply a * b mulhsw 2 2 2 high bits of signed multiply (a * b) >> 8 mulhuw 2 2 2 high bits of unsigned multiply (a * b) >> 8 orw 2 2 2 bitwise or a | b shlw 2 2 2S shift left a << b shrsw 2 2 2S signed shift right a >> b shruw 2 2 2S unsigned shift right a >> b signw 2 2 sign sign(a) storew 2 2 store to memory special subw 2 2 2 subtract a - b subssw 2 2 2 subtract with signed saturate clamp(a - b) subusw 2 2 2 subtract with unsigned saturate clamp(a - b) xorw 2 2 2 bitwise XOR a ^ b absl 4 4 absolute value (a < 0) ? -a : a addl 4 4 4 add a + b addssl 4 4 4 add with signed saturate clamp(a + b) addusl 4 4 4 add with unsigned saturate clamp(a + b) andl 4 4 4 bitwise AND a & b andnl 4 4 4 bitwise AND NOT a & (~b) avgsl 4 4 4 signed average (a + b + 1)>>1 avgul 4 4 4 unsigned average (a + b + 1)>>1 cmpeql 4 4 4 compare equal (a == b) ? (~0) : 0 cmpgtsl 4 4 4 compare greater than (a > b) ? (~0) : 0 copyl 4 4 copy a loadl 4 4 load from memory array[i] loadoffl 4 4 4S load from memory with offset array[i+offset] loadpl 4 4 load parameter or constant scalar maxsl 4 4 4 signed maximum (a > b) ? a : b maxul 4 4 4 unsigned maximum (a > b) ? a : b minsl 4 4 4 signed minimum (a < b) ? a : b minul 4 4 4 unsigned minimum (a < b) ? a : b mulll 4 4 4 low bits of multiply a * b mulhsl 4 4 4 high bits of signed multiply (a * b) >> 8 mulhul 4 4 4 high bits of unsigned multiply (a * b) >> 8 orl 4 4 4 bitwise or a | b shll 4 4 4S shift left a << b shrsl 4 4 4S signed shift right a >> b shrul 4 4 4S unsigned shift right a >> b signl 4 4 sign sign(a) storel 4 4 store to memory special subl 4 4 4 subtract a - b subssl 4 4 4 subtract with signed saturate clamp(a - b) subusl 4 4 4 subtract with unsigned saturate clamp(a - b) xorl 4 4 4 bitwise XOR a ^ b loadq 8 8 load from memory array[i] loadpq 8 8 load parameter or constant scalar storeq 8 8 store to memory special splatw3q 8 8 duplicates high 16-bits to lower 48 bits special convsbw 2 1 convert signed a convubw 2 1 convert unsigned a splatbw 2 1 duplicates 8 bits to both halfs of 16 bits special splatbl 4 1 duplicates 8 bits to all parts of 32 bits special convswl 4 2 convert signed a convuwl 4 2 convert unsigned a convslq 8 4 signed convert a convulq 8 4 unsigned convert a convwb 1 2 convert a convhwb 1 2 shift and convert a>>8 convssswb 1 2 convert signed to signed with saturation clamp(a) convsuswb 1 2 convert signed to unsigned with saturation clamp(a) convusswb 1 2 convert unsigned to signed with saturation clamp(a) convuuswb 1 2 convert unsigned to unsigned with saturation clamp(a) convlw 2 4 convert a convhlw 2 4 shift and convert a>>16 convssslw 2 4 convert signed to unsigned with saturation clamp(a) convsuslw 2 4 convert signed to signed with saturation clamp(a) convusslw 2 4 convert unsigned to unsigned with saturation clamp(a) convuuslw 2 4 convert unsigned to signed with saturation clamp(a) convql 4 8 convsssql 4 8 convert signed to unsigned with saturation clamp(a) convsusql 4 8 convert signed to signed with saturation clamp(a) convussql 4 8 convert unsigned to unsigned with saturation clamp(a) convuusql 4 8 convert unsigned to signed with saturation clamp(a) mulsbw 2 1 1 multiply signed a * b mulubw 2 1 1 multiply unsigned a * b mulswl 4 2 2 multiply signed a * b muluwl 4 2 2 multiply unsigned a * b accw 2 2 accumulate += a accl 4 4 accumulate += a accsadubl 4 1 1 accumulate absolute difference += abs(a - b) swapw 2 2 endianness swap special swapl 4 4 endianness swap special select0wb 1 2 select first half special select1wb 1 2 select second half special select0lw 2 4 select first half special select1lw 2 4 select second half special mergewl 4 2 2 merge halves special mergebw 2 1 1 merge halves special splitlw 2 4 split first/second words special splitwb 1 2 split first/second bytes special addf 4 4 4 add a + b subf 4 4 4 subtract a - b mulf 4 4 4 multiply a * b divf 4 4 4 divide a / b sqrtf 4 4 square root sqrt(a) maxf 4 4 4 maximum max(a,b) minf 4 4 4 minimum min(a,b) cmpeqf 4 4 4 compare equal (a == b) ? (~0) : 0 cmpltf 4 4 4 compare less than (a == b) ? (~0) : 0 cmplef 4 4 4 compare less than or equal (a == b) ? (~0) : 0 convfl 4 4 convert float point to integer a convlf 4 4 convert integer to floating point a