; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu < %s -slp-threshold=-100 | FileCheck %s
define i1 @foo(i1 %v) {            ; assume %v is 1
; CHECK-LABEL: define i1 @foo(
; CHECK-SAME: i1 [[V:%.*]]) {
; CHECK-NEXT:  [[ENTRY:.*:]]
; CHECK-NEXT:    [[TMP0:%.*]] = insertelement <2 x i1> poison, i1 [[V]], i32 0
; CHECK-NEXT:    [[TMP1:%.*]] = shufflevector <2 x i1> [[TMP0]], <2 x i1> poison, <2 x i32> zeroinitializer
; CHECK-NEXT:    [[TMP2:%.*]] = xor <2 x i1> zeroinitializer, [[TMP1]]
; CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x i1> [[TMP2]], i32 0
; CHECK-NEXT:    [[TMP4:%.*]] = extractelement <2 x i1> [[TMP2]], i32 1
; CHECK-NEXT:    [[SUB:%.*]] = sub i1 [[TMP3]], [[TMP4]]
; CHECK-NEXT:    ret i1 [[SUB]]
;
entry:
  %not = xor i1 %v, 1              ; 0
  %not1 = xor i1 %not, 1           ; 1
  %mul = mul i1 %v, 1              ; 1
  %sub = sub i1 %not1, %mul        ; 0
  ret i1 %sub                      ; 0
}
