1*073d9f2cSAleksandar Markovic #include<stdio.h> 2*073d9f2cSAleksandar Markovic #include<assert.h> 3*073d9f2cSAleksandar Markovic 4*073d9f2cSAleksandar Markovic int main() 5*073d9f2cSAleksandar Markovic { 6*073d9f2cSAleksandar Markovic int rd, rs, rt; 7*073d9f2cSAleksandar Markovic int dsp; 8*073d9f2cSAleksandar Markovic int result; 9*073d9f2cSAleksandar Markovic 10*073d9f2cSAleksandar Markovic rs = 0xFFFFFFFF; 11*073d9f2cSAleksandar Markovic rt = 0x10101010; 12*073d9f2cSAleksandar Markovic result = 0x100F100F; 13*073d9f2cSAleksandar Markovic __asm 14*073d9f2cSAleksandar Markovic ("addq_s.ph %0, %1, %2\n\t" 15*073d9f2cSAleksandar Markovic : "=r"(rd) 16*073d9f2cSAleksandar Markovic : "r"(rs), "r"(rt) 17*073d9f2cSAleksandar Markovic ); 18*073d9f2cSAleksandar Markovic assert(result == rd); 19*073d9f2cSAleksandar Markovic 20*073d9f2cSAleksandar Markovic rs = 0x3712847D; 21*073d9f2cSAleksandar Markovic rt = 0x0031AF2D; 22*073d9f2cSAleksandar Markovic result = 0x37438000; 23*073d9f2cSAleksandar Markovic __asm 24*073d9f2cSAleksandar Markovic ("addq_s.ph %0, %1, %2\n\t" 25*073d9f2cSAleksandar Markovic : "=r"(rd) 26*073d9f2cSAleksandar Markovic : "r"(rs), "r"(rt) 27*073d9f2cSAleksandar Markovic ); 28*073d9f2cSAleksandar Markovic assert(result == rd); 29*073d9f2cSAleksandar Markovic 30*073d9f2cSAleksandar Markovic __asm 31*073d9f2cSAleksandar Markovic ("rddsp %0\n\t" 32*073d9f2cSAleksandar Markovic : "=r"(dsp) 33*073d9f2cSAleksandar Markovic ); 34*073d9f2cSAleksandar Markovic assert(((dsp >> 20) & 0x01) == 1); 35*073d9f2cSAleksandar Markovic 36*073d9f2cSAleksandar Markovic rs = 0x7fff847D; 37*073d9f2cSAleksandar Markovic rt = 0x0031AF2D; 38*073d9f2cSAleksandar Markovic result = 0x7fff8000; 39*073d9f2cSAleksandar Markovic __asm 40*073d9f2cSAleksandar Markovic ("addq_s.ph %0, %1, %2\n\t" 41*073d9f2cSAleksandar Markovic : "=r"(rd) 42*073d9f2cSAleksandar Markovic : "r"(rs), "r"(rt) 43*073d9f2cSAleksandar Markovic ); 44*073d9f2cSAleksandar Markovic assert(result == rd); 45*073d9f2cSAleksandar Markovic 46*073d9f2cSAleksandar Markovic __asm 47*073d9f2cSAleksandar Markovic ("rddsp %0\n\t" 48*073d9f2cSAleksandar Markovic : "=r"(dsp) 49*073d9f2cSAleksandar Markovic ); 50*073d9f2cSAleksandar Markovic assert(((dsp >> 20) & 0x01) == 1); 51*073d9f2cSAleksandar Markovic 52*073d9f2cSAleksandar Markovic rs = 0x8030847D; 53*073d9f2cSAleksandar Markovic rt = 0x8a00AF2D; 54*073d9f2cSAleksandar Markovic result = 0x80008000; 55*073d9f2cSAleksandar Markovic __asm 56*073d9f2cSAleksandar Markovic ("addq_s.ph %0, %1, %2\n\t" 57*073d9f2cSAleksandar Markovic : "=r"(rd) 58*073d9f2cSAleksandar Markovic : "r"(rs), "r"(rt) 59*073d9f2cSAleksandar Markovic ); 60*073d9f2cSAleksandar Markovic assert(result == rd); 61*073d9f2cSAleksandar Markovic 62*073d9f2cSAleksandar Markovic __asm 63*073d9f2cSAleksandar Markovic ("rddsp %0\n\t" 64*073d9f2cSAleksandar Markovic : "=r"(dsp) 65*073d9f2cSAleksandar Markovic ); 66*073d9f2cSAleksandar Markovic assert(((dsp >> 20) & 0x01) == 1); 67*073d9f2cSAleksandar Markovic 68*073d9f2cSAleksandar Markovic return 0; 69*073d9f2cSAleksandar Markovic } 70