@@ -375,44 +375,44 @@ export TYPE index(TYPE things[10], int i)[10] {
375375#ifdef INT
376376// Test bit twiddling operators.
377377// INT-LABEL: define void @"\01?bittwiddlers
378- export void bittwiddlers (inout TYPE things[11 ]) {
379- // INT: [[adr1:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 1
378+ export void bittwiddlers (inout TYPE things[13 ]) {
379+ // INT: [[adr1:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 1
380380 // INT: [[ld1:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr1]]
381381 // INT: [[val1:%[0-9]*]] = extractelement [[TYPE]] [[ld1]], i32 0
382382 // INT: [[xor1:%[0-9]*]] = xor [[ELTY]] [[val1]], -1
383383 // INT: [[res1:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[xor1]], i32 0
384- // INT: [[adr0:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 0
384+ // INT: [[adr0:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 0
385385 // INT: store [[TYPE]] [[res1]], [[TYPE]]* [[adr0]]
386386 things[0 ] = ~things[1 ];
387387
388- // INT: [[adr2:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 2
388+ // INT: [[adr2:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 2
389389 // INT: [[ld2:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr2]]
390390 // INT: [[val2:%[0-9]*]] = extractelement [[TYPE]] [[ld2]], i32 0
391- // INT: [[adr3:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 3
391+ // INT: [[adr3:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 3
392392 // INT: [[ld3:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr3]]
393393 // INT: [[val3:%[0-9]*]] = extractelement [[TYPE]] [[ld3]], i32 0
394394 // INT: [[or1:%[0-9]*]] = or [[ELTY]] [[val3]], [[val2]]
395395 // INT: [[res1:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[or1]], i32 0
396396 // INT: store [[TYPE]] [[res1]], [[TYPE]]* [[adr1]]
397397 things[1 ] = things[2 ] | things[3 ];
398398
399- // INT: [[adr4:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 4
399+ // INT: [[adr4:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 4
400400 // INT: [[ld4:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr4]]
401401 // INT: [[val4:%[0-9]*]] = extractelement [[TYPE]] [[ld4]], i32 0
402402 // INT: [[and2:%[0-9]*]] = and [[ELTY]] [[val4]], [[val3]]
403403 // INT: [[res2:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[and2]], i32 0
404404 // INT: store [[TYPE]] [[res2]], [[TYPE]]* [[adr2]]
405405 things[2 ] = things[3 ] & things[4 ];
406406
407- // INT: [[adr5:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 5
407+ // INT: [[adr5:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 5
408408 // INT: [[ld5:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr5]]
409409 // INT: [[val5:%[0-9]*]] = extractelement [[TYPE]] [[ld5]], i32 0
410410 // INT: [[xor3:%[0-9]*]] = xor [[ELTY]] [[val5]], [[val4]]
411411 // INT: [[res3:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[xor3]], i32 0
412412 // INT: store [[TYPE]] [[res3]], [[TYPE]]* [[adr3]]
413413 things[3 ] = things[4 ] ^ things[5 ];
414414
415- // INT: [[adr6:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 6
415+ // INT: [[adr6:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 6
416416 // INT: [[ld6:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr6]]
417417 // INT: [[val6:%[0-9]*]] = extractelement [[TYPE]] [[ld6]], i32 0
418418 // INT: [[shv6:%[0-9]*]] = and [[ELTY]] [[val6]]
@@ -421,7 +421,7 @@ export void bittwiddlers(inout TYPE things[11]) {
421421 // INT: store [[TYPE]] [[res4]], [[TYPE]]* [[adr4]]
422422 things[4 ] = things[5 ] << things[6 ];
423423
424- // INT: [[adr7:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 7
424+ // INT: [[adr7:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 7
425425 // INT: [[ld7:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr7]]
426426 // INT: [[val7:%[0-9]*]] = extractelement [[TYPE]] [[ld7]], i32 0
427427 // INT: [[shv7:%[0-9]*]] = and [[ELTY]] [[val7]]
@@ -431,30 +431,49 @@ export void bittwiddlers(inout TYPE things[11]) {
431431 // INT: store [[TYPE]] [[res5]], [[TYPE]]* [[adr5]]
432432 things[5 ] = things[6 ] >> things[7 ];
433433
434- // INT: [[adr8:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 8
434+ // INT: [[adr8:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 8
435435 // INT: [[ld8:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr8]]
436436 // INT: [[val8:%[0-9]*]] = extractelement [[TYPE]] [[ld8]], i32 0
437437 // INT: [[or6:%[0-9]*]] = or [[ELTY]] [[val8]], [[val6]]
438438 // INT: [[res6:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[or6]], i32 0
439439 // INT: store [[TYPE]] [[res6]], [[TYPE]]* [[adr6]]
440440 things[6 ] |= things[8 ];
441441
442- // INT: [[adr9:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 9
442+ // INT: [[adr9:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 9
443443 // INT: [[ld9:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr9]]
444444 // INT: [[val9:%[0-9]*]] = extractelement [[TYPE]] [[ld9]], i32 0
445445 // INT: [[and7:%[0-9]*]] = and [[ELTY]] [[val9]], [[val7]]
446446 // INT: [[res7:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[and7]], i32 0
447447 // INT: store [[TYPE]] [[res7]], [[TYPE]]* [[adr7]]
448448 things[7 ] &= things[9 ];
449449
450- // INT: [[adr10:%[0-9]*]] = getelementptr inbounds [11 x [[TYPE]]], [11 x [[TYPE]]]* %things, i32 0, i32 10
450+ // INT: [[adr10:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 10
451451 // INT: [[ld10:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr10]]
452452 // INT: [[val10:%[0-9]*]] = extractelement [[TYPE]] [[ld10]], i32 0
453453 // INT: [[xor8:%[0-9]*]] = xor [[ELTY]] [[val10]], [[val8]]
454454 // INT: [[res8:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[xor8]], i32 0
455455 // INT: store [[TYPE]] [[res8]], [[TYPE]]* [[adr8]]
456456 things[8 ] ^= things[10 ];
457457
458+ // INT: [[adr11:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 11
459+ // INT: [[ld11:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr11]]
460+ // INT: [[val11:%[0-9]*]] = extractelement [[TYPE]] [[ld11]], i32 0
461+ // INT: [[shv11:%[0-9]*]] = and [[ELTY]] [[val11]]
462+ // INT: [[shl9:%[0-9]*]] = shl [[ELTY]] [[val9]], [[shv11]]
463+ // INT: [[res9:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[shl9]], i32 0
464+ // INT: store [[TYPE]] [[res9]], [[TYPE]]* [[adr9]]
465+ things[9 ] <<= things[11 ];
466+
467+ // INT: [[adr12:%[0-9]*]] = getelementptr inbounds [13 x [[TYPE]]], [13 x [[TYPE]]]* %things, i32 0, i32 12
468+ // INT: [[ld12:%[0-9]*]] = load [[TYPE]], [[TYPE]]* [[adr12]]
469+ // INT: [[val12:%[0-9]*]] = extractelement [[TYPE]] [[ld12]], i32 0
470+ // INT: [[shv12:%[0-9]*]] = and [[ELTY]] [[val12]]
471+ // UNSIG: [[shr10:%[0-9]*]] = lshr [[ELTY]] [[val10]], [[shv12]]
472+ // SIG: [[shr10:%[0-9]*]] = ashr [[ELTY]] [[val10]], [[shv12]]
473+ // INT: [[res10:%.*]] = insertelement [[TYPE]] undef, [[ELTY]] [[shr10]], i32 0
474+ // INT: store [[TYPE]] [[res10]], [[TYPE]]* [[adr10]]
475+ things[10 ] >>= things[12 ];
476+
458477 // INT: ret void
459478}
460479#endif // INT
0 commit comments