; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -instcombine -S | FileCheck %s

declare void @use4(i4)
declare void @use8(i8)
declare void @use_v2i4(<2 x i4>)
declare i1 @use32gen1(i32)

; Constant can be freely negated.
define i8 @t0(i8 %x) {
; CHECK-LABEL: @t0(
; CHECK-NEXT:    [[T0:%.*]] = add i8 [[X:%.*]], 42
; CHECK-NEXT:    ret i8 [[T0]]
;
  %t0 = sub i8 %x, -42
  ret i8 %t0
}

; Negation can be negated for free
define i8 @t1(i8 %x, i8 %y) {
; CHECK-LABEL: @t1(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[X:%.*]], [[Y]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}

; Shift-left can be negated if all uses can be updated
define i8 @t2(i8 %x, i8 %y) {
; CHECK-LABEL: @t2(
; CHECK-NEXT:    [[T0_NEG:%.*]] = shl i8 42, [[Y:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[T0_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = shl i8 -42, %y
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @n2(i8 %x, i8 %y) {
; CHECK-LABEL: @n2(
; CHECK-NEXT:    [[T0:%.*]] = shl i8 -42, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = shl i8 -42, %y
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @t3(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @t3(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = shl i8 [[Z]], [[Y:%.*]]
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %z
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, %y
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @n3(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @n3(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = shl i8 [[T0]], [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %z
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, %y
  call void @use8(i8 %t1)
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}

; Select can be negated if all it's operands can be negated and all the users of select can be updated
define i8 @t4(i8 %x, i1 %y) {
; CHECK-LABEL: @t4(
; CHECK-NEXT:    [[T0_NEG:%.*]] = select i1 [[Y:%.*]], i8 42, i8 -44
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[T0_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = select i1 %y, i8 -42, i8 44
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}

define i8 @select_of_constants_multi_use(i1 %b) {
; CHECK-LABEL: @select_of_constants_multi_use(
; CHECK-NEXT:    [[S_NEG:%.*]] = select i1 [[B:%.*]], i8 -42, i8 2
; CHECK-NEXT:    [[S:%.*]] = select i1 [[B]], i8 42, i8 -2
; CHECK-NEXT:    call void @use8(i8 [[S]])
; CHECK-NEXT:    ret i8 [[S_NEG]]
;
  %s = select i1 %b, i8 42, i8 -2
  call void @use8(i8 %s)
  %n = sub i8 0, %s
  ret i8 %n
}

define i32 @PR52261(i1 %b) {
; CHECK-LABEL: @PR52261(
; CHECK-NEXT:    ret i32 2
;
  %s = select i1 %b, i32 2, i32 -2
  %n = sub nsw i32 0, %s
  %a = and i32 %s, %n
  ret i32 %a
}

define i8 @n4(i8 %x, i1 %y) {
; CHECK-LABEL: @n4(
; CHECK-NEXT:    [[T0:%.*]] = select i1 [[Y:%.*]], i8 -42, i8 44
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = select i1 %y, i8 -42, i8 44
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @n5(i8 %x, i1 %y, i8 %z) {
; CHECK-LABEL: @n5(
; CHECK-NEXT:    [[T0:%.*]] = select i1 [[Y:%.*]], i8 -42, i8 [[Z:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = select i1 %y, i8 -42, i8 %z
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @t6(i8 %x, i1 %y, i8 %z) {
; CHECK-LABEL: @t6(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = select i1 [[Y:%.*]], i8 42, i8 [[Z]]
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %z
  call void @use8(i8 %t0)
  %t1 = select i1 %y, i8 -42, i8 %t0
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @t7(i8 %x, i1 %y, i8 %z) {
; CHECK-LABEL: @t7(
; CHECK-NEXT:    [[T0_NEG:%.*]] = shl i8 -1, [[Z:%.*]]
; CHECK-NEXT:    [[T1_NEG:%.*]] = select i1 [[Y:%.*]], i8 0, i8 [[T0_NEG]]
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = shl i8 1, %z
  %t1 = select i1 %y, i8 0, i8 %t0
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @n8(i8 %x, i1 %y, i8 %z) {
; CHECK-LABEL: @n8(
; CHECK-NEXT:    [[T0:%.*]] = shl i8 1, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = select i1 [[Y:%.*]], i8 0, i8 [[T0]]
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = shl i8 1, %z
  call void @use8(i8 %t0)
  %t1 = select i1 %y, i8 0, i8 %t0
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}

; Subtraction can be negated by swapping its operands.
; x - (y - z) -> x - y + z -> x + (z - y)
define i8 @t9(i8 %x, i8 %y) {
; CHECK-LABEL: @t9(
; CHECK-NEXT:    [[T0_NEG:%.*]] = sub i8 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    ret i8 [[T0_NEG]]
;
  %t0 = sub i8 %y, %x
  %t1 = sub i8 0, %t0
  ret i8 %t1
}

define i8 @n10(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @n10(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 0, [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sub i8 %y, %x
  call void @use8(i8 %t0)
  %t1 = sub i8 0, %t0
  ret i8 %t1
}

define i8 @neg_of_sub_from_constant(i8 %x) {
; CHECK-LABEL: @neg_of_sub_from_constant(
; CHECK-NEXT:    [[S_NEG:%.*]] = add i8 [[X:%.*]], -42
; CHECK-NEXT:    ret i8 [[S_NEG]]
;
  %s = sub i8 42, %x
  %r = sub i8 0, %s
  ret i8 %r
}

define i8 @neg_of_sub_from_constant_multi_use(i8 %x) {
; CHECK-LABEL: @neg_of_sub_from_constant_multi_use(
; CHECK-NEXT:    [[S_NEG:%.*]] = add i8 [[X:%.*]], -42
; CHECK-NEXT:    [[S:%.*]] = sub i8 42, [[X]]
; CHECK-NEXT:    call void @use8(i8 [[S]])
; CHECK-NEXT:    ret i8 [[S_NEG]]
;
  %s = sub i8 42, %x
  call void @use8(i8 %s)
  %r = sub i8 0, %s
  ret i8 %r
}

define i8 @sub_from_constant_of_sub_from_constant(i8 %x) {
; CHECK-LABEL: @sub_from_constant_of_sub_from_constant(
; CHECK-NEXT:    [[R:%.*]] = add i8 [[X:%.*]], -31
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = sub i8 42, %x
  %r = sub i8 11, %s
  ret i8 %r
}

define i8 @sub_from_constant_of_sub_from_constant_multi_use(i8 %x) {
; CHECK-LABEL: @sub_from_constant_of_sub_from_constant_multi_use(
; CHECK-NEXT:    [[S:%.*]] = sub i8 42, [[X:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[S]])
; CHECK-NEXT:    [[R:%.*]] = add i8 [[X]], -31
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = sub i8 42, %x
  call void @use8(i8 %s)
  %r = sub i8 11, %s
  ret i8 %r
}

define i8 @sub_from_variable_of_sub_from_constant(i8 %x, i8 %y) {
; CHECK-LABEL: @sub_from_variable_of_sub_from_constant(
; CHECK-NEXT:    [[S_NEG:%.*]] = add i8 [[X:%.*]], -42
; CHECK-NEXT:    [[R:%.*]] = add i8 [[S_NEG]], [[Y:%.*]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = sub i8 42, %x
  %r = sub i8 %y, %s
  ret i8 %r
}

define i8 @sub_from_variable_of_sub_from_constant_multi_use(i8 %x, i8 %y) {
; CHECK-LABEL: @sub_from_variable_of_sub_from_constant_multi_use(
; CHECK-NEXT:    [[S:%.*]] = sub i8 42, [[X:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[S]])
; CHECK-NEXT:    [[R:%.*]] = sub i8 [[Y:%.*]], [[S]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = sub i8 42, %x
  call void @use8(i8 %s)
  %r = sub i8 %y, %s
  ret i8 %r
}

; Addition can be negated if both operands can be negated
; x - (y + z) -> x - y - z -> x + ((-y) + (-z)))
define i8 @t12(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @t12(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 0, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[TMP1:%.*]] = add i8 [[Y]], [[Z]]
; CHECK-NEXT:    [[T3:%.*]] = add i8 [[TMP1]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T3]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = sub i8 0, %z
  call void @use8(i8 %t1)
  %t2 = add i8 %t0, %t1
  %t3 = sub i8 %x, %t2
  ret i8 %t3
}
define i8 @n13(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @n13(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = sub i8 [[Y]], [[Z:%.*]]
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = add i8 %t0, %z
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @n14(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @n14(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 0, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[TMP1:%.*]] = add i8 [[Y]], [[Z]]
; CHECK-NEXT:    [[T2:%.*]] = sub i8 0, [[TMP1]]
; CHECK-NEXT:    call void @use8(i8 [[T2]])
; CHECK-NEXT:    [[T3:%.*]] = add i8 [[TMP1]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T3]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = sub i8 0, %z
  call void @use8(i8 %t1)
  %t2 = add i8 %t0, %t1
  call void @use8(i8 %t2)
  %t3 = sub i8 %x, %t2
  ret i8 %t3
}

define i8 @neg_of_add_with_constant(i8 %x) {
; CHECK-LABEL: @neg_of_add_with_constant(
; CHECK-NEXT:    [[R:%.*]] = sub i8 -42, [[X:%.*]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = add i8 %x, 42
  %r = sub i8 0, %s
  ret i8 %r
}

define i8 @neg_of_add_with_constant_multi_use(i8 %x) {
; CHECK-LABEL: @neg_of_add_with_constant_multi_use(
; CHECK-NEXT:    [[S:%.*]] = add i8 [[X:%.*]], 42
; CHECK-NEXT:    call void @use8(i8 [[S]])
; CHECK-NEXT:    [[R:%.*]] = sub i8 -42, [[X]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = add i8 %x, 42
  call void @use8(i8 %s)
  %r = sub i8 0, %s
  ret i8 %r
}

define i8 @sub_from_constant_of_add_with_constant(i8 %x) {
; CHECK-LABEL: @sub_from_constant_of_add_with_constant(
; CHECK-NEXT:    [[R:%.*]] = sub i8 -31, [[X:%.*]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = add i8 %x, 42
  %r = sub i8 11, %s
  ret i8 %r
}

define i8 @sub_from_constant_of_add_with_constant_multi_use(i8 %x) {
; CHECK-LABEL: @sub_from_constant_of_add_with_constant_multi_use(
; CHECK-NEXT:    [[S:%.*]] = add i8 [[X:%.*]], 42
; CHECK-NEXT:    call void @use8(i8 [[S]])
; CHECK-NEXT:    [[R:%.*]] = sub i8 -31, [[X]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = add i8 %x, 42
  call void @use8(i8 %s)
  %r = sub i8 11, %s
  ret i8 %r
}

define i8 @sub_from_variable_of_add_with_constant(i8 %x, i8 %y) {
; CHECK-LABEL: @sub_from_variable_of_add_with_constant(
; CHECK-NEXT:    [[S:%.*]] = add i8 [[X:%.*]], 42
; CHECK-NEXT:    [[R:%.*]] = sub i8 [[Y:%.*]], [[S]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = add i8 %x, 42
  %r = sub i8 %y, %s
  ret i8 %r
}

define i8 @sub_from_variable_of_add_with_constant_multi_use(i8 %x, i8 %y) {
; CHECK-LABEL: @sub_from_variable_of_add_with_constant_multi_use(
; CHECK-NEXT:    [[S:%.*]] = add i8 [[X:%.*]], 42
; CHECK-NEXT:    call void @use8(i8 [[S]])
; CHECK-NEXT:    [[R:%.*]] = sub i8 [[Y:%.*]], [[S]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %s = add i8 %x, 42
  call void @use8(i8 %s)
  %r = sub i8 %y, %s
  ret i8 %r
}

; Multiplication can be negated if either one of operands can be negated
; x - (y * z) -> x + ((-y) * z) or  x + ((-z) * y)
define i8 @t15(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @t15(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = mul i8 [[Y]], [[Z:%.*]]
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = mul i8 %t0, %z
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @n16(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @n16(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = mul i8 [[T0]], [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = mul i8 %t0, %z
  call void @use8(i8 %t1)
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}

; Phi can be negated if all incoming values can be negated
define i8 @t16(i1 %c, i8 %x) {
; CHECK-LABEL: @t16(
; CHECK-NEXT:  begin:
; CHECK-NEXT:    br i1 [[C:%.*]], label [[THEN:%.*]], label [[ELSE:%.*]]
; CHECK:       then:
; CHECK-NEXT:    br label [[END:%.*]]
; CHECK:       else:
; CHECK-NEXT:    br label [[END]]
; CHECK:       end:
; CHECK-NEXT:    [[Z_NEG:%.*]] = phi i8 [ [[X:%.*]], [[THEN]] ], [ 42, [[ELSE]] ]
; CHECK-NEXT:    ret i8 [[Z_NEG]]
;
begin:
  br i1 %c, label %then, label %else
then:
  %y = sub i8 0, %x
  br label %end
else:
  br label %end
end:
  %z = phi i8 [ %y, %then], [ -42, %else ]
  %n = sub i8 0, %z
  ret i8 %n
}
define i8 @n17(i1 %c, i8 %x) {
; CHECK-LABEL: @n17(
; CHECK-NEXT:  begin:
; CHECK-NEXT:    br i1 [[C:%.*]], label [[THEN:%.*]], label [[ELSE:%.*]]
; CHECK:       then:
; CHECK-NEXT:    [[Y:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    br label [[END:%.*]]
; CHECK:       else:
; CHECK-NEXT:    br label [[END]]
; CHECK:       end:
; CHECK-NEXT:    [[Z:%.*]] = phi i8 [ [[Y]], [[THEN]] ], [ -42, [[ELSE]] ]
; CHECK-NEXT:    call void @use8(i8 [[Z]])
; CHECK-NEXT:    [[N:%.*]] = sub i8 0, [[Z]]
; CHECK-NEXT:    ret i8 [[N]]
;
begin:
  br i1 %c, label %then, label %else
then:
  %y = sub i8 0, %x
  br label %end
else:
  br label %end
end:
  %z = phi i8 [ %y, %then], [ -42, %else ]
  call void @use8(i8 %z)
  %n = sub i8 0, %z
  ret i8 %n
}
define i8 @n19(i1 %c, i8 %x, i8 %y) {
; CHECK-LABEL: @n19(
; CHECK-NEXT:  begin:
; CHECK-NEXT:    br i1 [[C:%.*]], label [[THEN:%.*]], label [[ELSE:%.*]]
; CHECK:       then:
; CHECK-NEXT:    [[Z:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    br label [[END:%.*]]
; CHECK:       else:
; CHECK-NEXT:    br label [[END]]
; CHECK:       end:
; CHECK-NEXT:    [[R:%.*]] = phi i8 [ [[Z]], [[THEN]] ], [ [[Y:%.*]], [[ELSE]] ]
; CHECK-NEXT:    [[N:%.*]] = sub i8 0, [[R]]
; CHECK-NEXT:    ret i8 [[N]]
;
begin:
  br i1 %c, label %then, label %else
then:
  %z = sub i8 0, %x
  br label %end
else:
  br label %end
end:
  %r = phi i8 [ %z, %then], [ %y, %else ]
  %n = sub i8 0, %r
  ret i8 %n
}
define void @phi_with_duplicate_incoming_basic_blocks(i32 %x, i32 %y, i1 %should_lookup, i32 %z) {
; CHECK-LABEL: @phi_with_duplicate_incoming_basic_blocks(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[X_INC_NEG:%.*]] = xor i32 [[X:%.*]], -1
; CHECK-NEXT:    br i1 [[SHOULD_LOOKUP:%.*]], label [[LOOKUP:%.*]], label [[LOOP:%.*]]
; CHECK:       lookup:
; CHECK-NEXT:    [[TO_LOOKUP:%.*]] = phi i32 [ [[Y:%.*]], [[ENTRY:%.*]] ], [ [[METAVAL_NEG:%.*]], [[LOOP]] ]
; CHECK-NEXT:    switch i32 [[TO_LOOKUP]], label [[END:%.*]] [
; CHECK-NEXT:    i32 0, label [[LOOP]]
; CHECK-NEXT:    i32 42, label [[LOOP]]
; CHECK-NEXT:    ]
; CHECK:       loop:
; CHECK-NEXT:    [[METAVAL_NEG]] = phi i32 [ [[X_INC_NEG]], [[LOOKUP]] ], [ [[X_INC_NEG]], [[LOOKUP]] ], [ -84, [[ENTRY]] ]
; CHECK-NEXT:    [[REPEAT:%.*]] = call i1 @use32gen1(i32 [[METAVAL_NEG]])
; CHECK-NEXT:    br i1 [[REPEAT]], label [[LOOKUP]], label [[END]]
; CHECK:       end:
; CHECK-NEXT:    ret void
;
entry:
  %x_inc = add i32 %x, 1
  br i1 %should_lookup, label %lookup, label %loop

lookup:
  %to_lookup = phi i32 [ %y, %entry ], [ %negated_metaval, %loop ]
  switch i32 %to_lookup, label %end [
  i32 0, label %loop
  i32 42, label %loop
  ]

loop:
  %metaval = phi i32 [ %x_inc, %lookup ], [ %x_inc, %lookup ], [ 84, %entry ]
  %negated_metaval = sub i32 0, %metaval
  %repeat = call i1 @use32gen1(i32 %negated_metaval)
  br i1 %repeat, label %lookup, label %end

end:
  ret void
}

; truncation can be negated if it's operand can be negated
define i8 @t20(i8 %x, i16 %y) {
; CHECK-LABEL: @t20(
; CHECK-NEXT:    [[T0_NEG:%.*]] = shl i16 42, [[Y:%.*]]
; CHECK-NEXT:    [[T1_NEG:%.*]] = trunc i16 [[T0_NEG]] to i8
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = shl i16 -42, %y
  %t1 = trunc i16 %t0 to i8
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @n21(i8 %x, i16 %y) {
; CHECK-LABEL: @n21(
; CHECK-NEXT:    [[T0:%.*]] = shl i16 -42, [[Y:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = trunc i16 [[T0]] to i8
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = shl i16 -42, %y
  %t1 = trunc i16 %t0 to i8
  call void @use8(i8 %t1)
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}

define i4 @negate_xor(i4 %x) {
; CHECK-LABEL: @negate_xor(
; CHECK-NEXT:    [[TMP1:%.*]] = xor i4 [[X:%.*]], -6
; CHECK-NEXT:    [[O_NEG:%.*]] = add i4 [[TMP1]], 1
; CHECK-NEXT:    ret i4 [[O_NEG]]
;
  %o = xor i4 %x, 5
  %r = sub i4 0, %o
  ret i4 %r
}

define <2 x i4> @negate_xor_vec(<2 x i4> %x) {
; CHECK-LABEL: @negate_xor_vec(
; CHECK-NEXT:    [[TMP1:%.*]] = xor <2 x i4> [[X:%.*]], <i4 -6, i4 5>
; CHECK-NEXT:    [[O_NEG:%.*]] = add <2 x i4> [[TMP1]], <i4 1, i4 1>
; CHECK-NEXT:    ret <2 x i4> [[O_NEG]]
;
  %o = xor <2 x i4> %x, <i4 5, i4 10>
  %r = sub <2 x i4> zeroinitializer, %o
  ret <2 x i4> %r
}

define i8 @negate_xor_use(i8 %x) {
; CHECK-LABEL: @negate_xor_use(
; CHECK-NEXT:    [[O:%.*]] = xor i8 [[X:%.*]], 5
; CHECK-NEXT:    call void @use8(i8 [[O]])
; CHECK-NEXT:    [[R:%.*]] = sub i8 0, [[O]]
; CHECK-NEXT:    ret i8 [[R]]
;
  %o = xor i8 %x, 5
  call void @use8(i8 %o)
  %r = sub i8 0, %o
  ret i8 %r
}

define i4 @negate_shl_xor(i4 %x, i4 %y) {
; CHECK-LABEL: @negate_shl_xor(
; CHECK-NEXT:    [[TMP1:%.*]] = xor i4 [[X:%.*]], -6
; CHECK-NEXT:    [[O_NEG:%.*]] = add i4 [[TMP1]], 1
; CHECK-NEXT:    [[S_NEG:%.*]] = shl i4 [[O_NEG]], [[Y:%.*]]
; CHECK-NEXT:    ret i4 [[S_NEG]]
;
  %o = xor i4 %x, 5
  %s = shl i4 %o, %y
  %r = sub i4 0, %s
  ret i4 %r
}

define i8 @negate_shl_not_uses(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_shl_not_uses(
; CHECK-NEXT:    [[O_NEG:%.*]] = add i8 [[X:%.*]], 1
; CHECK-NEXT:    [[O:%.*]] = xor i8 [[X]], -1
; CHECK-NEXT:    call void @use8(i8 [[O]])
; CHECK-NEXT:    [[S_NEG:%.*]] = shl i8 [[O_NEG]], [[Y:%.*]]
; CHECK-NEXT:    ret i8 [[S_NEG]]
;
  %o = xor i8 %x, -1
  call void @use8(i8 %o)
  %s = shl i8 %o, %y
  %r = sub i8 0, %s
  ret i8 %r
}

define <2 x i4> @negate_mul_not_uses_vec(<2 x i4> %x, <2 x i4> %y) {
; CHECK-LABEL: @negate_mul_not_uses_vec(
; CHECK-NEXT:    [[O_NEG:%.*]] = add <2 x i4> [[X:%.*]], <i4 1, i4 1>
; CHECK-NEXT:    [[O:%.*]] = xor <2 x i4> [[X]], <i4 -1, i4 -1>
; CHECK-NEXT:    call void @use_v2i4(<2 x i4> [[O]])
; CHECK-NEXT:    [[S_NEG:%.*]] = mul <2 x i4> [[O_NEG]], [[Y:%.*]]
; CHECK-NEXT:    ret <2 x i4> [[S_NEG]]
;
  %o = xor <2 x i4> %x, <i4 -1, i4 -1>
  call void @use_v2i4(<2 x i4> %o)
  %s = mul <2 x i4> %o, %y
  %r = sub <2 x i4> zeroinitializer, %s
  ret <2 x i4> %r
}

; signed division can be negated if divisor can be negated and is not 1/-1
define i8 @negate_sdiv(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_sdiv(
; CHECK-NEXT:    [[T0_NEG:%.*]] = sdiv i8 [[Y:%.*]], -42
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[T0_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sdiv i8 %y, 42
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_sdiv_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_sdiv_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sdiv i8 [[Y:%.*]], 42
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sdiv i8 %y, 42
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_sdiv_extrause2(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_sdiv_extrause2(
; CHECK-NEXT:    [[T0:%.*]] = sdiv i8 [[Y:%.*]], 42
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub nsw i8 0, [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sdiv i8 %y, 42
  call void @use8(i8 %t0)
  %t1 = sub i8 0, %t0
  ret i8 %t1
}

; Right-shift sign bit smear is negatible.
define i8 @negate_ashr(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_ashr(
; CHECK-NEXT:    [[T0_NEG:%.*]] = lshr i8 [[Y:%.*]], 7
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[T0_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = ashr i8 %y, 7
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_lshr(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_lshr(
; CHECK-NEXT:    [[T0_NEG:%.*]] = ashr i8 [[Y:%.*]], 7
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[T0_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = lshr i8 %y, 7
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_ashr_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_ashr_extrause(
; CHECK-NEXT:    [[T0:%.*]] = ashr i8 [[Y:%.*]], 7
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = ashr i8 %y, 7
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_lshr_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_lshr_extrause(
; CHECK-NEXT:    [[T0:%.*]] = lshr i8 [[Y:%.*]], 7
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = lshr i8 %y, 7
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_ashr_wrongshift(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_ashr_wrongshift(
; CHECK-NEXT:    [[T0:%.*]] = ashr i8 [[Y:%.*]], 6
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = ashr i8 %y, 6
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_lshr_wrongshift(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_lshr_wrongshift(
; CHECK-NEXT:    [[T0:%.*]] = lshr i8 [[Y:%.*]], 6
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = lshr i8 %y, 6
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}

; *ext of i1 is always negatible
define i8 @negate_sext(i8 %x, i1 %y) {
; CHECK-LABEL: @negate_sext(
; CHECK-NEXT:    [[T0_NEG:%.*]] = zext i1 [[Y:%.*]] to i8
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[T0_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sext i1 %y to i8
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_zext(i8 %x, i1 %y) {
; CHECK-LABEL: @negate_zext(
; CHECK-NEXT:    [[T0_NEG:%.*]] = sext i1 [[Y:%.*]] to i8
; CHECK-NEXT:    [[T1:%.*]] = add i8 [[T0_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = zext i1 %y to i8
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_sext_extrause(i8 %x, i1 %y) {
; CHECK-LABEL: @negate_sext_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sext i1 [[Y:%.*]] to i8
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sext i1 %y to i8
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_zext_extrause(i8 %x, i1 %y) {
; CHECK-LABEL: @negate_zext_extrause(
; CHECK-NEXT:    [[T0:%.*]] = zext i1 [[Y:%.*]] to i8
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = zext i1 %y to i8
  call void @use8(i8 %t0)
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_sext_wrongwidth(i8 %x, i2 %y) {
; CHECK-LABEL: @negate_sext_wrongwidth(
; CHECK-NEXT:    [[T0:%.*]] = sext i2 [[Y:%.*]] to i8
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = sext i2 %y to i8
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}
define i8 @negate_zext_wrongwidth(i8 %x, i2 %y) {
; CHECK-LABEL: @negate_zext_wrongwidth(
; CHECK-NEXT:    [[T0:%.*]] = zext i2 [[Y:%.*]] to i8
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[X:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = zext i2 %y to i8
  %t1 = sub i8 %x, %t0
  ret i8 %t1
}

define <2 x i4> @negate_shufflevector_oneinput_reverse(<2 x i4> %x, <2 x i4> %y) {
; CHECK-LABEL: @negate_shufflevector_oneinput_reverse(
; CHECK-NEXT:    [[T0_NEG:%.*]] = shl <2 x i4> <i4 6, i4 -5>, [[X:%.*]]
; CHECK-NEXT:    [[T1_NEG:%.*]] = shufflevector <2 x i4> [[T0_NEG]], <2 x i4> undef, <2 x i32> <i32 1, i32 0>
; CHECK-NEXT:    [[T2:%.*]] = add <2 x i4> [[T1_NEG]], [[Y:%.*]]
; CHECK-NEXT:    ret <2 x i4> [[T2]]
;
  %t0 = shl <2 x i4> <i4 -6, i4 5>, %x
  %t1 = shufflevector <2 x i4> %t0, <2 x i4> undef, <2 x i32> <i32 1, i32 0>
  %t2 = sub <2 x i4> %y, %t1
  ret <2 x i4> %t2
}
define <2 x i4> @negate_shufflevector_oneinput_second_lane_is_undef(<2 x i4> %x, <2 x i4> %y) {
; CHECK-LABEL: @negate_shufflevector_oneinput_second_lane_is_undef(
; CHECK-NEXT:    [[T0_NEG:%.*]] = shl <2 x i4> <i4 6, i4 -5>, [[X:%.*]]
; CHECK-NEXT:    [[T1_NEG:%.*]] = shufflevector <2 x i4> [[T0_NEG]], <2 x i4> undef, <2 x i32> <i32 0, i32 undef>
; CHECK-NEXT:    [[T2:%.*]] = add <2 x i4> [[T1_NEG]], [[Y:%.*]]
; CHECK-NEXT:    ret <2 x i4> [[T2]]
;
  %t0 = shl <2 x i4> <i4 -6, i4 5>, %x
  %t1 = shufflevector <2 x i4> %t0, <2 x i4> undef, <2 x i32> <i32 0, i32 2>
  %t2 = sub <2 x i4> %y, %t1
  ret <2 x i4> %t2
}
define <2 x i4> @negate_shufflevector_twoinputs(<2 x i4> %x, <2 x i4> %y, <2 x i4> %z) {
; CHECK-LABEL: @negate_shufflevector_twoinputs(
; CHECK-NEXT:    [[T0_NEG:%.*]] = shl <2 x i4> <i4 6, i4 -5>, [[X:%.*]]
; CHECK-NEXT:    [[T1_NEG:%.*]] = add <2 x i4> [[Y:%.*]], <i4 poison, i4 1>
; CHECK-NEXT:    [[T2_NEG:%.*]] = shufflevector <2 x i4> [[T0_NEG]], <2 x i4> [[T1_NEG]], <2 x i32> <i32 0, i32 3>
; CHECK-NEXT:    [[T3:%.*]] = add <2 x i4> [[T2_NEG]], [[Z:%.*]]
; CHECK-NEXT:    ret <2 x i4> [[T3]]
;
  %t0 = shl <2 x i4> <i4 -6, i4 5>, %x
  %t1 = xor <2 x i4> %y, <i4 -1, i4 -1>
  %t2 = shufflevector <2 x i4> %t0, <2 x i4> %t1, <2 x i32> <i32 0, i32 3>
  %t3 = sub <2 x i4> %z, %t2
  ret <2 x i4> %t3
}
define <2 x i4> @negate_shufflevector_oneinput_extrause(<2 x i4> %x, <2 x i4> %y) {
; CHECK-LABEL: @negate_shufflevector_oneinput_extrause(
; CHECK-NEXT:    [[T0:%.*]] = shl <2 x i4> <i4 -6, i4 5>, [[X:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = shufflevector <2 x i4> [[T0]], <2 x i4> undef, <2 x i32> <i32 1, i32 0>
; CHECK-NEXT:    call void @use_v2i4(<2 x i4> [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub <2 x i4> [[Y:%.*]], [[T1]]
; CHECK-NEXT:    ret <2 x i4> [[T2]]
;
  %t0 = shl <2 x i4> <i4 -6, i4 5>, %x
  %t1 = shufflevector <2 x i4> %t0, <2 x i4> undef, <2 x i32> <i32 1, i32 0>
  call void @use_v2i4(<2 x i4> %t1)
  %t2 = sub <2 x i4> %y, %t1
  ret <2 x i4> %t2
}

; zext of non-negative can be negated
; sext of non-positive can be negated
define i16 @negation_of_zeroext_of_nonnegative(i8 %x) {
; CHECK-LABEL: @negation_of_zeroext_of_nonnegative(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = icmp sgt i8 [[T0]], -1
; CHECK-NEXT:    br i1 [[T1]], label [[NONNEG_BB:%.*]], label [[NEG_BB:%.*]]
; CHECK:       nonneg_bb:
; CHECK-NEXT:    [[T2:%.*]] = zext i8 [[T0]] to i16
; CHECK-NEXT:    [[T3:%.*]] = sub nsw i16 0, [[T2]]
; CHECK-NEXT:    ret i16 [[T3]]
; CHECK:       neg_bb:
; CHECK-NEXT:    ret i16 0
;
  %t0 = sub i8 0, %x
  %t1 = icmp sge i8 %t0, 0
  br i1 %t1, label %nonneg_bb, label %neg_bb

nonneg_bb:
  %t2 = zext i8 %t0 to i16
  %t3 = sub i16 0, %t2
  ret i16 %t3

neg_bb:
  ret i16 0
}
define i16 @negation_of_zeroext_of_positive(i8 %x) {
; CHECK-LABEL: @negation_of_zeroext_of_positive(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = icmp sgt i8 [[T0]], 0
; CHECK-NEXT:    br i1 [[T1]], label [[NONNEG_BB:%.*]], label [[NEG_BB:%.*]]
; CHECK:       nonneg_bb:
; CHECK-NEXT:    [[T2:%.*]] = zext i8 [[T0]] to i16
; CHECK-NEXT:    [[T3:%.*]] = sub nsw i16 0, [[T2]]
; CHECK-NEXT:    ret i16 [[T3]]
; CHECK:       neg_bb:
; CHECK-NEXT:    ret i16 0
;
  %t0 = sub i8 0, %x
  %t1 = icmp sgt i8 %t0, 0
  br i1 %t1, label %nonneg_bb, label %neg_bb

nonneg_bb:
  %t2 = zext i8 %t0 to i16
  %t3 = sub i16 0, %t2
  ret i16 %t3

neg_bb:
  ret i16 0
}
define i16 @negation_of_signext_of_negative(i8 %x) {
; CHECK-LABEL: @negation_of_signext_of_negative(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = icmp slt i8 [[T0]], 0
; CHECK-NEXT:    br i1 [[T1]], label [[NEG_BB:%.*]], label [[NONNEG_BB:%.*]]
; CHECK:       neg_bb:
; CHECK-NEXT:    [[T2:%.*]] = sext i8 [[T0]] to i16
; CHECK-NEXT:    [[T3:%.*]] = sub nsw i16 0, [[T2]]
; CHECK-NEXT:    ret i16 [[T3]]
; CHECK:       nonneg_bb:
; CHECK-NEXT:    ret i16 0
;
  %t0 = sub i8 0, %x
  %t1 = icmp slt i8 %t0, 0
  br i1 %t1, label %neg_bb, label %nonneg_bb

neg_bb:
  %t2 = sext i8 %t0 to i16
  %t3 = sub i16 0, %t2
  ret i16 %t3

nonneg_bb:
  ret i16 0
}
define i16 @negation_of_signext_of_nonpositive(i8 %x) {
; CHECK-LABEL: @negation_of_signext_of_nonpositive(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = icmp slt i8 [[T0]], 1
; CHECK-NEXT:    br i1 [[T1]], label [[NEG_BB:%.*]], label [[NONNEG_BB:%.*]]
; CHECK:       neg_bb:
; CHECK-NEXT:    [[T2:%.*]] = sext i8 [[T0]] to i16
; CHECK-NEXT:    [[T3:%.*]] = sub nsw i16 0, [[T2]]
; CHECK-NEXT:    ret i16 [[T3]]
; CHECK:       nonneg_bb:
; CHECK-NEXT:    ret i16 0
;
  %t0 = sub i8 0, %x
  %t1 = icmp sle i8 %t0, 0
  br i1 %t1, label %neg_bb, label %nonneg_bb

neg_bb:
  %t2 = sext i8 %t0 to i16
  %t3 = sub i16 0, %t2
  ret i16 %t3

nonneg_bb:
  ret i16 0
}
define i16 @negation_of_signext_of_nonnegative__wrong_cast(i8 %x) {
; CHECK-LABEL: @negation_of_signext_of_nonnegative__wrong_cast(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = icmp sgt i8 [[T0]], -1
; CHECK-NEXT:    br i1 [[T1]], label [[NONNEG_BB:%.*]], label [[NEG_BB:%.*]]
; CHECK:       nonneg_bb:
; CHECK-NEXT:    [[T2:%.*]] = sext i8 [[T0]] to i16
; CHECK-NEXT:    [[T3:%.*]] = sub nsw i16 0, [[T2]]
; CHECK-NEXT:    ret i16 [[T3]]
; CHECK:       neg_bb:
; CHECK-NEXT:    ret i16 0
;
  %t0 = sub i8 0, %x
  %t1 = icmp sge i8 %t0, 0
  br i1 %t1, label %nonneg_bb, label %neg_bb

nonneg_bb:
  %t2 = sext i8 %t0 to i16
  %t3 = sub i16 0, %t2
  ret i16 %t3

neg_bb:
  ret i16 0
}
define i16 @negation_of_zeroext_of_negative_wrongcast(i8 %x) {
; CHECK-LABEL: @negation_of_zeroext_of_negative_wrongcast(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = icmp slt i8 [[T0]], 0
; CHECK-NEXT:    br i1 [[T1]], label [[NEG_BB:%.*]], label [[NONNEG_BB:%.*]]
; CHECK:       neg_bb:
; CHECK-NEXT:    [[T2:%.*]] = zext i8 [[T0]] to i16
; CHECK-NEXT:    [[T3:%.*]] = sub nsw i16 0, [[T2]]
; CHECK-NEXT:    ret i16 [[T3]]
; CHECK:       nonneg_bb:
; CHECK-NEXT:    ret i16 0
;
  %t0 = sub i8 0, %x
  %t1 = icmp slt i8 %t0, 0
  br i1 %t1, label %neg_bb, label %nonneg_bb

neg_bb:
  %t2 = zext i8 %t0 to i16
  %t3 = sub i16 0, %t2
  ret i16 %t3

nonneg_bb:
  ret i16 0
}

; 'or' of 1 and operand with no lowest bit set is 'inc'
define i8 @negation_of_increment_via_or_with_no_common_bits_set(i8 %x, i8 %y) {
; CHECK-LABEL: @negation_of_increment_via_or_with_no_common_bits_set(
; CHECK-NEXT:    [[T0:%.*]] = shl i8 [[Y:%.*]], 1
; CHECK-NEXT:    [[T1_NEG:%.*]] = xor i8 [[T0]], -1
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = shl i8 %y, 1
  %t1 = or i8 %t0, 1
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @negation_of_increment_via_or_with_no_common_bits_set_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @negation_of_increment_via_or_with_no_common_bits_set_extrause(
; CHECK-NEXT:    [[T0:%.*]] = shl i8 [[Y:%.*]], 1
; CHECK-NEXT:    [[T1:%.*]] = or i8 [[T0]], 1
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = shl i8 %y, 1
  %t1 = or i8 %t0, 1
  call void @use8(i8 %t1)
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @negation_of_increment_via_or_common_bits_set(i8 %x, i8 %y) {
; CHECK-LABEL: @negation_of_increment_via_or_common_bits_set(
; CHECK-NEXT:    [[T0:%.*]] = shl i8 [[Y:%.*]], 1
; CHECK-NEXT:    [[T1:%.*]] = or i8 [[T0]], 3
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = shl i8 %y, 1
  %t1 = or i8 %t0, 3
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}

; 'or' of operands with no common bits set is 'add'
define i8 @add_via_or_with_no_common_bits_set(i8 %x, i8 %y) {
; CHECK-LABEL: @add_via_or_with_no_common_bits_set(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = shl i8 [[Y]], 2
; CHECK-NEXT:    [[T2_NEG:%.*]] = add i8 [[T1_NEG]], -3
; CHECK-NEXT:    [[T3:%.*]] = add i8 [[T2_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T3]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, 2
  %t2 = or i8 %t1, 3
  %t3 = sub i8 %x, %t2
  ret i8 %t3
}
define i8 @add_via_or_with_common_bit_maybe_set(i8 %x, i8 %y) {
; CHECK-LABEL: @add_via_or_with_common_bit_maybe_set(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = shl i8 [[T0]], 2
; CHECK-NEXT:    [[T2:%.*]] = or i8 [[T1]], 4
; CHECK-NEXT:    [[T3:%.*]] = sub i8 [[X:%.*]], [[T2]]
; CHECK-NEXT:    ret i8 [[T3]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, 2
  %t2 = or i8 %t1, 4
  %t3 = sub i8 %x, %t2
  ret i8 %t3
}
define i8 @add_via_or_with_no_common_bits_set_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @add_via_or_with_no_common_bits_set_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Y:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = shl i8 [[T0]], 2
; CHECK-NEXT:    [[T2:%.*]] = or i8 [[T1]], 3
; CHECK-NEXT:    call void @use8(i8 [[T2]])
; CHECK-NEXT:    [[T3:%.*]] = sub i8 [[X:%.*]], [[T2]]
; CHECK-NEXT:    ret i8 [[T3]]
;
  %t0 = sub i8 0, %y
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, 2
  %t2 = or i8 %t1, 3
  call void @use8(i8 %t2)
  %t3 = sub i8 %x, %t2
  ret i8 %t3
}

; `extractelement` is negatible if source operand is negatible.
define i4 @negate_extractelement(<2 x i4> %x, i32 %y, i4 %z) {
; CHECK-LABEL: @negate_extractelement(
; CHECK-NEXT:    [[T0:%.*]] = sub <2 x i4> zeroinitializer, [[X:%.*]]
; CHECK-NEXT:    call void @use_v2i4(<2 x i4> [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = extractelement <2 x i4> [[X]], i32 [[Y:%.*]]
; CHECK-NEXT:    [[T2:%.*]] = add i4 [[T1_NEG]], [[Z:%.*]]
; CHECK-NEXT:    ret i4 [[T2]]
;
  %t0 = sub <2 x i4> zeroinitializer, %x
  call void @use_v2i4(<2 x i4> %t0)
  %t1 = extractelement <2 x i4> %t0, i32 %y
  %t2 = sub i4 %z, %t1
  ret i4 %t2
}
define i4 @negate_extractelement_extrause(<2 x i4> %x, i32 %y, i4 %z) {
; CHECK-LABEL: @negate_extractelement_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sub <2 x i4> zeroinitializer, [[X:%.*]]
; CHECK-NEXT:    call void @use_v2i4(<2 x i4> [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = extractelement <2 x i4> [[T0]], i32 [[Y:%.*]]
; CHECK-NEXT:    call void @use4(i4 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i4 [[Z:%.*]], [[T1]]
; CHECK-NEXT:    ret i4 [[T2]]
;
  %t0 = sub <2 x i4> zeroinitializer, %x
  call void @use_v2i4(<2 x i4> %t0)
  %t1 = extractelement <2 x i4> %t0, i32 %y
  call void @use4(i4 %t1)
  %t2 = sub i4 %z, %t1
  ret i4 %t2
}

; `insertelement` is negatible if both source vector and element-to-be-inserted are negatible.
define <2 x i4> @negate_insertelement(<2 x i4> %src, i4 %a, i32 %x, <2 x i4> %b) {
; CHECK-LABEL: @negate_insertelement(
; CHECK-NEXT:    [[T2_NEG:%.*]] = insertelement <2 x i4> [[SRC:%.*]], i4 [[A:%.*]], i32 [[X:%.*]]
; CHECK-NEXT:    [[T3:%.*]] = add <2 x i4> [[T2_NEG]], [[B:%.*]]
; CHECK-NEXT:    ret <2 x i4> [[T3]]
;
  %t0 = sub <2 x i4> zeroinitializer, %src
  %t1 = sub i4 zeroinitializer, %a
  %t2 = insertelement <2 x i4> %t0, i4 %t1, i32 %x
  %t3 = sub <2 x i4> %b, %t2
  ret <2 x i4> %t3
}
define <2 x i4> @negate_insertelement_extrause(<2 x i4> %src, i4 %a, i32 %x, <2 x i4> %b) {
; CHECK-LABEL: @negate_insertelement_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sub <2 x i4> zeroinitializer, [[SRC:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = sub i4 0, [[A:%.*]]
; CHECK-NEXT:    [[T2:%.*]] = insertelement <2 x i4> [[T0]], i4 [[T1]], i32 [[X:%.*]]
; CHECK-NEXT:    call void @use_v2i4(<2 x i4> [[T2]])
; CHECK-NEXT:    [[T3:%.*]] = sub <2 x i4> [[B:%.*]], [[T2]]
; CHECK-NEXT:    ret <2 x i4> [[T3]]
;
  %t0 = sub <2 x i4> zeroinitializer, %src
  %t1 = sub i4 zeroinitializer, %a
  %t2 = insertelement <2 x i4> %t0, i4 %t1, i32 %x
  call void @use_v2i4(<2 x i4> %t2)
  %t3 = sub <2 x i4> %b, %t2
  ret <2 x i4> %t3
}
define <2 x i4> @negate_insertelement_nonnegatible_base(<2 x i4> %src, i4 %a, i32 %x, <2 x i4> %b) {
; CHECK-LABEL: @negate_insertelement_nonnegatible_base(
; CHECK-NEXT:    [[T1:%.*]] = sub i4 0, [[A:%.*]]
; CHECK-NEXT:    [[T2:%.*]] = insertelement <2 x i4> [[SRC:%.*]], i4 [[T1]], i32 [[X:%.*]]
; CHECK-NEXT:    [[T3:%.*]] = sub <2 x i4> [[B:%.*]], [[T2]]
; CHECK-NEXT:    ret <2 x i4> [[T3]]
;
  %t1 = sub i4 zeroinitializer, %a
  %t2 = insertelement <2 x i4> %src, i4 %t1, i32 %x
  %t3 = sub <2 x i4> %b, %t2
  ret <2 x i4> %t3
}
define <2 x i4> @negate_insertelement_nonnegatible_insert(<2 x i4> %src, i4 %a, i32 %x, <2 x i4> %b) {
; CHECK-LABEL: @negate_insertelement_nonnegatible_insert(
; CHECK-NEXT:    [[T0:%.*]] = sub <2 x i4> zeroinitializer, [[SRC:%.*]]
; CHECK-NEXT:    [[T2:%.*]] = insertelement <2 x i4> [[T0]], i4 [[A:%.*]], i32 [[X:%.*]]
; CHECK-NEXT:    [[T3:%.*]] = sub <2 x i4> [[B:%.*]], [[T2]]
; CHECK-NEXT:    ret <2 x i4> [[T3]]
;
  %t0 = sub <2 x i4> zeroinitializer, %src
  %t2 = insertelement <2 x i4> %t0, i4 %a, i32 %x
  %t3 = sub <2 x i4> %b, %t2
  ret <2 x i4> %t3
}

; left-shift by constant can always be negated
define i8 @negate_left_shift_by_constant_prefer_keeping_shl(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @negate_left_shift_by_constant_prefer_keeping_shl(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = shl i8 [[Z]], 4
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %z
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, 4
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @negate_left_shift_by_constant_prefer_keeping_shl_extrause(i8 %x, i8 %y, i8 %z) {
; CHECK-LABEL: @negate_left_shift_by_constant_prefer_keeping_shl_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = shl i8 [[T0]], 4
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %z
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, 4
  call void @use8(i8 %t1)
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @negate_left_shift_by_constant(i8 %x, i8 %y, i8 %z, i8 %k) {
; CHECK-LABEL: @negate_left_shift_by_constant(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 [[K:%.*]], [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1_NEG:%.*]] = mul i8 [[T0]], -16
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[T1_NEG]], [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 %k, %z
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, 4
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}
define i8 @negate_left_shift_by_constant_extrause(i8 %x, i8 %y, i8 %z, i8 %k) {
; CHECK-LABEL: @negate_left_shift_by_constant_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 [[K:%.*]], [[Z:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = shl i8 [[T0]], 4
; CHECK-NEXT:    call void @use8(i8 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i8 [[X:%.*]], [[T1]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 %k, %z
  call void @use8(i8 %t0)
  %t1 = shl i8 %t0, 4
  call void @use8(i8 %t1)
  %t2 = sub i8 %x, %t1
  ret i8 %t2
}

; `add` with single negatible operand is still negatible
define i8 @negate_add_with_single_negatible_operand(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_add_with_single_negatible_operand(
; CHECK-NEXT:    [[T1:%.*]] = sub i8 -42, [[X:%.*]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = add i8 %x, 42
  %t1 = sub i8 0, %t0
  ret i8 %t1
}
; do so even if we are two levels deep
define i8 @negate_add_with_single_negatible_operand_depth2(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_add_with_single_negatible_operand_depth2(
; CHECK-NEXT:    [[T0_NEG:%.*]] = sub i8 -21, [[X:%.*]]
; CHECK-NEXT:    [[T1_NEG:%.*]] = mul i8 [[T0_NEG]], [[Y:%.*]]
; CHECK-NEXT:    ret i8 [[T1_NEG]]
;
  %t0 = add i8 %x, 21
  %t1 = mul i8 %t0, %y
  %t2 = sub i8 0, %t1
  ret i8 %t2
}

define i8 @negate_add_with_single_negatible_operand_extrause(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_add_with_single_negatible_operand_extrause(
; CHECK-NEXT:    [[T0:%.*]] = add i8 [[X:%.*]], 42
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[T1:%.*]] = sub i8 -42, [[X]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = add i8 %x, 42
  call void @use8(i8 %t0)
  %t1 = sub i8 0, %t0
  ret i8 %t1
}
; But don't do this if that means just sinking the negation.
define i8 @negate_add_with_single_negatible_operand_non_negation(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_add_with_single_negatible_operand_non_negation(
; CHECK-NEXT:    [[T0:%.*]] = add i8 [[X:%.*]], 42
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[Y:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = add i8 %x, 42
  %t1 = sub i8 %y, %t0
  ret i8 %t1
}

; abs/nabs can be negated
define i8 @negate_abs(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_abs(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.abs.i8(i8 [[X]], i1 false)
; CHECK-NEXT:    [[T3:%.*]] = sub i8 [[Y:%.*]], [[TMP1]]
; CHECK-NEXT:    ret i8 [[T3]]
;
  %t0 = sub i8 0, %x
  call void @use8(i8 %t0)
  %t1 = icmp slt i8 %x, 0
  %t2 = select i1 %t1, i8 %t0, i8 %x, !prof !0
  %t3 = sub i8 %y, %t2
  ret i8 %t3
}
define i8 @negate_nabs(i8 %x, i8 %y) {
; CHECK-LABEL: @negate_nabs(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[TMP1:%.*]] = call i8 @llvm.abs.i8(i8 [[X]], i1 false)
; CHECK-NEXT:    [[T3:%.*]] = add i8 [[TMP1]], [[Y:%.*]]
; CHECK-NEXT:    ret i8 [[T3]]
;
  %t0 = sub i8 0, %x
  call void @use8(i8 %t0)
  %t1 = icmp slt i8 %x, 0
  %t2 = select i1 %t1, i8 %x, i8 %t0, !prof !0
  %t3 = sub i8 %y, %t2
  ret i8 %t3
}

; And in general, if hands of select are known to be negation of each other,
; we can negate the select
define i8 @negate_select_of_op_vs_negated_op(i8 %x, i8 %y, i1 %c) {
; CHECK-LABEL: @negate_select_of_op_vs_negated_op(
; CHECK-NEXT:    [[T0:%.*]] = sub i8 0, [[X:%.*]]
; CHECK-NEXT:    call void @use8(i8 [[T0]])
; CHECK-NEXT:    [[TMP1:%.*]] = select i1 [[C:%.*]], i8 [[X]], i8 [[T0]], !prof [[PROF0:![0-9]+]]
; CHECK-NEXT:    [[T2:%.*]] = add i8 [[TMP1]], [[Y:%.*]]
; CHECK-NEXT:    ret i8 [[T2]]
;
  %t0 = sub i8 0, %x
  call void @use8(i8 %t0)
  %t1 = select i1 %c, i8 %t0, i8 %x, !prof !0
  %t2 = sub i8 %y, %t1
  ret i8 %t2
}
define i8 @dont_negate_ordinary_select(i8 %x, i8 %y, i8 %z, i1 %c) {
; CHECK-LABEL: @dont_negate_ordinary_select(
; CHECK-NEXT:    [[T0:%.*]] = select i1 [[C:%.*]], i8 [[X:%.*]], i8 [[Y:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = sub i8 [[Z:%.*]], [[T0]]
; CHECK-NEXT:    ret i8 [[T1]]
;
  %t0 = select i1 %c, i8 %x, i8 %y
  %t1 = sub i8 %z, %t0
  ret i8 %t1
}

; Freeze is transparent as far as negation is concerned
define i4 @negate_freeze(i4 %x, i4 %y, i4 %z) {
; CHECK-LABEL: @negate_freeze(
; CHECK-NEXT:    [[T0_NEG:%.*]] = sub i4 [[Y:%.*]], [[X:%.*]]
; CHECK-NEXT:    [[T1_NEG:%.*]] = freeze i4 [[T0_NEG]]
; CHECK-NEXT:    [[T2:%.*]] = add i4 [[T1_NEG]], [[Z:%.*]]
; CHECK-NEXT:    ret i4 [[T2]]
;
  %t0 = sub i4 %x, %y
  %t1 = freeze i4 %t0
  %t2 = sub i4 %z, %t1
  ret i4 %t2
}
define i4 @negate_freeze_extrause(i4 %x, i4 %y, i4 %z) {
; CHECK-LABEL: @negate_freeze_extrause(
; CHECK-NEXT:    [[T0:%.*]] = sub i4 [[X:%.*]], [[Y:%.*]]
; CHECK-NEXT:    [[T1:%.*]] = freeze i4 [[T0]]
; CHECK-NEXT:    call void @use4(i4 [[T1]])
; CHECK-NEXT:    [[T2:%.*]] = sub i4 [[Z:%.*]], [[T1]]
; CHECK-NEXT:    ret i4 [[T2]]
;
  %t0 = sub i4 %x, %y
  %t1 = freeze i4 %t0
  call void @use4(i4 %t1)
  %t2 = sub i4 %z, %t1
  ret i4 %t2
}

; Due to the InstCombine's worklist management, there are no guarantees that
; each instruction we'll encounter has been visited by InstCombine already.
; In particular, most importantly for us, that means we have to canonicalize
; constants to RHS ourselves, since that is helpful sometimes.
; This used to cause an endless combine loop.
define void @noncanonical_mul_with_constant_as_first_operand() {
; CHECK-LABEL: @noncanonical_mul_with_constant_as_first_operand(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[IF_END:%.*]]
; CHECK:       if.end:
; CHECK-NEXT:    br label [[IF_END]]
;
entry:
  br label %if.end

if.end:
  %e.0 = phi i32 [ undef, %entry ], [ %div, %if.end ]
  %conv = trunc i32 %e.0 to i16
  %mul.i = mul nsw i16 -1, %conv
  %conv1 = sext i16 %mul.i to i32
  %div = sub nsw i32 0, %conv1
  br label %if.end
}

; CHECK: !0 = !{!"branch_weights", i32 40, i32 1}
!0 = !{!"branch_weights", i32 40, i32 1}
