1 ; Tests insertelement and extractelement vector instructions. 2 3 ; RUN: %p2i -i %s --insts | FileCheck %s 4 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s 5 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s 6 ; RUN: %p2i -i %s --args -notranslate -timing | \ 7 ; RUN: FileCheck --check-prefix=NOIR %s 8 9 define internal void @ExtractV4xi1(<4 x i1> %v) { 10 entry: 11 %e0 = extractelement <4 x i1> %v, i32 0 12 %e1 = extractelement <4 x i1> %v, i32 1 13 %e2 = extractelement <4 x i1> %v, i32 2 14 %e3 = extractelement <4 x i1> %v, i32 3 15 ret void 16 } 17 18 ; CHECK: define internal void @ExtractV4xi1(<4 x i1> %v) { 19 ; CHECK-NEXT: entry: 20 ; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0 21 ; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1 22 ; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2 23 ; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3 24 ; CHECK-NEXT: ret void 25 ; CHECK-NEXT: } 26 27 define internal void @ExtractV8xi1(<8 x i1> %v) { 28 entry: 29 %e0 = extractelement <8 x i1> %v, i32 0 30 %e1 = extractelement <8 x i1> %v, i32 1 31 %e2 = extractelement <8 x i1> %v, i32 2 32 %e3 = extractelement <8 x i1> %v, i32 3 33 %e4 = extractelement <8 x i1> %v, i32 4 34 %e5 = extractelement <8 x i1> %v, i32 5 35 %e6 = extractelement <8 x i1> %v, i32 6 36 %e7 = extractelement <8 x i1> %v, i32 7 37 ret void 38 } 39 40 ; CHECK-NEXT: define internal void @ExtractV8xi1(<8 x i1> %v) { 41 ; CHECK-NEXT: entry: 42 ; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0 43 ; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1 44 ; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2 45 ; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3 46 ; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4 47 ; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5 48 ; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6 49 ; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7 50 ; CHECK-NEXT: ret void 51 ; CHECK-NEXT: } 52 53 define internal void @ExtractV16xi1(<16 x i1> %v) { 54 entry: 55 %e0 = extractelement <16 x i1> %v, i32 0 56 %e1 = extractelement <16 x i1> %v, i32 1 57 %e2 = extractelement <16 x i1> %v, i32 2 58 %e3 = extractelement <16 x i1> %v, i32 3 59 %e4 = extractelement <16 x i1> %v, i32 4 60 %e5 = extractelement <16 x i1> %v, i32 5 61 %e6 = extractelement <16 x i1> %v, i32 6 62 %e7 = extractelement <16 x i1> %v, i32 7 63 %e8 = extractelement <16 x i1> %v, i32 8 64 %e9 = extractelement <16 x i1> %v, i32 9 65 %e10 = extractelement <16 x i1> %v, i32 10 66 %e11 = extractelement <16 x i1> %v, i32 11 67 %e12 = extractelement <16 x i1> %v, i32 12 68 %e13 = extractelement <16 x i1> %v, i32 13 69 %e14 = extractelement <16 x i1> %v, i32 14 70 %e15 = extractelement <16 x i1> %v, i32 15 71 ret void 72 } 73 74 ; CHECK-NEXT: define internal void @ExtractV16xi1(<16 x i1> %v) { 75 ; CHECK-NEXT: entry: 76 ; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0 77 ; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1 78 ; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2 79 ; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3 80 ; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4 81 ; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5 82 ; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6 83 ; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7 84 ; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8 85 ; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9 86 ; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10 87 ; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11 88 ; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12 89 ; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13 90 ; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14 91 ; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15 92 ; CHECK-NEXT: ret void 93 ; CHECK-NEXT: } 94 95 define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) { 96 entry: 97 %e0 = extractelement <16 x i8> %v, i32 0 98 %e1 = extractelement <16 x i8> %v, i32 1 99 %e2 = extractelement <16 x i8> %v, i32 2 100 %e3 = extractelement <16 x i8> %v, i32 3 101 %e4 = extractelement <16 x i8> %v, i32 4 102 %e5 = extractelement <16 x i8> %v, i32 5 103 %e6 = extractelement <16 x i8> %v, i32 6 104 %e7 = extractelement <16 x i8> %v, i32 7 105 %e8 = extractelement <16 x i8> %v, i32 8 106 %e9 = extractelement <16 x i8> %v, i32 9 107 %e10 = extractelement <16 x i8> %v, i32 10 108 %e11 = extractelement <16 x i8> %v, i32 11 109 %e12 = extractelement <16 x i8> %v, i32 12 110 %e13 = extractelement <16 x i8> %v, i32 13 111 %e14 = extractelement <16 x i8> %v, i32 14 112 %e15 = extractelement <16 x i8> %v, i32 15 113 ret void 114 } 115 116 ; CHECK-NEXT: define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) { 117 ; CHECK-NEXT: entry: 118 ; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0 119 ; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1 120 ; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2 121 ; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3 122 ; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4 123 ; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5 124 ; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6 125 ; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7 126 ; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8 127 ; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9 128 ; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10 129 ; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11 130 ; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12 131 ; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13 132 ; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14 133 ; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15 134 ; CHECK-NEXT: ret void 135 ; CHECK-NEXT: } 136 137 define internal void @ExtractV8xi16(<8 x i16> %v) { 138 entry: 139 %e0 = extractelement <8 x i16> %v, i32 0 140 %e1 = extractelement <8 x i16> %v, i32 1 141 %e2 = extractelement <8 x i16> %v, i32 2 142 %e3 = extractelement <8 x i16> %v, i32 3 143 %e4 = extractelement <8 x i16> %v, i32 4 144 %e5 = extractelement <8 x i16> %v, i32 5 145 %e6 = extractelement <8 x i16> %v, i32 6 146 %e7 = extractelement <8 x i16> %v, i32 7 147 ret void 148 } 149 150 ; CHECK-NEXT: define internal void @ExtractV8xi16(<8 x i16> %v) { 151 ; CHECK-NEXT: entry: 152 ; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0 153 ; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1 154 ; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2 155 ; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3 156 ; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4 157 ; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5 158 ; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6 159 ; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7 160 ; CHECK-NEXT: ret void 161 ; CHECK-NEXT: } 162 163 define internal i32 @ExtractV4xi32(<4 x i32> %v) { 164 entry: 165 %e0 = extractelement <4 x i32> %v, i32 0 166 %e1 = extractelement <4 x i32> %v, i32 1 167 %e2 = extractelement <4 x i32> %v, i32 2 168 %e3 = extractelement <4 x i32> %v, i32 3 169 ret i32 %e0 170 } 171 172 ; CHECK-NEXT: define internal i32 @ExtractV4xi32(<4 x i32> %v) { 173 ; CHECK-NEXT: entry: 174 ; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0 175 ; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1 176 ; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2 177 ; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3 178 ; CHECK-NEXT: ret i32 %e0 179 ; CHECK-NEXT: } 180 181 define internal float @ExtractV4xfloat(<4 x float> %v) { 182 entry: 183 %e0 = extractelement <4 x float> %v, i32 0 184 %e1 = extractelement <4 x float> %v, i32 1 185 %e2 = extractelement <4 x float> %v, i32 2 186 %e3 = extractelement <4 x float> %v, i32 3 187 ret float %e0 188 } 189 190 ; CHECK-NEXT: define internal float @ExtractV4xfloat(<4 x float> %v) { 191 ; CHECK-NEXT: entry: 192 ; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0 193 ; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1 194 ; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2 195 ; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3 196 ; CHECK-NEXT: ret float %e0 197 ; CHECK-NEXT: } 198 199 define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { 200 entry: 201 %e = trunc i32 %pe to i1 202 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 203 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 204 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 205 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 206 ret <4 x i1> %r3 207 } 208 209 ; CHECK-NEXT: define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { 210 ; CHECK-NEXT: entry: 211 ; CHECK-NEXT: %e = trunc i32 %pe to i1 212 ; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 213 ; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 214 ; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 215 ; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 216 ; CHECK-NEXT: ret <4 x i1> %r3 217 ; CHECK-NEXT: } 218 219 define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { 220 entry: 221 %e = trunc i32 %pe to i1 222 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 223 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 224 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 225 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 226 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 227 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 228 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 229 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 230 ret <8 x i1> %r7 231 } 232 233 ; CHECK-NEXT: define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { 234 ; CHECK-NEXT: entry: 235 ; CHECK-NEXT: %e = trunc i32 %pe to i1 236 ; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 237 ; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 238 ; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 239 ; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 240 ; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 241 ; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 242 ; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 243 ; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 244 ; CHECK-NEXT: ret <8 x i1> %r7 245 ; CHECK-NEXT: } 246 247 define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { 248 entry: 249 %e = trunc i32 %pe to i1 250 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 251 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 252 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 253 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 254 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 255 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 256 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 257 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 258 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 259 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 260 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 261 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 262 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 263 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 264 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 265 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 266 ret <16 x i1> %r15 267 } 268 269 ; CHECK-NEXT: define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { 270 ; CHECK-NEXT: entry: 271 ; CHECK-NEXT: %e = trunc i32 %pe to i1 272 ; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 273 ; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 274 ; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 275 ; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 276 ; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 277 ; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 278 ; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 279 ; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 280 ; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 281 ; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 282 ; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 283 ; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 284 ; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 285 ; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 286 ; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 287 ; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 288 ; CHECK-NEXT: ret <16 x i1> %r15 289 ; CHECK-NEXT: } 290 291 define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { 292 entry: 293 %e = trunc i32 %pe to i8 294 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 295 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 296 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 297 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 298 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 299 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 300 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 301 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 302 ret <16 x i8> %r7 303 } 304 305 ; CHECK-NEXT: define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { 306 ; CHECK-NEXT: entry: 307 ; CHECK-NEXT: %e = trunc i32 %pe to i8 308 ; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 309 ; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 310 ; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 311 ; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 312 ; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 313 ; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 314 ; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 315 ; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 316 ; CHECK-NEXT: ret <16 x i8> %r7 317 ; CHECK-NEXT: } 318 319 define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { 320 entry: 321 %e = trunc i32 %pe to i16 322 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 323 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 324 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 325 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 326 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 327 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 328 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 329 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 330 ret <8 x i16> %r7 331 } 332 333 ; CHECK-NEXT: define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { 334 ; CHECK-NEXT: entry: 335 ; CHECK-NEXT: %e = trunc i32 %pe to i16 336 ; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 337 ; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 338 ; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 339 ; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 340 ; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 341 ; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 342 ; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 343 ; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 344 ; CHECK-NEXT: ret <8 x i16> %r7 345 ; CHECK-NEXT: } 346 347 define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { 348 entry: 349 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 350 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 351 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 352 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 353 ret <4 x i32> %r3 354 } 355 356 ; CHECK-NEXT: define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { 357 ; CHECK-NEXT: entry: 358 ; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 359 ; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 360 ; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 361 ; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 362 ; CHECK-NEXT: ret <4 x i32> %r3 363 ; CHECK-NEXT: } 364 365 define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { 366 entry: 367 %r0 = insertelement <4 x float> %v, float %e, i32 0 368 %r1 = insertelement <4 x float> %v, float %e, i32 1 369 %r2 = insertelement <4 x float> %v, float %e, i32 2 370 %r3 = insertelement <4 x float> %v, float %e, i32 3 371 ret <4 x float> %r3 372 } 373 374 ; CHECK-NEXT: define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { 375 ; CHECK-NEXT: entry: 376 ; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0 377 ; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1 378 ; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2 379 ; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3 380 ; CHECK-NEXT: ret <4 x float> %r3 381 ; CHECK-NEXT: } 382 383 ; NOIR: Total across all functions 384