1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt < %s -passes=instcombine,verify -S | FileCheck %s 3 4define <2 x i8> @constprop_load_bitcast(ptr %ptr) { 5; CHECK-LABEL: @constprop_load_bitcast( 6; CHECK-NEXT: store <vscale x 16 x i1> zeroinitializer, ptr [[PTR:%.*]], align 16 7; CHECK-NEXT: ret <2 x i8> zeroinitializer 8; 9 store <vscale x 16 x i1> zeroinitializer, ptr %ptr, align 16 10 %a = load <2 x i8>, ptr %ptr, align 16 11 ret <2 x i8> %a 12} 13 14; vscale-sized vec not guaranteed to fill destination. 15define <8 x i8> @constprop_load_bitcast_neg(ptr %ptr) { 16; CHECK-LABEL: @constprop_load_bitcast_neg( 17; CHECK-NEXT: store <vscale x 16 x i1> zeroinitializer, ptr [[PTR:%.*]], align 16 18; CHECK-NEXT: [[A:%.*]] = load <8 x i8>, ptr [[PTR]], align 16 19; CHECK-NEXT: ret <8 x i8> [[A]] 20; 21 store <vscale x 16 x i1> zeroinitializer, ptr %ptr, align 16 22 %a = load <8 x i8>, ptr %ptr, align 16 23 ret <8 x i8> %a 24} 25