⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mips32-dsp.c

📁 用于进行gcc测试
💻 C
📖 第 1 页 / 共 2 页
字号:
  v2q15_s = (v2q15) {0x247, 0xacf};  v2q15_r = __builtin_mips_shra_r_ph (v2q15_a, i32_b);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();  q31_a = 0x70000000;  q31_s = 0x1c000000;  q31_r = __builtin_mips_shra_r_w (q31_a, 2);  if (q31_r != q31_s)    abort ();  q31_a = 0x70000004;  i32_b = 3;  q31_s = 0x0e000001;  q31_r = __builtin_mips_shra_r_w (q31_a, i32_b);  if (q31_r != q31_s)    abort ();  v4i8_a = (v4i8) {0x1, 0x2, 0x3, 0x4};  v2q15_b = (v2q15) {0x6f89, 0x1111};  if (little_endian)    v2q15_s = (v2q15) {0xffff, 0x4444};  else    v2q15_s = (v2q15) {0x6f89, 0x2222};  v2q15_r = __builtin_mips_muleu_s_ph_qbl (v4i8_a, v2q15_b);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();  v4i8_a = (v4i8) {0x1, 0x2, 0x3, 0x4};  v2q15_b = (v2q15) {0x6f89, 0x1111};  if (little_endian)    v2q15_s = (v2q15) {0x6f89, 0x2222};  else    v2q15_s = (v2q15) {0xffff, 0x4444};  v2q15_r = __builtin_mips_muleu_s_ph_qbr (v4i8_a, v2q15_b);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();  v2q15_a = (v2q15) {0x1234, 0x5678};  v2q15_b = (v2q15) {0x6f89, 0x1111};  v2q15_s = (v2q15) {0x0fdd, 0x0b87};  v2q15_r = __builtin_mips_mulq_rs_ph (v2q15_a, v2q15_b);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();  v2q15_a = (v2q15) {0x8000, 0x8000};  v2q15_b = (v2q15) {0x8000, 0x8000};  q31_s = 0x7fffffff;  q31_r = __builtin_mips_muleq_s_w_phl (v2q15_a, v2q15_b);  if (q31_r != q31_s)    abort ();  v2q15_a = (v2q15) {0x8000, 0x8000};  v2q15_b = (v2q15) {0x8000, 0x8000};  q31_s = 0x7fffffff;  q31_r = __builtin_mips_muleq_s_w_phr (v2q15_a, v2q15_b);  if (q31_r != q31_s)    abort ();#ifndef __mips64  a64_a = 0x22221111;  v4i8_b = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_c = (v4i8) {0xaa, 0x89, 0x11, 0x34};  if (little_endian)    a64_s = 0x22222f27;  else    a64_s = 0x222238d9;  a64_r = __builtin_mips_dpau_h_qbl (a64_a, v4i8_b, v4i8_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x22221111;  v4i8_b = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_c = (v4i8) {0xaa, 0x89, 0x11, 0x34};  if (little_endian)    a64_s = 0x222238d9;  else    a64_s = 0x22222f27;  a64_r = __builtin_mips_dpau_h_qbr (a64_a, v4i8_b, v4i8_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x22221111;  v4i8_b = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_c = (v4i8) {0xaa, 0x89, 0x11, 0x34};  if (little_endian)    a64_s = 0x2221f2fb;  else    a64_s = 0x2221e949;  a64_r = __builtin_mips_dpsu_h_qbl (a64_a, v4i8_b, v4i8_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x22221111;  v4i8_b = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_c = (v4i8) {0xaa, 0x89, 0x11, 0x34};  if (little_endian)    a64_s = 0x2221e949;  else    a64_s = 0x2221f2fb;  a64_r = __builtin_mips_dpsu_h_qbr (a64_a, v4i8_b, v4i8_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  v2q15_b = (v2q15) {0x8000, 0x5678};  v2q15_c = (v2q15) {0x8000, 0x1111};  a64_s = 0x8b877d00;  a64_r = __builtin_mips_dpaq_s_w_ph (a64_a, v2q15_b, v2q15_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  v2q15_b = (v2q15) {0x8000, 0x5678};  v2q15_c = (v2q15) {0x8000, 0x1111};  a64_s = 0xffffffff7478a522LL;  a64_r = __builtin_mips_dpsq_s_w_ph (a64_a, v2q15_b, v2q15_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  v2q15_b = (v2q15) {0x8000, 0x5678};  v2q15_c = (v2q15) {0x8000, 0x1111};  if (little_endian)    a64_s = 0xffffffff8b877d02LL;  else    a64_s = 0x7478a520;  a64_r = __builtin_mips_mulsaq_s_w_ph (a64_a, v2q15_b, v2q15_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  q31_b = 0x80000000;  q31_c = 0x80000000;  a64_s = 0x7fffffffffffffffLL;  a64_r = __builtin_mips_dpaq_sa_l_w (a64_a, q31_b, q31_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  q31_b = 0x80000000;  q31_c = 0x80000000;  a64_s = 0x8000000000001112LL;  a64_r = __builtin_mips_dpsq_sa_l_w (a64_a, q31_b, q31_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  v2q15_b = (v2q15) {0x8000, 0x1};  v2q15_c = (v2q15) {0x8000, 0x2};  if (little_endian)    a64_s = 0x1115;  else    a64_s = 0x80001110;  a64_r = __builtin_mips_maq_s_w_phl (a64_a, v2q15_b, v2q15_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  v2q15_b = (v2q15) {0x8000, 0x1};  v2q15_c = (v2q15) {0x8000, 0x2};  if (little_endian)    a64_s = 0x80001110;  else    a64_s = 0x1115;  a64_r = __builtin_mips_maq_s_w_phr (a64_a, v2q15_b, v2q15_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  v2q15_b = (v2q15) {0x8000, 0x1};  v2q15_c = (v2q15) {0x8000, 0x2};  if (little_endian)    a64_s = 0x1115;  else    a64_s = 0x7fffffff;  a64_r = __builtin_mips_maq_sa_w_phl (a64_a, v2q15_b, v2q15_c);  if (a64_r != a64_s)    abort ();  a64_a = 0x00001111;  v2q15_b = (v2q15) {0x8000, 0x1};  v2q15_c = (v2q15) {0x8000, 0x2};  if (little_endian)    a64_s = 0x7fffffff;  else    a64_s = 0x1115;  a64_r = __builtin_mips_maq_sa_w_phr (a64_a, v2q15_b, v2q15_c);  if (a64_r != a64_s)    abort ();#endif  i32_a = 0x12345678;  i32_s = 0x00001e6a;  i32_r = __builtin_mips_bitrev (i32_a);  if (i32_r != i32_s)    abort ();  i32_a = 0x00000208; // pos is 8, size is 4  __builtin_mips_wrdsp (i32_a, 31);  i32_a = 0x12345678;  i32_b = 0x87654321;  i32_s = 0x12345178;  i32_r = __builtin_mips_insv (i32_a, i32_b);  if (i32_r != i32_s)    abort ();  v4i8_s = (v4i8) {1, 1, 1, 1};  v4i8_r = __builtin_mips_repl_qb (1);  r = (int) v4i8_r;  s = (int) v4i8_s;  if (r != s)    abort ();  i32_a = 99;  v4i8_s = (v4i8) {99, 99, 99, 99};  v4i8_r = __builtin_mips_repl_qb (i32_a);  r = (int) v4i8_r;  s = (int) v4i8_s;  if (r != s)    abort ();  v2q15_s = (v2q15) {30, 30};  v2q15_r = __builtin_mips_repl_ph (30);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();  i32_a = 0x5612;  v2q15_s = (v2q15) {0x5612, 0x5612};  v2q15_r = __builtin_mips_repl_ph (i32_a);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_b = (v4i8) {0x12, 0x34, 0x78, 0x56};  if (little_endian)    i32_s = 0x03000000;  else    i32_s = 0x0c000000;  __builtin_mips_cmpu_eq_qb (v4i8_a, v4i8_b);  i32_r = __builtin_mips_rddsp (16);  if (i32_r != i32_s)    abort ();  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_b = (v4i8) {0x12, 0x34, 0x78, 0x56};  if (little_endian)    i32_s = 0x04000000;  else    i32_s = 0x02000000;  __builtin_mips_cmpu_lt_qb (v4i8_a, v4i8_b);  i32_r = __builtin_mips_rddsp (16);  if (i32_r != i32_s)    abort ();  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_b = (v4i8) {0x12, 0x34, 0x78, 0x56};  if (little_endian)    i32_s = 0x07000000;  else    i32_s = 0x0e000000;  __builtin_mips_cmpu_le_qb (v4i8_a, v4i8_b);  i32_r = __builtin_mips_rddsp (16);  if (i32_r != i32_s)    abort ();  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_b = (v4i8) {0x12, 0x34, 0x78, 0x56};  if (little_endian)    i32_s = 0x3;  else    i32_s = 0xc;  i32_r=__builtin_mips_cmpgu_eq_qb (v4i8_a, v4i8_b);  if (i32_r != i32_s)    abort ();  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_b = (v4i8) {0x12, 0x34, 0x78, 0x56};  if (little_endian)    i32_s = 0x4;  else    i32_s = 0x2;  i32_r = __builtin_mips_cmpgu_lt_qb (v4i8_a, v4i8_b);  if (i32_r != i32_s)    abort ();  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_b = (v4i8) {0x12, 0x34, 0x78, 0x56};  if (little_endian)    i32_s = 0x7;  else    i32_s = 0xe;  i32_r = __builtin_mips_cmpgu_le_qb (v4i8_a, v4i8_b);  if (i32_r != i32_s)    abort ();  __builtin_mips_wrdsp (0,31); // Clear all condition code bits.  v2q15_a = (v2q15) {0x1234, 0x5678};  v2q15_b = (v2q15) {0x1234, 0x7856};  if (little_endian)    i32_s = 0x01000000;  else    i32_s = 0x02000000;  __builtin_mips_cmp_eq_ph (v2q15_a, v2q15_b);  i32_r = __builtin_mips_rddsp (16);  if (i32_r != i32_s)    abort ();  v2q15_a = (v2q15) {0x1234, 0x5678};  v2q15_b = (v2q15) {0x1234, 0x7856};  if (little_endian)    i32_s = 0x02000000;  else    i32_s = 0x01000000;  __builtin_mips_cmp_lt_ph (v2q15_a, v2q15_b);  i32_r = __builtin_mips_rddsp (16);  if (i32_r != i32_s)    abort ();  v2q15_a = (v2q15) {0x1234, 0x5678};  v2q15_b = (v2q15) {0x1234, 0x7856};  i32_s = 0x03000000;  __builtin_mips_cmp_le_ph (v2q15_a, v2q15_b);  i32_r = __builtin_mips_rddsp (16);  if (i32_r != i32_s)    abort ();  i32_a = 0x0a000000; // cc: 0000 1010  __builtin_mips_wrdsp (i32_a, 31);  v4i8_a = (v4i8) {0x12, 0x34, 0x56, 0x78};  v4i8_b = (v4i8) {0x21, 0x43, 0x65, 0x87};  if (little_endian)    v4i8_s = (v4i8) {0x21, 0x34, 0x65, 0x78};  else    v4i8_s = (v4i8) {0x12, 0x43, 0x56, 0x87};  v4i8_r = __builtin_mips_pick_qb (v4i8_a, v4i8_b);  r = (int) v4i8_r;  s = (int) v4i8_s;  if (r != s)    abort ();  i32_a = 0x02000000; // cc: 0000 0010  __builtin_mips_wrdsp (i32_a, 31);  v2q15_a = (v2q15) {0x1234, 0x5678};  v2q15_b = (v2q15) {0x2143, 0x6587};  if (little_endian)    v2q15_s = (v2q15) {0x2143, 0x5678};  else    v2q15_s = (v2q15) {0x1234, 0x6587};  v2q15_r = __builtin_mips_pick_ph (v2q15_a, v2q15_b);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();  v2q15_a = (v2q15) {0x1234, 0x5678};  v2q15_b = (v2q15) {0x1234, 0x7856};  if (little_endian)    v2q15_s = (v2q15) {0x7856, 0x1234};  else    v2q15_s = (v2q15) {0x5678, 0x1234};  v2q15_r = __builtin_mips_packrl_ph (v2q15_a, v2q15_b);  r = (int) v2q15_r;  s = (int) v2q15_s;  if (r != s)    abort ();#ifndef __mips64  a64_a = 0x1234567887654321LL;  i32_s = 0x88765432;  i32_r = __builtin_mips_extr_w (a64_a, 4);  if (i32_r != i32_s)    abort ();  a64_a = 0x1234567887658321LL;  i32_s = 0x56788766;  i32_r = __builtin_mips_extr_r_w (a64_a, 16);  if (i32_r != i32_s)    abort ();  a64_a = 0x12345677fffffff8LL;  i32_s = 0x7fffffff;  i32_r = __builtin_mips_extr_rs_w (a64_a, 4);  if (i32_r != i32_s)    abort ();  a64_a = 0x1234567887658321LL;  i32_s = 0x7fff;  i32_r = __builtin_mips_extr_s_h (a64_a, 16);  if (i32_r != i32_s)    abort ();  a64_a = 0x0000007887658321LL;  i32_b = 24;  i32_s = 0x7887;  i32_r = __builtin_mips_extr_s_h (a64_a, i32_b);  if (i32_r != i32_s)    abort ();  a64_a = 0x1234567887654321LL;  i32_b = 4;  i32_s = 0x88765432;  i32_r = __builtin_mips_extr_w (a64_a, i32_b);  if (i32_r != i32_s)    abort ();  a64_a = 0x1234567887658321LL;  i32_b = 16;  i32_s = 0x56788766;  i32_r = __builtin_mips_extr_r_w (a64_a, i32_b);  if (i32_r != i32_s)    abort ();  a64_a = 0x12345677fffffff8LL;  i32_b = 4;  i32_s = 0x7fffffff;  i32_r = __builtin_mips_extr_rs_w (a64_a, i32_b);  if (i32_r != i32_s)    abort ();  i32_a = 0x0000021f; // pos is 31  __builtin_mips_wrdsp (i32_a, 31);  a64_a = 0x1234567887654321LL;  i32_s = 8;  i32_r = __builtin_mips_extp (a64_a, 3); // extract 4 bits  if (i32_r != i32_s)    abort ();  i32_a = 0x0000021f; // pos is 31  __builtin_mips_wrdsp (i32_a, 31);  a64_a = 0x1234567887654321LL;  i32_b = 7; // size is 8. NOTE!! we should use 7  i32_s = 0x87;  i32_r = __builtin_mips_extp (a64_a, i32_b);  if (i32_r != i32_s)    abort ();  i32_a = 0x0000021f; // pos is 31  __builtin_mips_wrdsp (i32_a, 31);  a64_a = 0x1234567887654321LL;  i32_s = 8;  i32_r = __builtin_mips_extpdp (a64_a, 3); // extract 4 bits  if (i32_r != i32_s)    abort ();  i32_s = 0x0000021b; // pos is 27  i32_r = __builtin_mips_rddsp (31);  if (i32_r != i32_s)    abort ();  i32_a = 0x0000021f; // pos is 31  __builtin_mips_wrdsp (i32_a, 31);  a64_a = 0x1234567887654321LL;  i32_b = 11; // size is 12. NOTE!!! We should use 11  i32_s = 0x876;  i32_r = __builtin_mips_extpdp (a64_a, i32_b);  if (i32_r != i32_s)    abort ();  i32_s = 0x00000213; // pos is 19  i32_r = __builtin_mips_rddsp (31);  if (i32_r != i32_s)    abort ();  a64_a = 0x1234567887654321LL;  a64_s = 0x0012345678876543LL;  a64_r = __builtin_mips_shilo (a64_a, 8);  if (a64_r != a64_s)    abort ();  a64_a = 0x1234567887654321LL;  i32_b = -16;  a64_s = 0x5678876543210000LL;  a64_r = __builtin_mips_shilo (a64_a, i32_b);  if (a64_r != a64_s)    abort ();  i32_a = 0x0;  __builtin_mips_wrdsp (i32_a, 31);  a64_a = 0x1234567887654321LL;  i32_b = 0x11112222;  a64_s = 0x8765432111112222LL;  a64_r = __builtin_mips_mthlip (a64_a, i32_b);  if (a64_r != a64_s)    abort ();  i32_s = 32;  i32_r = __builtin_mips_rddsp (31);  if (i32_r != i32_s)    abort ();#endif  i32_a = 0x1357a468;  __builtin_mips_wrdsp (i32_a, 63);  i32_s = 0x03572428;  i32_r = __builtin_mips_rddsp (63);  if (i32_r != i32_s)    abort ();  ptr_a = &array;  i32_b = 37;  i32_s = 37;  i32_r = __builtin_mips_lbux (ptr_a, i32_b);  if (i32_r != i32_s)    abort ();  ptr_a = &array;  i32_b = 38;  if (little_endian)    i32_s = 0x2726;  else    i32_s = 0x2627;  i32_r = __builtin_mips_lhx (ptr_a, i32_b);  if (i32_r != i32_s)    abort ();  ptr_a = &array;  i32_b = 40;  if (little_endian)    i32_s = 0x2b2a2928;  else    i32_s = 0x28292a2b;  i32_r = __builtin_mips_lwx (ptr_a, i32_b);  if (i32_r != i32_s)    abort ();  i32_a = 0x00000220; // pos is 32, size is 4  __builtin_mips_wrdsp (i32_a, 63);  i32_s = 1;  i32_r = __builtin_mips_bposge32 ();  if (i32_r != i32_s)    abort ();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -