1 $type$[] a = fa.apply(SPECIES.length()); 2 $type$[] r = fr.apply(SPECIES.length()); 3 4 for (int ic = 0; ic < INVOC_COUNT; ic++) { 5 for (int i = 0; i < a.length; i += SPECIES.length()) { 6 $abstractvectortype$ av = $abstractvectortype$.fromArray(SPECIES, a, i); 7 int num_lanes = SPECIES.length(); 8 \/\/ Manually unroll because full unroll happens after intrinsification. 9 \/\/ Unroll is needed because get intrinsic requires for index to be a known constant. 10 if (num_lanes == 1) { 11 r[i]=av.lane(0); 12 } else if (num_lanes == 2) { 13 r[i]=av.lane(0); 14 r[i+1]=av.lane(1); 15 } else if (num_lanes == 4) { 16 r[i]=av.lane(0); 17 r[i+1]=av.lane(1); 18 r[i+2]=av.lane(2); 19 r[i+3]=av.lane(3); 20 } else if (num_lanes == 8) { 21 r[i]=av.lane(0); 22 r[i+1]=av.lane(1); 23 r[i+2]=av.lane(2); 24 r[i+3]=av.lane(3); 25 r[i+4]=av.lane(4); 26 r[i+5]=av.lane(5); 27 r[i+6]=av.lane(6); 28 r[i+7]=av.lane(7); 29 } else if (num_lanes == 16) { 30 r[i]=av.lane(0); 31 r[i+1]=av.lane(1); 32 r[i+2]=av.lane(2); 33 r[i+3]=av.lane(3); 34 r[i+4]=av.lane(4); 35 r[i+5]=av.lane(5); 36 r[i+6]=av.lane(6); 37 r[i+7]=av.lane(7); 38 r[i+8]=av.lane(8); 39 r[i+9]=av.lane(9); 40 r[i+10]=av.lane(10); 41 r[i+11]=av.lane(11); 42 r[i+12]=av.lane(12); 43 r[i+13]=av.lane(13); 44 r[i+14]=av.lane(14); 45 r[i+15]=av.lane(15); 46 } else if (num_lanes == 32) { 47 r[i]=av.lane(0); 48 r[i+1]=av.lane(1); 49 r[i+2]=av.lane(2); 50 r[i+3]=av.lane(3); 51 r[i+4]=av.lane(4); 52 r[i+5]=av.lane(5); 53 r[i+6]=av.lane(6); 54 r[i+7]=av.lane(7); 55 r[i+8]=av.lane(8); 56 r[i+9]=av.lane(9); 57 r[i+10]=av.lane(10); 58 r[i+11]=av.lane(11); 59 r[i+12]=av.lane(12); 60 r[i+13]=av.lane(13); 61 r[i+14]=av.lane(14); 62 r[i+15]=av.lane(15); 63 r[i+16]=av.lane(16); 64 r[i+17]=av.lane(17); 65 r[i+18]=av.lane(18); 66 r[i+19]=av.lane(19); 67 r[i+20]=av.lane(20); 68 r[i+21]=av.lane(21); 69 r[i+22]=av.lane(22); 70 r[i+23]=av.lane(23); 71 r[i+24]=av.lane(24); 72 r[i+25]=av.lane(25); 73 r[i+26]=av.lane(26); 74 r[i+27]=av.lane(27); 75 r[i+28]=av.lane(28); 76 r[i+29]=av.lane(29); 77 r[i+30]=av.lane(30); 78 r[i+31]=av.lane(31); 79 } else if (num_lanes == 64) { 80 r[i]=av.lane(0); 81 r[i+1]=av.lane(1); 82 r[i+2]=av.lane(2); 83 r[i+3]=av.lane(3); 84 r[i+4]=av.lane(4); 85 r[i+5]=av.lane(5); 86 r[i+6]=av.lane(6); 87 r[i+7]=av.lane(7); 88 r[i+8]=av.lane(8); 89 r[i+9]=av.lane(9); 90 r[i+10]=av.lane(10); 91 r[i+11]=av.lane(11); 92 r[i+12]=av.lane(12); 93 r[i+13]=av.lane(13); 94 r[i+14]=av.lane(14); 95 r[i+15]=av.lane(15); 96 r[i+16]=av.lane(16); 97 r[i+17]=av.lane(17); 98 r[i+18]=av.lane(18); 99 r[i+19]=av.lane(19); 100 r[i+20]=av.lane(20); 101 r[i+21]=av.lane(21); 102 r[i+22]=av.lane(22); 103 r[i+23]=av.lane(23); 104 r[i+24]=av.lane(24); 105 r[i+25]=av.lane(25); 106 r[i+26]=av.lane(26); 107 r[i+27]=av.lane(27); 108 r[i+28]=av.lane(28); 109 r[i+29]=av.lane(29); 110 r[i+30]=av.lane(30); 111 r[i+31]=av.lane(31); 112 r[i+32]=av.lane(32); 113 r[i+33]=av.lane(33); 114 r[i+34]=av.lane(34); 115 r[i+35]=av.lane(35); 116 r[i+36]=av.lane(36); 117 r[i+37]=av.lane(37); 118 r[i+38]=av.lane(38); 119 r[i+39]=av.lane(39); 120 r[i+40]=av.lane(40); 121 r[i+41]=av.lane(41); 122 r[i+42]=av.lane(42); 123 r[i+43]=av.lane(43); 124 r[i+44]=av.lane(44); 125 r[i+45]=av.lane(45); 126 r[i+46]=av.lane(46); 127 r[i+47]=av.lane(47); 128 r[i+48]=av.lane(48); 129 r[i+49]=av.lane(49); 130 r[i+50]=av.lane(50); 131 r[i+51]=av.lane(51); 132 r[i+52]=av.lane(52); 133 r[i+53]=av.lane(53); 134 r[i+54]=av.lane(54); 135 r[i+55]=av.lane(55); 136 r[i+56]=av.lane(56); 137 r[i+57]=av.lane(57); 138 r[i+58]=av.lane(58); 139 r[i+59]=av.lane(59); 140 r[i+60]=av.lane(60); 141 r[i+61]=av.lane(61); 142 r[i+62]=av.lane(62); 143 r[i+63]=av.lane(63); 144 } else { 145 for (int j = 0; j < SPECIES.length(); j++) { 146 r[i+j]=av.lane(j); 147 } 148 } 149 } 150 } 151