; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt %s -passes="scalarizer" -S | FileCheck %s define void @vector_scalar_not_aligned(ptr addrspace(1) %arg0, ptr addrspace(1) %arg1) { ; CHECK-LABEL: @vector_scalar_not_aligned( ; CHECK-NEXT: [[VAL1:%.*]] = load <35 x i32>, ptr addrspace(1) [[ARG_0:%.*]], align 4 ; CHECK-NEXT: [[VAL2:%.*]] = load <35 x i32>, ptr addrspace(1) [[ARG_1:%.*]], align 4 ; CHECK-NEXT: [[BOOLVEC1:%.*]] = icmp ne <35 x i32> [[VAL1]], zeroinitializer ; CHECK-NEXT: [[BOOLVEC1_I0:%.*]] = shufflevector <35 x i1> [[BOOLVEC1]], <35 x i1> poison, <32 x i32> ; CHECK-NEXT: [[BOOLVEC1_I1:%.*]] = shufflevector <35 x i1> [[BOOLVEC1]], <35 x i1> poison, <3 x i32> ; CHECK-NEXT: [[BOOLVEC2:%.*]] = icmp ne <35 x i32> [[VAL2]], zeroinitializer ; CHECK-NEXT: [[BOOLVEC2_I0:%.*]] = shufflevector <35 x i1> [[BOOLVEC2]], <35 x i1> poison, <32 x i32> ; CHECK-NEXT: [[BOOLRESULT_I0:%.*]] = xor <32 x i1> [[BOOLVEC1_I0]], [[BOOLVEC2_I0]] ; CHECK-NEXT: [[BOOLVEC2_I1:%.*]] = shufflevector <35 x i1> [[BOOLVEC2]], <35 x i1> poison, <3 x i32> ; CHECK-NEXT: [[BOOLRESULT_I1:%.*]] = xor <3 x i1> [[BOOLVEC1_I1]], [[BOOLVEC2_I1]] ; CHECK-NEXT: [[INST1:%.*]] = shufflevector <32 x i1> [[BOOLRESULT_I0]], <32 x i1> poison, <35 x i32> ; CHECK-NEXT: [[INST2:%.*]] = shufflevector <3 x i1> [[BOOLRESULT_I1]], <3 x i1> poison, <35 x i32> ; CHECK-NEXT: [[BOOLRESULT:%.*]] = shufflevector <35 x i1> [[INST1]], <35 x i1> [[INST2]], <35 x i32> ; CHECK-NEXT: [[EXT:%.*]] = zext <35 x i1> [[BOOLRESULT]] to <35 x i32> ; CHECK-NEXT: ret void %val1 = load <35 x i32>, ptr addrspace(1) %arg0, align 4 %val2 = load <35 x i32>, ptr addrspace(1) %arg1, align 4 %boolVec1 = icmp ne <35 x i32> %val1, zeroinitializer %boolVec2 = icmp ne <35 x i32> %val2, zeroinitializer %boolResult = xor <35 x i1> %boolVec1, %boolVec2 %ext = zext <35 x i1> %boolResult to <35 x i32> ret void }