1 /* { dg-do compile } */ 2 /* { dg-skip-if "" { ! { clmcpu } } } */ 3 /* { dg-options "-O2 -Werror-implicit-function-declaration -mARC700 -msimd" } */ 4 5 #define STEST1(name, rettype, op1) \ 6 rettype test_ ## name \ 7 (void) \ 8 { \ 9 return __builtin_arc_ ## name (op1); \ 10 } 11 12 #define STEST2(name, rettype, op1, op2) \ 13 rettype test_ ## name \ 14 (void) \ 15 { \ 16 return __builtin_arc_ ## name (op1, op2); \ 17 } 18 19 #define STEST3(name, rettype, op1, op2, op3) \ 20 rettype test_ ## name \ 21 (void) \ 22 { \ 23 return __builtin_arc_ ## name (op1, op2, op3); \ 24 } 25 26 #define STEST4(name, rettype, op1, op2, op3, op4) \ 27 rettype test_ ## name \ 28 (void) \ 29 { \ 30 return __builtin_arc_ ## name (op1, op2, op3, op4); \ 31 } 32 33 typedef short v8hi __attribute__ ((vector_size (16))); 34 35 v8hi Va; 36 v8hi Vb; 37 v8hi Vc; 38 #define rlimm 0xf3eec0fe 39 #define Ic 0x02 40 #define Ib 0x02 41 #define u3 0x02 42 #define u6 0x1F 43 #define u8 0xB0 44 45 STEST2 ( vaddaw, v8hi, Vb, Vc) 46 STEST2 ( vaddw, v8hi, Vb, Vc) 47 STEST2 ( vavb, v8hi, Vb, Vc) 48 STEST2 ( vavrb, v8hi, Vb, Vc) 49 STEST2 ( vdifaw, v8hi, Vb, Vc) 50 STEST2 ( vdifw, v8hi, Vb, Vc) 51 STEST2 ( vmaxaw, v8hi, Vb, Vc) 52 STEST2 ( vmaxw, v8hi, Vb, Vc) 53 STEST2 ( vminaw, v8hi, Vb, Vc) 54 STEST2 ( vminw, v8hi, Vb, Vc) 55 STEST2 ( vmulaw, v8hi, Vb, Vc) 56 STEST2 (vmulfaw, v8hi, Vb, Vc) 57 STEST2 ( vmulfw, v8hi, Vb, Vc) 58 STEST2 ( vmulw, v8hi, Vb, Vc) 59 STEST2 ( vsubaw, v8hi, Vb, Vc) 60 STEST2 ( vsubw, v8hi, Vb, Vc) 61 STEST2 ( vsummw, v8hi, Vb, Vc) 62 STEST2 ( vand, v8hi, Vb, Vc) 63 STEST2 ( vandaw, v8hi, Vb, Vc) 64 STEST2 ( vbic, v8hi, Vb, Vc) 65 STEST2 ( vbicaw, v8hi, Vb, Vc) 66 STEST2 ( vor, v8hi, Vb, Vc) 67 STEST2 ( vxor, v8hi, Vb, Vc) 68 STEST2 ( vxoraw, v8hi, Vb, Vc) 69 STEST2 ( veqw, v8hi, Vb, Vc) 70 STEST2 ( vlew, v8hi, Vb, Vc) 71 STEST2 ( vltw, v8hi, Vb, Vc) 72 STEST2 ( vnew, v8hi, Vb, Vc) 73 STEST2 ( vmr1aw, v8hi, Vb, Vc) 74 STEST2 ( vmr1w, v8hi, Vb, Vc) 75 STEST2 ( vmr2aw, v8hi, Vb, Vc) 76 STEST2 ( vmr2w, v8hi, Vb, Vc) 77 STEST2 ( vmr3aw, v8hi, Vb, Vc) 78 STEST2 ( vmr3w, v8hi, Vb, Vc) 79 STEST2 ( vmr4aw, v8hi, Vb, Vc) 80 STEST2 ( vmr4w, v8hi, Vb, Vc) 81 STEST2 ( vmr5aw, v8hi, Vb, Vc) 82 STEST2 ( vmr5w, v8hi, Vb, Vc) 83 STEST2 ( vmr6aw, v8hi, Vb, Vc) 84 STEST2 ( vmr6w, v8hi, Vb, Vc) 85 STEST2 ( vmr7aw, v8hi, Vb, Vc) 86 STEST2 ( vmr7w, v8hi, Vb, Vc) 87 STEST2 ( vmrb, v8hi, Vb, Vc) 88 STEST2 ( vh264f, v8hi, Vb, Vc) 89 STEST2 (vh264ft, v8hi, Vb, Vc) 90 STEST2 (vh264fw, v8hi, Vb, Vc) 91 STEST2 ( vvc1f, v8hi, Vb, Vc) 92 STEST2 ( vvc1ft, v8hi, Vb, Vc) 93 94 STEST2 ( vbaddw, v8hi, Vb, rlimm) 95 STEST2 ( vbmaxw, v8hi, Vb, rlimm) 96 STEST2 ( vbminw, v8hi, Vb, rlimm) 97 STEST2 (vbmulaw, v8hi, Vb, rlimm) 98 STEST2 (vbmulfw, v8hi, Vb, rlimm) 99 STEST2 ( vbmulw, v8hi, Vb, rlimm) 100 STEST2 (vbrsubw, v8hi, Vb, rlimm) 101 STEST2 ( vbsubw, v8hi, Vb, rlimm) 102 103 104 /* Va, Vb, Ic instructions. */ 105 STEST2 ( vasrw, v8hi, Vb, Ic) 106 STEST2 ( vsr8, v8hi, Vb, Ic) 107 STEST2 (vsr8aw, v8hi, Vb, Ic) 108 109 /* Va, Vb, u6 instructions. */ 110 STEST2 ( vasrrwi, v8hi, Vb, u6) 111 STEST2 ( vasrsrwi, v8hi, Vb, u6) 112 STEST2 ( vasrwi, v8hi, Vb, u6) 113 STEST2 ( vasrpwbi, v8hi, Vb, u6) 114 STEST2 (vasrrpwbi, v8hi, Vb, u6) 115 STEST2 ( vsr8awi, v8hi, Vb, u6) 116 STEST2 ( vsr8i, v8hi, Vb, u6) 117 118 /* Va, Vb, u8 (simm) instructions. */ 119 STEST2 ( vmvaw, v8hi, Vb, u8) 120 STEST2 ( vmvw, v8hi, Vb, u8) 121 STEST2 ( vmvzw, v8hi, Vb, u8) 122 STEST2 (vd6tapf, v8hi, Vb, u8) 123 124 /* Va, rlimm, u8 (simm) instructions. */ 125 STEST2 (vmovaw, v8hi, rlimm, u8) 126 STEST2 ( vmovw, v8hi, rlimm, u8) 127 STEST2 (vmovzw, v8hi, rlimm, u8) 128 129 /* Va, Vb instructions. */ 130 STEST1 ( vabsaw, v8hi, Vb) 131 STEST1 ( vabsw, v8hi, Vb) 132 STEST1 (vaddsuw, v8hi, Vb) 133 STEST1 ( vsignw, v8hi, Vb) 134 STEST1 ( vexch1, v8hi, Vb) 135 STEST1 ( vexch2, v8hi, Vb) 136 STEST1 ( vexch4, v8hi, Vb) 137 STEST1 ( vupbaw, v8hi, Vb) 138 STEST1 ( vupbw, v8hi, Vb) 139 STEST1 (vupsbaw, v8hi, Vb) 140 STEST1 ( vupsbw, v8hi, Vb) 141 142 /* DIb, rlimm, rlimm instructions. */ 143 STEST2 (vdirun, void, rlimm, rlimm) 144 STEST2 (vdorun, void, rlimm, rlimm) 145 146 /* DIb, limm, rlimm instructions. */ 147 STEST2 (vdiwr, void, u3, rlimm) 148 STEST2 (vdowr, void, u3, rlimm) 149 150 /* rlimm instructions. */ 151 STEST1 ( vrec, void, rlimm) 152 STEST1 ( vrun, void, rlimm) 153 STEST1 (vrecrun, void, rlimm) 154 STEST1 (vendrec, void, rlimm) 155 156 /* Va, [Ib,u8] instructions. */ 157 STEST3 (vld32wh, v8hi, Vb, Ic, u8) 158 STEST3 (vld32wl, v8hi, Vb, Ic, u8) 159 STEST3 ( vld64, v8hi, Vb, Ic, u8) 160 STEST3 ( vld32, v8hi, Vb, Ic, u8) 161 162 STEST2 (vld64w, v8hi, Ib, u8) 163 STEST2 (vld128, v8hi, Ib, u8) 164 165 STEST3 (vst128, void, Va, Ib, u8) 166 STEST3 ( vst64, void, Va, Ib, u8) 167 168 /* Va, [Ib, u8] instructions. */ 169 STEST4 (vst16_n, void, Va, u3, Ib, u8) 170 STEST4 (vst32_n, void, Va, u3, Ib, u8) 171 172 STEST1 (vinti, void, u6) 173