1 /* Test MIPS32 DSP instructions */
3 /* { dg-options "-mdsp -O2" } */
8 typedef signed char v4i8
__attribute__ ((vector_size(4)));
9 typedef short v2q15
__attribute__ ((vector_size(4)));
13 typedef long long a64
;
15 NOMIPS16
void test_MIPS_DSP (void);
24 union { long long ll
; int i
[2]; } endianness_test
;
25 endianness_test
.ll
= 1;
26 little_endian
= endianness_test
.i
[0];
28 for (i
= 0; i
< 100; i
++)
36 NOMIPS16 v2q15
add_v2q15 (v2q15 a
, v2q15 b
)
38 return __builtin_mips_addq_ph (a
, b
);
41 NOMIPS16 v4i8
add_v4i8 (v4i8 a
, v4i8 b
)
43 return __builtin_mips_addu_qb (a
, b
);
46 NOMIPS16 v2q15
sub_v2q15 (v2q15 a
, v2q15 b
)
48 return __builtin_mips_subq_ph (a
, b
);
51 NOMIPS16 v4i8
sub_v4i8 (v4i8 a
, v4i8 b
)
53 return __builtin_mips_subu_qb (a
, b
);
56 NOMIPS16
void test_MIPS_DSP ()
58 v4i8 v4i8_a
,v4i8_b
,v4i8_c
,v4i8_r
,v4i8_s
;
59 v2q15 v2q15_a
,v2q15_b
,v2q15_c
,v2q15_r
,v2q15_s
;
60 q31 q31_a
,q31_b
,q31_c
,q31_r
,q31_s
;
61 i32 i32_a
,i32_b
,i32_c
,i32_r
,i32_s
;
62 a64 a64_a
,a64_b
,a64_c
,a64_r
,a64_s
;
68 v2q15_a
= (v2q15
) {0x1234, 0x5678};
69 v2q15_b
= (v2q15
) {0x6f89, 0x1111};
70 v2q15_s
= (v2q15
) {0x81bd, 0x6789};
71 v2q15_r
= add_v2q15 (v2q15_a
, v2q15_b
);
77 v2q15_a
= (v2q15
) {0x1234, 0x5678};
78 v2q15_b
= (v2q15
) {0x6f89, 0x1111};
79 v2q15_s
= (v2q15
) {0x7fff, 0x6789};
80 v2q15_r
= __builtin_mips_addq_s_ph (v2q15_a
, v2q15_b
);
89 q31_r
= __builtin_mips_addq_s_w (q31_a
, q31_b
);
93 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
94 v4i8_b
= (v4i8
) {0xff, 0x89, 0x11, 0x11};
95 v4i8_s
= (v4i8
) {0xf1, 0xbd, 0x67, 0x89};
96 v4i8_r
= add_v4i8 (v4i8_a
, v4i8_b
);
102 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
103 v4i8_b
= (v4i8
) {0xff, 0x89, 0x11, 0x11};
104 v4i8_s
= (v4i8
) {0xff, 0xbd, 0x67, 0x89};
105 v4i8_r
= __builtin_mips_addu_s_qb (v4i8_a
, v4i8_b
);
111 v2q15_a
= (v2q15
) {0x1234, 0x5678};
112 v2q15_b
= (v2q15
) {0x6f89, 0x1111};
113 v2q15_s
= (v2q15
) {0xa2ab, 0x4567};
114 v2q15_r
= sub_v2q15 (v2q15_a
, v2q15_b
);
120 v2q15_a
= (v2q15
) {0x8000, 0x5678};
121 v2q15_b
= (v2q15
) {0x6f89, 0x1111};
122 v2q15_s
= (v2q15
) {0x8000, 0x4567};
123 v2q15_r
= __builtin_mips_subq_s_ph (v2q15_a
, v2q15_b
);
132 q31_r
= __builtin_mips_subq_s_w (q31_a
, q31_b
);
136 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
137 v4i8_b
= (v4i8
) {0xff, 0x89, 0x11, 0x11};
138 v4i8_s
= (v4i8
) {0xf3, 0xab, 0x45, 0x67};
139 v4i8_r
= sub_v4i8 (v4i8_a
, v4i8_b
);
145 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
146 v4i8_b
= (v4i8
) {0xff, 0x89, 0x11, 0x11};
147 v4i8_s
= (v4i8
) {0x0, 0x0, 0x45, 0x67};
148 v4i8_r
= __builtin_mips_subu_s_qb (v4i8_a
, v4i8_b
);
157 i32_r
= __builtin_mips_addsc (i32_a
, i32_b
);
164 i32_r
= __builtin_mips_addwc (i32_a
, i32_b
);
171 i32_r
= __builtin_mips_modsub (i32_a
, i32_b
);
175 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
177 i32_r
= __builtin_mips_raddu_w_qb (v4i8_a
);
181 v2q15_a
= (v2q15
) {0x8000, 0x8134};
182 v2q15_s
= (v2q15
) {0x7fff, 0x7ecc};
183 v2q15_r
= __builtin_mips_absq_s_ph (v2q15_a
);
189 q31_a
= (q31
) 0x80000000;
190 q31_s
= (q31
) 0x7fffffff;
191 q31_r
= __builtin_mips_absq_s_w (q31_a
);
195 v2q15_a
= (v2q15
) {0x9999, 0x5612};
196 v2q15_b
= (v2q15
) {0x5612, 0x3333};
198 v4i8_s
= (v4i8
) {0x56, 0x33, 0x99, 0x56};
200 v4i8_s
= (v4i8
) {0x99, 0x56, 0x56, 0x33};
201 v4i8_r
= __builtin_mips_precrq_qb_ph (v2q15_a
, v2q15_b
);
210 v2q15_s
= (v2q15
) {0x4444, 0x1234};
212 v2q15_s
= (v2q15
) {0x1234, 0x4444};
213 v2q15_r
= __builtin_mips_precrq_ph_w (q31_a
, q31_b
);
222 v2q15_s
= (v2q15
) {0x4444, 0x1235};
224 v2q15_s
= (v2q15
) {0x1235, 0x4444};
225 v2q15_r
= __builtin_mips_precrq_rs_ph_w (q31_a
, q31_b
);
231 v2q15_a
= (v2q15
) {0x9999, 0x5612};
232 v2q15_b
= (v2q15
) {0x5612, 0x3333};
234 v4i8_s
= (v4i8
) {0xac, 0x66, 0x00, 0xac};
236 v4i8_s
= (v4i8
) {0x00, 0xac, 0xac, 0x66};
237 v4i8_r
= __builtin_mips_precrqu_s_qb_ph (v2q15_a
, v2q15_b
);
243 v2q15_a
= (v2q15
) {0x3589, 0x4444};
248 q31_r
= __builtin_mips_preceq_w_phl (v2q15_a
);
252 v2q15_a
= (v2q15
) {0x3589, 0x4444};
257 q31_r
= __builtin_mips_preceq_w_phr (v2q15_a
);
261 v4i8_a
= (v4i8
) {0x12, 0x56, 0x56, 0x33};
263 v2q15_s
= (v2q15
) {0x2b00, 0x1980};
265 v2q15_s
= (v2q15
) {0x0900, 0x2b00};
266 v2q15_r
= __builtin_mips_precequ_ph_qbl (v4i8_a
);
272 v4i8_a
= (v4i8
) {0x12, 0x56, 0x56, 0x33};
274 v2q15_s
= (v2q15
) {0x0900, 0x2b00};
276 v2q15_s
= (v2q15
) {0x2b00, 0x1980};
277 v2q15_r
= __builtin_mips_precequ_ph_qbr (v4i8_a
);
283 v4i8_a
= (v4i8
) {0x12, 0x56, 0x56, 0x33};
285 v2q15_s
= (v2q15
) {0x2b00, 0x1980};
287 v2q15_s
= (v2q15
) {0x0900, 0x2b00};
288 v2q15_r
= __builtin_mips_precequ_ph_qbla (v4i8_a
);
294 v4i8_a
= (v4i8
) {0x12, 0x56, 0x56, 0x33};
296 v2q15_s
= (v2q15
) {0x0900, 0x2b00};
298 v2q15_s
= (v2q15
) {0x2b00, 0x1980};
299 v2q15_r
= __builtin_mips_precequ_ph_qbra (v4i8_a
);
305 v4i8_a
= (v4i8
) {0x12, 0x56, 0x56, 0x33};
307 v2q15_s
= (v2q15
) {0x56, 0x33};
309 v2q15_s
= (v2q15
) {0x12, 0x56};
310 v2q15_r
= __builtin_mips_preceu_ph_qbl (v4i8_a
);
316 v4i8_a
= (v4i8
) {0x12, 0x56, 0x56, 0x33};
318 v2q15_s
= (v2q15
) {0x12, 0x56};
320 v2q15_s
= (v2q15
) {0x56, 0x33};
321 v2q15_r
= __builtin_mips_preceu_ph_qbr (v4i8_a
);
327 v4i8_a
= (v4i8
) {0x12, 0x99, 0x56, 0x33};
329 v2q15_s
= (v2q15
) {0x99, 0x33};
331 v2q15_s
= (v2q15
) {0x12, 0x56};
332 v2q15_r
= __builtin_mips_preceu_ph_qbla (v4i8_a
);
338 v4i8_a
= (v4i8
) {0x12, 0x99, 0x56, 0x33};
340 v2q15_s
= (v2q15
) {0x12, 0x56};
342 v2q15_s
= (v2q15
) {0x99, 0x33};
343 v2q15_r
= __builtin_mips_preceu_ph_qbra (v4i8_a
);
349 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
350 v4i8_s
= (v4i8
) {0xc8, 0xd0, 0x58, 0xe0};
351 v4i8_r
= __builtin_mips_shll_qb (v4i8_a
, 2);
357 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
359 v4i8_s
= (v4i8
) {0xe4, 0x68, 0xac, 0xf0};
360 v4i8_r
= __builtin_mips_shll_qb (v4i8_a
, i32_b
);
366 v2q15_a
= (v2q15
) {0x1234, 0x5678};
367 v2q15_s
= (v2q15
) {0x48d0, 0x59e0};
368 v2q15_r
= __builtin_mips_shll_ph (v2q15_a
, 2);
374 v2q15_a
= (v2q15
) {0x1234, 0x5678};
376 v2q15_s
= (v2q15
) {0x2468, 0xacf0};
377 v2q15_r
= __builtin_mips_shll_ph (v2q15_a
, i32_b
);
383 v2q15_a
= (v2q15
) {0x1234, 0x5678};
384 v2q15_s
= (v2q15
) {0x48d0, 0x7fff};
385 v2q15_r
= __builtin_mips_shll_s_ph (v2q15_a
, 2);
391 v2q15_a
= (v2q15
) {0x1234, 0x5678};
393 v2q15_s
= (v2q15
) {0x2468, 0x7fff};
394 v2q15_r
= __builtin_mips_shll_s_ph (v2q15_a
, i32_b
);
402 q31_r
= __builtin_mips_shll_s_w (q31_a
, 2);
409 q31_r
= __builtin_mips_shll_s_w (q31_a
, i32_b
);
413 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
414 v4i8_s
= (v4i8
) {0x3c, 0xd, 0x15, 0x1e};
415 v4i8_r
= __builtin_mips_shrl_qb (v4i8_a
, 2);
421 v4i8_a
= (v4i8
) {0xf2, 0x34, 0x56, 0x78};
423 v4i8_s
= (v4i8
) {0x79, 0x1a, 0x2b, 0x3c};
424 v4i8_r
= __builtin_mips_shrl_qb (v4i8_a
, i32_b
);
430 v2q15_a
= (v2q15
) {0x1234, 0x5678};
431 v2q15_s
= (v2q15
) {0x48d, 0x159e};
432 v2q15_r
= __builtin_mips_shra_ph (v2q15_a
, 2);
438 v2q15_a
= (v2q15
) {0x1234, 0x5678};
440 v2q15_s
= (v2q15
) {0x91a, 0x2b3c};
441 v2q15_r
= __builtin_mips_shra_ph (v2q15_a
, i32_b
);
447 v2q15_a
= (v2q15
) {0x1234, 0x5678};
448 v2q15_s
= (v2q15
) {0x48d, 0x159e};
449 v2q15_r
= __builtin_mips_shra_r_ph (v2q15_a
, 2);
455 v2q15_a
= (v2q15
) {0x1234, 0x5678};
457 v2q15_s
= (v2q15
) {0x247, 0xacf};
458 v2q15_r
= __builtin_mips_shra_r_ph (v2q15_a
, i32_b
);
466 q31_r
= __builtin_mips_shra_r_w (q31_a
, 2);
473 q31_r
= __builtin_mips_shra_r_w (q31_a
, i32_b
);
477 v4i8_a
= (v4i8
) {0x1, 0x2, 0x3, 0x4};
478 v2q15_b
= (v2q15
) {0x6f89, 0x1111};
480 v2q15_s
= (v2q15
) {0xffff, 0x4444};
482 v2q15_s
= (v2q15
) {0x6f89, 0x2222};
483 v2q15_r
= __builtin_mips_muleu_s_ph_qbl (v4i8_a
, v2q15_b
);
489 v4i8_a
= (v4i8
) {0x1, 0x2, 0x3, 0x4};
490 v2q15_b
= (v2q15
) {0x6f89, 0x1111};
492 v2q15_s
= (v2q15
) {0x6f89, 0x2222};
494 v2q15_s
= (v2q15
) {0xffff, 0x4444};
495 v2q15_r
= __builtin_mips_muleu_s_ph_qbr (v4i8_a
, v2q15_b
);
501 v2q15_a
= (v2q15
) {0x1234, 0x5678};
502 v2q15_b
= (v2q15
) {0x6f89, 0x1111};
503 v2q15_s
= (v2q15
) {0x0fdd, 0x0b87};
504 v2q15_r
= __builtin_mips_mulq_rs_ph (v2q15_a
, v2q15_b
);
510 v2q15_a
= (v2q15
) {0x8000, 0x8000};
511 v2q15_b
= (v2q15
) {0x8000, 0x8000};
513 q31_r
= __builtin_mips_muleq_s_w_phl (v2q15_a
, v2q15_b
);
517 v2q15_a
= (v2q15
) {0x8000, 0x8000};
518 v2q15_b
= (v2q15
) {0x8000, 0x8000};
520 q31_r
= __builtin_mips_muleq_s_w_phr (v2q15_a
, v2q15_b
);
526 v4i8_b
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
527 v4i8_c
= (v4i8
) {0xaa, 0x89, 0x11, 0x34};
532 a64_r
= __builtin_mips_dpau_h_qbl (a64_a
, v4i8_b
, v4i8_c
);
537 v4i8_b
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
538 v4i8_c
= (v4i8
) {0xaa, 0x89, 0x11, 0x34};
543 a64_r
= __builtin_mips_dpau_h_qbr (a64_a
, v4i8_b
, v4i8_c
);
548 v4i8_b
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
549 v4i8_c
= (v4i8
) {0xaa, 0x89, 0x11, 0x34};
554 a64_r
= __builtin_mips_dpsu_h_qbl (a64_a
, v4i8_b
, v4i8_c
);
559 v4i8_b
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
560 v4i8_c
= (v4i8
) {0xaa, 0x89, 0x11, 0x34};
565 a64_r
= __builtin_mips_dpsu_h_qbr (a64_a
, v4i8_b
, v4i8_c
);
570 v2q15_b
= (v2q15
) {0x8000, 0x5678};
571 v2q15_c
= (v2q15
) {0x8000, 0x1111};
573 a64_r
= __builtin_mips_dpaq_s_w_ph (a64_a
, v2q15_b
, v2q15_c
);
578 v2q15_b
= (v2q15
) {0x8000, 0x5678};
579 v2q15_c
= (v2q15
) {0x8000, 0x1111};
580 a64_s
= 0xffffffff7478a522LL
;
581 a64_r
= __builtin_mips_dpsq_s_w_ph (a64_a
, v2q15_b
, v2q15_c
);
586 v2q15_b
= (v2q15
) {0x8000, 0x5678};
587 v2q15_c
= (v2q15
) {0x8000, 0x1111};
589 a64_s
= 0xffffffff8b877d02LL
;
592 a64_r
= __builtin_mips_mulsaq_s_w_ph (a64_a
, v2q15_b
, v2q15_c
);
599 a64_s
= 0x7fffffffffffffffLL
;
600 a64_r
= __builtin_mips_dpaq_sa_l_w (a64_a
, q31_b
, q31_c
);
607 a64_s
= 0x8000000000001112LL
;
608 a64_r
= __builtin_mips_dpsq_sa_l_w (a64_a
, q31_b
, q31_c
);
613 v2q15_b
= (v2q15
) {0x8000, 0x1};
614 v2q15_c
= (v2q15
) {0x8000, 0x2};
619 a64_r
= __builtin_mips_maq_s_w_phl (a64_a
, v2q15_b
, v2q15_c
);
624 v2q15_b
= (v2q15
) {0x8000, 0x1};
625 v2q15_c
= (v2q15
) {0x8000, 0x2};
630 a64_r
= __builtin_mips_maq_s_w_phr (a64_a
, v2q15_b
, v2q15_c
);
635 v2q15_b
= (v2q15
) {0x8000, 0x1};
636 v2q15_c
= (v2q15
) {0x8000, 0x2};
641 a64_r
= __builtin_mips_maq_sa_w_phl (a64_a
, v2q15_b
, v2q15_c
);
646 v2q15_b
= (v2q15
) {0x8000, 0x1};
647 v2q15_c
= (v2q15
) {0x8000, 0x2};
652 a64_r
= __builtin_mips_maq_sa_w_phr (a64_a
, v2q15_b
, v2q15_c
);
659 i32_r
= __builtin_mips_bitrev (i32_a
);
663 i32_a
= 0x00000208; // pos is 8, size is 4
664 __builtin_mips_wrdsp (i32_a
, 31);
668 i32_r
= __builtin_mips_insv (i32_a
, i32_b
);
672 v4i8_s
= (v4i8
) {1, 1, 1, 1};
673 v4i8_r
= __builtin_mips_repl_qb (1);
680 v4i8_s
= (v4i8
) {99, 99, 99, 99};
681 v4i8_r
= __builtin_mips_repl_qb (i32_a
);
687 v2q15_s
= (v2q15
) {30, 30};
688 v2q15_r
= __builtin_mips_repl_ph (30);
695 v2q15_s
= (v2q15
) {0x5612, 0x5612};
696 v2q15_r
= __builtin_mips_repl_ph (i32_a
);
702 v4i8_a
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
703 v4i8_b
= (v4i8
) {0x12, 0x34, 0x78, 0x56};
708 __builtin_mips_cmpu_eq_qb (v4i8_a
, v4i8_b
);
709 i32_r
= __builtin_mips_rddsp (16);
713 v4i8_a
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
714 v4i8_b
= (v4i8
) {0x12, 0x34, 0x78, 0x56};
719 __builtin_mips_cmpu_lt_qb (v4i8_a
, v4i8_b
);
720 i32_r
= __builtin_mips_rddsp (16);
724 v4i8_a
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
725 v4i8_b
= (v4i8
) {0x12, 0x34, 0x78, 0x56};
730 __builtin_mips_cmpu_le_qb (v4i8_a
, v4i8_b
);
731 i32_r
= __builtin_mips_rddsp (16);
735 v4i8_a
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
736 v4i8_b
= (v4i8
) {0x12, 0x34, 0x78, 0x56};
741 i32_r
=__builtin_mips_cmpgu_eq_qb (v4i8_a
, v4i8_b
);
745 v4i8_a
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
746 v4i8_b
= (v4i8
) {0x12, 0x34, 0x78, 0x56};
751 i32_r
= __builtin_mips_cmpgu_lt_qb (v4i8_a
, v4i8_b
);
755 v4i8_a
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
756 v4i8_b
= (v4i8
) {0x12, 0x34, 0x78, 0x56};
761 i32_r
= __builtin_mips_cmpgu_le_qb (v4i8_a
, v4i8_b
);
765 __builtin_mips_wrdsp (0,31); // Clear all condition code bits.
766 v2q15_a
= (v2q15
) {0x1234, 0x5678};
767 v2q15_b
= (v2q15
) {0x1234, 0x7856};
772 __builtin_mips_cmp_eq_ph (v2q15_a
, v2q15_b
);
773 i32_r
= __builtin_mips_rddsp (16);
777 v2q15_a
= (v2q15
) {0x1234, 0x5678};
778 v2q15_b
= (v2q15
) {0x1234, 0x7856};
783 __builtin_mips_cmp_lt_ph (v2q15_a
, v2q15_b
);
784 i32_r
= __builtin_mips_rddsp (16);
788 v2q15_a
= (v2q15
) {0x1234, 0x5678};
789 v2q15_b
= (v2q15
) {0x1234, 0x7856};
791 __builtin_mips_cmp_le_ph (v2q15_a
, v2q15_b
);
792 i32_r
= __builtin_mips_rddsp (16);
796 i32_a
= 0x0a000000; // cc: 0000 1010
797 __builtin_mips_wrdsp (i32_a
, 31);
798 v4i8_a
= (v4i8
) {0x12, 0x34, 0x56, 0x78};
799 v4i8_b
= (v4i8
) {0x21, 0x43, 0x65, 0x87};
801 v4i8_s
= (v4i8
) {0x21, 0x34, 0x65, 0x78};
803 v4i8_s
= (v4i8
) {0x12, 0x43, 0x56, 0x87};
804 v4i8_r
= __builtin_mips_pick_qb (v4i8_a
, v4i8_b
);
810 i32_a
= 0x02000000; // cc: 0000 0010
811 __builtin_mips_wrdsp (i32_a
, 31);
812 v2q15_a
= (v2q15
) {0x1234, 0x5678};
813 v2q15_b
= (v2q15
) {0x2143, 0x6587};
815 v2q15_s
= (v2q15
) {0x2143, 0x5678};
817 v2q15_s
= (v2q15
) {0x1234, 0x6587};
818 v2q15_r
= __builtin_mips_pick_ph (v2q15_a
, v2q15_b
);
824 v2q15_a
= (v2q15
) {0x1234, 0x5678};
825 v2q15_b
= (v2q15
) {0x1234, 0x7856};
827 v2q15_s
= (v2q15
) {0x7856, 0x1234};
829 v2q15_s
= (v2q15
) {0x5678, 0x1234};
830 v2q15_r
= __builtin_mips_packrl_ph (v2q15_a
, v2q15_b
);
837 a64_a
= 0x1234567887654321LL
;
839 i32_r
= __builtin_mips_extr_w (a64_a
, 4);
843 a64_a
= 0x1234567887658321LL
;
845 i32_r
= __builtin_mips_extr_r_w (a64_a
, 16);
849 a64_a
= 0x12345677fffffff8LL
;
851 i32_r
= __builtin_mips_extr_rs_w (a64_a
, 4);
855 a64_a
= 0x1234567887658321LL
;
857 i32_r
= __builtin_mips_extr_s_h (a64_a
, 16);
861 a64_a
= 0x0000007887658321LL
;
864 i32_r
= __builtin_mips_extr_s_h (a64_a
, i32_b
);
868 a64_a
= 0x1234567887654321LL
;
871 i32_r
= __builtin_mips_extr_w (a64_a
, i32_b
);
875 a64_a
= 0x1234567887658321LL
;
878 i32_r
= __builtin_mips_extr_r_w (a64_a
, i32_b
);
882 a64_a
= 0x12345677fffffff8LL
;
885 i32_r
= __builtin_mips_extr_rs_w (a64_a
, i32_b
);
889 i32_a
= 0x0000021f; // pos is 31
890 __builtin_mips_wrdsp (i32_a
, 31);
891 a64_a
= 0x1234567887654321LL
;
893 i32_r
= __builtin_mips_extp (a64_a
, 3); // extract 4 bits
897 i32_a
= 0x0000021f; // pos is 31
898 __builtin_mips_wrdsp (i32_a
, 31);
899 a64_a
= 0x1234567887654321LL
;
900 i32_b
= 7; // size is 8. NOTE!! we should use 7
902 i32_r
= __builtin_mips_extp (a64_a
, i32_b
);
906 i32_a
= 0x0000021f; // pos is 31
907 __builtin_mips_wrdsp (i32_a
, 31);
908 a64_a
= 0x1234567887654321LL
;
910 i32_r
= __builtin_mips_extpdp (a64_a
, 3); // extract 4 bits
914 i32_s
= 0x0000021b; // pos is 27
915 i32_r
= __builtin_mips_rddsp (31);
919 i32_a
= 0x0000021f; // pos is 31
920 __builtin_mips_wrdsp (i32_a
, 31);
921 a64_a
= 0x1234567887654321LL
;
922 i32_b
= 11; // size is 12. NOTE!!! We should use 11
924 i32_r
= __builtin_mips_extpdp (a64_a
, i32_b
);
928 i32_s
= 0x00000213; // pos is 19
929 i32_r
= __builtin_mips_rddsp (31);
933 a64_a
= 0x1234567887654321LL
;
934 a64_s
= 0x0012345678876543LL
;
935 a64_r
= __builtin_mips_shilo (a64_a
, 8);
939 a64_a
= 0x1234567887654321LL
;
941 a64_s
= 0x5678876543210000LL
;
942 a64_r
= __builtin_mips_shilo (a64_a
, i32_b
);
947 __builtin_mips_wrdsp (i32_a
, 31);
948 a64_a
= 0x1234567887654321LL
;
950 a64_s
= 0x8765432111112222LL
;
951 a64_r
= __builtin_mips_mthlip (a64_a
, i32_b
);
955 i32_r
= __builtin_mips_rddsp (31);
961 __builtin_mips_wrdsp (i32_a
, 63);
963 i32_r
= __builtin_mips_rddsp (63);
970 i32_r
= __builtin_mips_lbux (ptr_a
, i32_b
);
980 i32_r
= __builtin_mips_lhx (ptr_a
, i32_b
);
990 i32_r
= __builtin_mips_lwx (ptr_a
, i32_b
);
994 i32_a
= 0x00000220; // pos is 32, size is 4
995 __builtin_mips_wrdsp (i32_a
, 63);
997 i32_r
= __builtin_mips_bposge32 ();