message: Don't use stack_{load,store} for vectors
diff: @@ -126,8 +126,8 @@ pub fn load<'a, 'tcx>(
  ) -> Value {
  match self.base {
  PointerBase::Addr(base_addr) => fx.bcx.ins().load(ty, flags, base_addr, self.offset),
  - PointerBase::Stack(stack_slot) => if ty == types::I128 {
  - // WORKAROUND for stack_load.i128 not being implemented
  + PointerBase::Stack(stack_slot) => if ty == types::I128 || ty.is_vector() {
  + // WORKAROUND for stack_load.i128 and stack_load.iXxY not being implemented
  let base_addr = fx.bcx.ins().stack_addr(fx.pointer_type, stack_slot, 0);
  fx.bcx.ins().load(ty, flags, base_addr, self.offset)
  } else {
  @@ -146,8 +146,10 @@ pub fn store<'a, 'tcx>(
  PointerBase::Addr(base_addr) => {
  fx.bcx.ins().store(flags, value, base_addr, self.offset);
  }
  - PointerBase::Stack(stack_slot) => if fx.bcx.func.dfg.value_type(value) == types::I128 {
  - // WORKAROUND for stack_load.i128 not being implemented
  + PointerBase::Stack(stack_slot) => {
  + let val_ty = fx.bcx.func.dfg.value_type(value);
  + if val_ty == types::I128 || val_ty.is_vector() {
  + // WORKAROUND for stack_store.i128 and stack_store.iXxY not being implemented
  let base_addr = fx.bcx.ins().stack_addr(fx.pointer_type, stack_slot, 0);
  fx.bcx.ins().store(flags, value, base_addr, self.offset);
  } else {
  @@ -156,3 +158,4 @@ pub fn store<'a, 'tcx>(
  }
  }
  }
  +}
  