1
1
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2
2
; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3
- target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
4
- target triple = "x86_64-unknown-linux-gnu"
5
3
6
- define i64 @ptrdiff1 (ptr %ptr ) {
7
- ; CHECK-LABEL: @ptrdiff1 (
4
+ define i64 @ptrdiff (ptr %ptr ) {
5
+ ; CHECK-LABEL: @ptrdiff (
8
6
; CHECK-NEXT: ret i64 42
9
7
;
10
8
%last = getelementptr inbounds i8 , ptr %ptr , i32 42
@@ -29,8 +27,8 @@ define i64 @ptrdiff_no_inbounds(ptr %ptr) {
29
27
ret i64 %diff
30
28
}
31
29
32
- define i64 @ptrdiff2 (ptr %ptr ) {
33
- ; CHECK-LABEL: @ptrdiff2 (
30
+ define i64 @ptrdiff_chain (ptr %ptr ) {
31
+ ; CHECK-LABEL: @ptrdiff_chain (
34
32
; CHECK-NEXT: ret i64 42
35
33
;
36
34
%first2 = getelementptr inbounds i8 , ptr %ptr , i32 1
@@ -46,25 +44,9 @@ define i64 @ptrdiff2(ptr %ptr) {
46
44
ret i64 %diff
47
45
}
48
46
49
- define i64 @ptrdiff3 (ptr %ptr ) {
50
- ; Don't bother with non-inbounds GEPs.
51
- ; CHECK-LABEL: @ptrdiff3(
52
- ; CHECK-NEXT: [[LAST1:%.*]] = getelementptr i8, ptr [[LAST:%.*]], i32 42
53
- ; CHECK-NEXT: [[LAST_INT:%.*]] = ptrtoint ptr [[LAST]] to i64
54
- ; CHECK-NEXT: [[LAST_INT1:%.*]] = ptrtoint ptr [[LAST1]] to i64
55
- ; CHECK-NEXT: [[DIFF:%.*]] = sub i64 [[LAST_INT1]], [[LAST_INT]]
56
- ; CHECK-NEXT: ret i64 [[DIFF]]
57
- ;
58
- %last = getelementptr i8 , ptr %ptr , i32 42
59
- %first.int = ptrtoint ptr %ptr to i64
60
- %last.int = ptrtoint ptr %last to i64
61
- %diff = sub i64 %last.int , %first.int
62
- ret i64 %diff
63
- }
64
-
65
- define <4 x i32 > @ptrdiff4 (<4 x ptr > %arg ) nounwind {
66
47
; Handle simple cases of vectors of pointers.
67
- ; CHECK-LABEL: @ptrdiff4(
48
+ define <4 x i32 > @ptrdiff_vectors (<4 x ptr > %arg ) nounwind {
49
+ ; CHECK-LABEL: @ptrdiff_vectors(
68
50
; CHECK-NEXT: ret <4 x i32> zeroinitializer
69
51
;
70
52
%p1 = ptrtoint <4 x ptr > %arg to <4 x i32 >
@@ -78,8 +60,8 @@ define <4 x i32> @ptrdiff4(<4 x ptr> %arg) nounwind {
78
60
79
61
@global = internal global %struct.ham zeroinitializer , align 4
80
62
81
- define i32 @ptrdiff5 () nounwind {
82
- ; CHECK-LABEL: @ptrdiff5 (
63
+ define i32 @ptrdiff_global () nounwind {
64
+ ; CHECK-LABEL: @ptrdiff_global (
83
65
; CHECK-NEXT: bb:
84
66
; CHECK-NEXT: ret i32 0
85
67
;
0 commit comments