#include "io.h" int main(void) { long long rd, rs, rt, result; rd = 0; rs = 0x45BCFFFF12345678; rt = 0x98529AD287654321; result = 0x52fbec7035a2ca5c; __asm ("muleq_s.pw.qhl %0, %1, %2\n\t" : "=r"(rd) : "r"(rs), "r"(rt) ); if (result != rd) { printf("1 muleq_s.pw.qhl error\n"); return -1; } rd = 0; rs = 0x45BC800012345678; rt = 0x9852800087654321; result = 0x52fbec707FFFFFFF; __asm ("muleq_s.pw.qhl %0, %1, %2\n\t" : "=r"(rd) : "r"(rs), "r"(rt) ); if (result != rd) { printf("2 muleq_s.pw.qhl error\n"); return -1; } rd = 0; __asm ("rddsp %0\n\t" : "=r"(rd) ); rd = rd >> 21; rd = rd & 0x1; if (rd != 1) { printf("3 muleq_s.pw.qhl error\n"); return -1; } return 0; }