1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3 2; RUN: opt -passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux < %s | FileCheck %s 3 4define i32 @test(ptr %p) { 5; CHECK-LABEL: define i32 @test 6; CHECK-SAME: (ptr [[P:%.*]]) { 7; CHECK-NEXT: entry: 8; CHECK-NEXT: [[IDX4:%.*]] = getelementptr i32, ptr [[P]], i64 8 9; CHECK-NEXT: store i32 0, ptr [[IDX4]], align 4 10; CHECK-NEXT: [[IDX5:%.*]] = getelementptr i32, ptr [[P]], i64 10 11; CHECK-NEXT: store i32 0, ptr [[IDX5]], align 4 12; CHECK-NEXT: [[IDX6:%.*]] = getelementptr i32, ptr [[P]], i64 12 13; CHECK-NEXT: store i32 0, ptr [[IDX6]], align 4 14; CHECK-NEXT: [[IDX7:%.*]] = getelementptr i32, ptr [[P]], i64 14 15; CHECK-NEXT: store i32 0, ptr [[IDX7]], align 4 16; CHECK-NEXT: [[IDX8:%.*]] = getelementptr i32, ptr [[P]], i64 16 17; CHECK-NEXT: store i32 0, ptr [[IDX8]], align 4 18; CHECK-NEXT: [[IDX9:%.*]] = getelementptr i32, ptr [[P]], i64 18 19; CHECK-NEXT: store i32 0, ptr [[IDX9]], align 4 20; CHECK-NEXT: [[IDX10:%.*]] = getelementptr i32, ptr [[P]], i64 20 21; CHECK-NEXT: store i32 0, ptr [[IDX10]], align 4 22; CHECK-NEXT: [[IDX11:%.*]] = getelementptr i32, ptr [[P]], i64 22 23; CHECK-NEXT: store i32 0, ptr [[IDX11]], align 4 24; CHECK-NEXT: [[IDX12:%.*]] = getelementptr i32, ptr [[P]], i64 24 25; CHECK-NEXT: store i32 0, ptr [[IDX12]], align 4 26; CHECK-NEXT: [[IDX13:%.*]] = getelementptr i32, ptr [[P]], i64 26 27; CHECK-NEXT: store i32 0, ptr [[IDX13]], align 4 28; CHECK-NEXT: [[IDX14:%.*]] = getelementptr i32, ptr [[P]], i64 28 29; CHECK-NEXT: store i32 0, ptr [[IDX14]], align 4 30; CHECK-NEXT: [[IDX15:%.*]] = getelementptr i32, ptr [[P]], i64 30 31; CHECK-NEXT: store i32 0, ptr [[IDX15]], align 4 32; CHECK-NEXT: [[IDX16:%.*]] = getelementptr i32, ptr [[P]], i64 32 33; CHECK-NEXT: store i32 0, ptr [[IDX16]], align 4 34; CHECK-NEXT: [[IDX18:%.*]] = getelementptr i32, ptr [[P]], i64 36 35; CHECK-NEXT: store i32 0, ptr [[IDX18]], align 4 36; CHECK-NEXT: [[IDX19:%.*]] = getelementptr i32, ptr [[P]], i64 38 37; CHECK-NEXT: store i32 0, ptr [[IDX19]], align 4 38; CHECK-NEXT: [[IDX20:%.*]] = getelementptr i32, ptr [[P]], i64 40 39; CHECK-NEXT: store i32 0, ptr [[IDX20]], align 4 40; CHECK-NEXT: [[IDX21:%.*]] = getelementptr i32, ptr [[P]], i64 42 41; CHECK-NEXT: store i32 0, ptr [[IDX21]], align 4 42; CHECK-NEXT: [[IDX22:%.*]] = getelementptr i32, ptr [[P]], i64 44 43; CHECK-NEXT: store i32 0, ptr [[IDX22]], align 4 44; CHECK-NEXT: [[IDX23:%.*]] = getelementptr i32, ptr [[P]], i64 46 45; CHECK-NEXT: store i32 0, ptr [[IDX23]], align 4 46; CHECK-NEXT: [[IDX24:%.*]] = getelementptr i32, ptr [[P]], i64 48 47; CHECK-NEXT: store i32 0, ptr [[IDX24]], align 4 48; CHECK-NEXT: [[IDX25:%.*]] = getelementptr i32, ptr [[P]], i64 50 49; CHECK-NEXT: store i32 0, ptr [[IDX25]], align 4 50; CHECK-NEXT: [[IDX26:%.*]] = getelementptr i32, ptr [[P]], i64 52 51; CHECK-NEXT: store i32 0, ptr [[IDX26]], align 4 52; CHECK-NEXT: [[IDX27:%.*]] = getelementptr i32, ptr [[P]], i64 54 53; CHECK-NEXT: store i32 0, ptr [[IDX27]], align 4 54; CHECK-NEXT: [[IDX28:%.*]] = getelementptr i32, ptr [[P]], i64 56 55; CHECK-NEXT: store i32 0, ptr [[IDX28]], align 4 56; CHECK-NEXT: [[IDX29:%.*]] = getelementptr i32, ptr [[P]], i64 58 57; CHECK-NEXT: store i32 0, ptr [[IDX29]], align 4 58; CHECK-NEXT: [[IDX30:%.*]] = getelementptr i32, ptr [[P]], i64 60 59; CHECK-NEXT: store i32 0, ptr [[IDX30]], align 4 60; CHECK-NEXT: [[IDX31:%.*]] = getelementptr i32, ptr [[P]], i64 62 61; CHECK-NEXT: store i32 0, ptr [[IDX31]], align 4 62; CHECK-NEXT: [[IDX32:%.*]] = getelementptr i32, ptr [[P]], i64 64 63; CHECK-NEXT: store i32 0, ptr [[IDX32]], align 4 64; CHECK-NEXT: [[IDX33:%.*]] = getelementptr i32, ptr [[P]], i64 66 65; CHECK-NEXT: store i32 0, ptr [[IDX33]], align 4 66; CHECK-NEXT: store i32 0, ptr [[P]], align 4 67; CHECK-NEXT: [[IDX0:%.*]] = getelementptr i32, ptr [[P]], i64 3 68; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[IDX0]], align 4 69; CHECK-NEXT: ret i32 0 70; 71entry: 72 %idx2 = getelementptr i32, ptr %p, i64 4 73 store i32 0, ptr %idx2, align 4 74 %idx3 = getelementptr i32, ptr %p, i64 6 75 store i32 0, ptr %idx3, align 4 76 %idx4 = getelementptr i32, ptr %p, i64 8 77 store i32 0, ptr %idx4, align 4 78 %idx5 = getelementptr i32, ptr %p, i64 10 79 store i32 0, ptr %idx5, align 4 80 %idx6 = getelementptr i32, ptr %p, i64 12 81 store i32 0, ptr %idx6, align 4 82 %idx7 = getelementptr i32, ptr %p, i64 14 83 store i32 0, ptr %idx7, align 4 84 %idx8 = getelementptr i32, ptr %p, i64 16 85 store i32 0, ptr %idx8, align 4 86 %idx9 = getelementptr i32, ptr %p, i64 18 87 store i32 0, ptr %idx9, align 4 88 %idx10 = getelementptr i32, ptr %p, i64 20 89 store i32 0, ptr %idx10, align 4 90 %idx11 = getelementptr i32, ptr %p, i64 22 91 store i32 0, ptr %idx11, align 4 92 %idx12 = getelementptr i32, ptr %p, i64 24 93 store i32 0, ptr %idx12, align 4 94 %idx13 = getelementptr i32, ptr %p, i64 26 95 store i32 0, ptr %idx13, align 4 96 %idx14 = getelementptr i32, ptr %p, i64 28 97 store i32 0, ptr %idx14, align 4 98 %idx15 = getelementptr i32, ptr %p, i64 30 99 store i32 0, ptr %idx15, align 4 100 %idx16 = getelementptr i32, ptr %p, i64 32 101 store i32 0, ptr %idx16, align 4 102 %idx18 = getelementptr i32, ptr %p, i64 36 103 store i32 0, ptr %idx18, align 4 104 %idx19 = getelementptr i32, ptr %p, i64 38 105 store i32 0, ptr %idx19, align 4 106 %idx20 = getelementptr i32, ptr %p, i64 40 107 store i32 0, ptr %idx20, align 4 108 %idx21 = getelementptr i32, ptr %p, i64 42 109 store i32 0, ptr %idx21, align 4 110 %idx22 = getelementptr i32, ptr %p, i64 44 111 store i32 0, ptr %idx22, align 4 112 %idx23 = getelementptr i32, ptr %p, i64 46 113 store i32 0, ptr %idx23, align 4 114 %idx24 = getelementptr i32, ptr %p, i64 48 115 store i32 0, ptr %idx24, align 4 116 %idx25 = getelementptr i32, ptr %p, i64 50 117 store i32 0, ptr %idx25, align 4 118 %idx26 = getelementptr i32, ptr %p, i64 52 119 store i32 0, ptr %idx26, align 4 120 %idx27 = getelementptr i32, ptr %p, i64 54 121 store i32 0, ptr %idx27, align 4 122 %idx28 = getelementptr i32, ptr %p, i64 56 123 store i32 0, ptr %idx28, align 4 124 %idx29 = getelementptr i32, ptr %p, i64 58 125 store i32 0, ptr %idx29, align 4 126 %idx30 = getelementptr i32, ptr %p, i64 60 127 store i32 0, ptr %idx30, align 4 128 %idx31 = getelementptr i32, ptr %p, i64 62 129 store i32 0, ptr %idx31, align 4 130 %idx32 = getelementptr i32, ptr %p, i64 64 131 store i32 0, ptr %idx32, align 4 132 %idx33 = getelementptr i32, ptr %p, i64 66 133 store i32 0, ptr %idx33, align 4 134 store i32 0, ptr %p, align 4 135 %idx0 = getelementptr i32, ptr %p, i64 3 136 store i32 0, ptr %idx0, align 4 137 %idx1 = getelementptr i32, ptr %p, i64 5 138 store i32 0, ptr %idx1, align 4 139 ret i32 0 140} 141