@@ -416,3 +416,43 @@ define void @instrsInMultipleBundles(ptr noalias %ptr) {
416
416
store i8 %add1 , ptr %gep1
417
417
ret void
418
418
}
419
+
420
+ define void @vectorize_constants (ptr %ptr ) {
421
+ ; CHECK-LABEL: define void @vectorize_constants(
422
+ ; CHECK-SAME: ptr [[PTR:%.*]]) {
423
+ ; CHECK-NEXT: [[PTR0:%.*]] = getelementptr i8, ptr [[PTR]], i32 0
424
+ ; CHECK-NEXT: [[VECL:%.*]] = load <2 x i8>, ptr [[PTR0]], align 1
425
+ ; CHECK-NEXT: [[VEC:%.*]] = add <2 x i8> [[VECL]], <i8 0, i8 1>
426
+ ; CHECK-NEXT: store <2 x i8> [[VEC]], ptr [[PTR0]], align 1
427
+ ; CHECK-NEXT: ret void
428
+ ;
429
+ %ptr0 = getelementptr i8 , ptr %ptr , i32 0
430
+ %ptr1 = getelementptr i8 , ptr %ptr , i32 1
431
+ %ld0 = load i8 , ptr %ptr0
432
+ %ld1 = load i8 , ptr %ptr1
433
+ %add0 = add i8 %ld0 , 0
434
+ %add1 = add i8 %ld1 , 1
435
+ store i8 %add0 , ptr %ptr0
436
+ store i8 %add1 , ptr %ptr1
437
+ ret void
438
+ }
439
+
440
+ define void @vectorize_constant_vectors (ptr %ptr ) {
441
+ ; CHECK-LABEL: define void @vectorize_constant_vectors(
442
+ ; CHECK-SAME: ptr [[PTR:%.*]]) {
443
+ ; CHECK-NEXT: [[PTR0:%.*]] = getelementptr <2 x i8>, ptr [[PTR]], i32 0
444
+ ; CHECK-NEXT: [[VECL:%.*]] = load <4 x i8>, ptr [[PTR0]], align 2
445
+ ; CHECK-NEXT: [[VEC:%.*]] = sub <4 x i8> [[VECL]], <i8 0, i8 0, i8 1, i8 1>
446
+ ; CHECK-NEXT: store <4 x i8> [[VEC]], ptr [[PTR0]], align 2
447
+ ; CHECK-NEXT: ret void
448
+ ;
449
+ %ptr0 = getelementptr <2 x i8 >, ptr %ptr , i32 0
450
+ %ptr1 = getelementptr <2 x i8 >, ptr %ptr , i32 1
451
+ %ld0 = load <2 x i8 >, ptr %ptr0
452
+ %ld1 = load <2 x i8 >, ptr %ptr1
453
+ %sub0 = sub <2 x i8 > %ld0 , splat(i8 0 )
454
+ %sub1 = sub <2 x i8 > %ld1 , splat(i8 1 )
455
+ store <2 x i8 > %sub0 , ptr %ptr0
456
+ store <2 x i8 > %sub1 , ptr %ptr1
457
+ ret void
458
+ }
0 commit comments