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