@@ -91,28 +91,26 @@ void l4_to_i2() {
9191
9292// CHECK-LABEL: i2_to_b2
9393// CHECK: [[l2:%.*]] = alloca <2 x i32>
94- // CHECK: [[b2:%.*]] = alloca i8
94+ // CHECK: [[b2:%.*]] = alloca <2 x i32>
9595// CHECK: store <2 x i32> splat (i32 8), ptr [[i2]]
9696// CHECK: [[veci2:%.*]] = load <2 x i32>, ptr [[i2]]
9797// CHECK: [[vecb2:%.*]] = icmp ne <2 x i32> [[veci2]], zeroinitializer
98- // CHECK: [[vecb8:%.*]] = shufflevector <2 x i1> [[vecb2]], <2 x i1> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
99- // CHECK: [[i8:%.*]] = bitcast <8 x i1> [[vecb8]] to i8
100- // CHECK: store i8 [[i8]], ptr [[b2]]
98+ // CHECK: [[vecb8:%.*]] = zext <2 x i1> [[vecb2]] to <2 x i32>
99+ // CHECK: store <2 x i32> [[vecb8]], ptr [[b2]]
101100void i2_to_b2 () {
102101 vector <int , 2 > i2 = 8 ;
103102 vector <bool , 2 > b2 = i2;
104103}
105104
106105// CHECK-LABEL: d4_to_b2
107106// CHECK: [[d4:%.*]] = alloca <4 x double>
108- // CHECK: [[b2:%.*]] = alloca i8
107+ // CHECK: [[b2:%.*]] = alloca <2 x i32>
109108// CHECK: store <4 x double> splat (double 9.000000e+00), ptr [[d4]]
110109// CHECK: [[vecd4:%.*]] = load <4 x double>, ptr [[d4]]
111110// CHECK: [[vecb4:%.*]] = fcmp reassoc nnan ninf nsz arcp afn une <4 x double> [[vecd4]], zeroinitializer
112111// CHECK: [[vecd2:%.*]] = shufflevector <4 x i1> [[vecb4]], <4 x i1> poison, <2 x i32> <i32 0, i32 1>
113- // CHECK: [[vecb8:%.*]] = shufflevector <2 x i1> [[vecd2]], <2 x i1> poison, <8 x i32> <i32 0, i32 1, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
114- // CHECK: [[i8:%.*]] = bitcast <8 x i1> [[vecb8]] to i8
115- // CHECK: store i8 [[i8]], ptr [[b2]]
112+ // CHECK: [[vecb8:%.*]] = zext <2 x i1> [[vecd2]] to <2 x i32>
113+ // CHECK: store <2 x i32> [[vecb8]], ptr [[b2]]
116114void d4_to_b2 () {
117115 vector <double ,4 > d4 = 9.0 ;
118116 vector <bool , 2 > b2 = d4;
0 commit comments