11; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22; RUN: opt -S -passes=instcombine < %s | FileCheck %s
33
4- target datalayout = "e-p:64:64:64-p1:16:16:16-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"
4+ target datalayout = "e-p:64:64:64-p1:16:16:16-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-p2:32:32 "
55
66define i64 @test_inbounds (ptr %base , i64 %idx ) {
77; CHECK-LABEL: @test_inbounds(
@@ -271,7 +271,7 @@ define i64 @test25(ptr %P, i64 %A){
271271}
272272
273273define i64 @zext_ptrtoint_sub_ptrtoint (ptr %p , i32 %offset ) {
274- ; CHECK-LABLE : @zext_ptrtoint_sub_ptrtoint(
274+ ; CHECK-LABEL : @zext_ptrtoint_sub_ptrtoint(
275275; CHECK-NEXT: %1 = sext i32 %offset to i64
276276; CHECK-NEXT: %A = getelementptr bfloat, ptr @Arr, i64 %1
277277; CHECK-NEXT: %2 = ptrtoint ptr %A to i64
@@ -286,7 +286,7 @@ define i64 @zext_ptrtoint_sub_ptrtoint(ptr %p, i32 %offset) {
286286}
287287
288288define i64 @ptrtoint_sub_zext_ptrtoint (ptr %p , i32 %offset ) {
289- ; CHECK-LABLE : @ptrtoint_sub_zext_ptrtoint(
289+ ; CHECK-LABEL : @ptrtoint_sub_zext_ptrtoint(
290290; CHECK-NEXT: %1 = sext i32 %offset to i64
291291; CHECK-NEXT: %A = getelementptr bfloat, ptr @Arr, i64 %1
292292; CHECK-NEXT: %2 = ptrtoint ptr %A to i64
@@ -315,29 +315,30 @@ define i16 @test25_as1(ptr addrspace(1) %P, i64 %A) {
315315 ret i16 %G
316316}
317317
318- define i64 @zext_ptrtoint_sub_ptrtoint_as1 ( ptr addrspace (1 ) %p , i32 %offset ) {
319- ; CHECK-LABLE: @zext_ptrtoint_sub_ptrtoint_as1(
320- ; CHECK-NEXT: %1 = trunc i32 %offset to i16
321- ; CHECK-NEXT: %A.idx = shl i16 %1 , 1
322- ; CHECK-NEXT: %D = sext i16 %A.idx to i64
318+ @Arr_as2 = external addrspace (2 ) global [ 42 x i16 ]
319+ define i64 @zext_ptrtoint_sub_ptrtoint_as2 ( ptr addrspace ( 1 ) %p , i32 %offset ) {
320+ ; CHECK-LABEL: @zext_ptrtoint_sub_ptrtoint_as2(
321+ ; CHECK-NEXT: %A.idx = shl nsw i32 %offset , 1
322+ ; CHECK-NEXT: %D = zext i32 %A.idx to i64
323323; CHECK-NEXT: ret i64 %D
324- %A = getelementptr bfloat, ptr addrspace (1 ) @Arr_as1 , i32 %offset
325- %B = ptrtoint ptr addrspace (1 ) %A to i32
324+ %A = getelementptr inbounds bfloat, ptr addrspace (2 ) @Arr_as2 , i32 %offset
325+ %B = ptrtoint ptr addrspace (2 ) %A to i32
326326 %C = zext i32 %B to i64
327- %D = sub i64 %C , ptrtoint (ptr addrspace (1 ) @Arr_as1 to i64 )
327+ %D = sub i64 %C , ptrtoint (ptr addrspace (2 ) @Arr_as2 to i64 )
328328 ret i64 %D
329329}
330330
331- define i64 @ptrtoint_sub_zext_ptrtoint_as1 (ptr addrspace (1 ) %p , i32 %offset ) {
332- ; CHECK-LABLE: @ptrtoint_sub_zext_ptrtoint_as1(
333- ; CHECK-NEXT: %1 = trunc i32 %offset to i16
334- ; CHECK-NEXT: %A.idx.neg = mul i16 %1, -2
335- ; CHECK-NEXT: %D = sext i16 %A.idx.neg to i64
331+ define i64 @ptrtoint_sub_zext_ptrtoint_as2 (ptr addrspace (2 ) %p , i32 %offset ) {
332+ ; CHECK-LABEL: @ptrtoint_sub_zext_ptrtoint_as2(
333+ ; CHECK-NEXT: %A = getelementptr inbounds bfloat, ptr addrspace(2) @Arr_as2, i32 %offset
334+ ; CHECK-NEXT: %B = ptrtoint ptr addrspace(2) %A to i32
335+ ; CHECK-NEXT: %C = zext i32 %B to i64
336+ ; CHECK-NEXT: %D = sub nsw i64 ptrtoint (ptr addrspace(2) @Arr_as2 to i64), %C
336337; CHECK-NEXT: ret i64 %D
337- %A = getelementptr bfloat, ptr addrspace (1 ) @Arr_as1 , i32 %offset
338- %B = ptrtoint ptr addrspace (1 ) %A to i32
338+ %A = getelementptr inbounds bfloat, ptr addrspace (2 ) @Arr_as2 , i32 %offset
339+ %B = ptrtoint ptr addrspace (2 ) %A to i32
339340 %C = zext i32 %B to i64
340- %D = sub i64 ptrtoint (ptr addrspace (1 ) @Arr_as1 to i64 ), %C
341+ %D = sub i64 ptrtoint (ptr addrspace (2 ) @Arr_as2 to i64 ), %C
341342 ret i64 %D
342343}
343344
0 commit comments