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

define i64 @ptrdiff(ptr %ptr) {
; CHECK-LABEL: @ptrdiff(
; CHECK-NEXT:    ret i64 42
;
  %last = getelementptr inbounds i8, ptr %ptr, i32 42
  %first.int = ptrtoint ptr %ptr to i64
  %last.int = ptrtoint ptr %last to i64
  %diff = sub i64 %last.int, %first.int
  ret i64 %diff
}

define i64 @ptrdiff_no_inbounds(ptr %ptr) {
; CHECK-LABEL: @ptrdiff_no_inbounds(
; CHECK-NEXT:    ret i64 42
;
  %last = getelementptr i8, ptr %ptr, i32 42
  %first.int = ptrtoint ptr %ptr to i64
  %last.int = ptrtoint ptr %last to i64
  %diff = sub i64 %last.int, %first.int
  ret i64 %diff
}

define i64 @ptrdiff_chain(ptr %ptr) {
; CHECK-LABEL: @ptrdiff_chain(
; CHECK-NEXT:    ret i64 42
;
  %first2 = getelementptr inbounds i8, ptr %ptr, i32 1
  %first3 = getelementptr inbounds i8, ptr %first2, i32 2
  %first4 = getelementptr inbounds i8, ptr %first3, i32 4
  %last1 = getelementptr inbounds i8, ptr %first2, i32 48
  %last2 = getelementptr inbounds i8, ptr %last1, i32 8
  %last3 = getelementptr inbounds i8, ptr %last2, i32 -4
  %last4 = getelementptr inbounds i8, ptr %last3, i32 -4
  %first.int = ptrtoint ptr %first4 to i64
  %last.int = ptrtoint ptr %last4 to i64
  %diff = sub i64 %last.int, %first.int
  ret i64 %diff
}

; Handle simple cases of vectors of pointers.
define <4 x i32> @ptrdiff_vectors(<4 x ptr> %arg) nounwind {
; CHECK-LABEL: @ptrdiff_vectors(
; CHECK-NEXT:    ret <4 x i32> zeroinitializer
;
  %p1 = ptrtoint <4 x ptr> %arg to <4 x i32>
  %bc = bitcast <4 x ptr> %arg to <4 x ptr>
  %p2 = ptrtoint <4 x ptr> %bc to <4 x i32>
  %sub = sub <4 x i32> %p1, %p2
  ret <4 x i32> %sub
}

%struct.ham = type { i32, [2 x [2 x i32]] }

@global = internal global %struct.ham zeroinitializer, align 4

define i32 @ptrdiff_global() nounwind {
; CHECK-LABEL: @ptrdiff_global(
; CHECK-NEXT:  bb:
; CHECK-NEXT:    ret i32 0
;
bb:
  %tmp = getelementptr inbounds %struct.ham, ptr @global, i32 0, i32 1
  %tmp3 = ptrtoint ptr %tmp to i32
  %tmp4 = getelementptr inbounds %struct.ham, ptr @global, i32 0, i32 1
  %tmp6 = ptrtoint ptr %tmp4 to i32
  %tmp7 = sub i32 %tmp3, %tmp6
  ret i32 %tmp7
}
