diff --git a/polly/test/ScopInfo/int2ptr_ptr2int.ll b/polly/test/ScopInfo/int2ptr_ptr2int.ll index 1b5aca8bee3b0..7cd6ec4c239fe 100644 --- a/polly/test/ScopInfo/int2ptr_ptr2int.ll +++ b/polly/test/ScopInfo/int2ptr_ptr2int.ll @@ -1,5 +1,5 @@ -; RUN: opt -opaque-pointers=0 %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s -; RUN: opt -opaque-pointers=0 %loadPolly -S -polly-codegen < %s | FileCheck %s --check-prefix=IR +; RUN: opt %loadPolly -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -S -polly-codegen < %s | FileCheck %s --check-prefix=IR ; ; void f(long *A, long *ptr, long val) { ; for (long i = 0; i < 100; i++) { @@ -17,31 +17,32 @@ ; CHECK-NEXT: [val, ptr] -> { Stmt_for_body[i0] -> MemRef_A[9 + ptr] }; ; ; IR: entry: -; IR-NEXT: %ptr1 = ptrtoint i64* %ptr to i32 +; IR-NEXT: %ptr1 = ptrtoint ptr %ptr to i32 ; ; IR: polly.stmt.for.body: -; IR-NEXT: %p_tmp1 = inttoptr i64 %14 to i64* -; IR-NEXT: %p_add.ptr2 = getelementptr inbounds i64, i64* %p_tmp1, i64 1 -; IR-NEXT: %p_tmp2 = ptrtoint i64* %p_add.ptr2 to i64 -; IR-NEXT: %p_arrayidx = getelementptr inbounds i64, i64* %A, i64 %p_tmp2 -; IR-NEXT: %tmp3_p_scalar_ = load i64, i64* %p_arrayidx, align 8, !alias.scope !0, !noalias !3 -; IR-NEXT: %tmp4_p_scalar_ = load i64, i64* %scevgep, align 8, !alias.scope !0, !noalias !3 +; IR-NEXT: %p_tmp1 = inttoptr i64 %14 to ptr +; IR-NEXT: %p_add.ptr2 = getelementptr inbounds i64, ptr %p_tmp1, i64 1 +; IR-NEXT: %p_tmp2 = ptrtoint ptr %p_add.ptr2 to i64 +; IR-NEXT: %p_arrayidx = getelementptr inbounds i64, ptr %A, i64 %p_tmp2 +; IR-NEXT: %tmp3_p_scalar_ = load i64, ptr %p_arrayidx, align 8, !alias.scope !0, !noalias !3 +; IR-NEXT: %tmp4_p_scalar_ = load i64, ptr %uglygep, align 8, !alias.scope !0, !noalias !3 ; IR-NEXT: %p_add4 = add nsw i64 %tmp4_p_scalar_, %tmp3_p_scalar_ -; IR-NEXT: store i64 %p_add4, i64* %scevgep, align 8, !alias.scope !0, !noalias !3 +; IR-NEXT: store i64 %p_add4, ptr %uglygep, align 8, !alias.scope !0, !noalias !3 ; IR-NEXT: %polly.indvar_next = add nsw i64 %polly.indvar, 1 ; IR-NEXT: %polly.loop_cond = icmp sle i64 %polly.indvar_next, 99 ; IR-NEXT: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit ; ; IR: polly.loop_preheader: ; IR-NEXT: %14 = add i64 %val, 1 -; IR-NEXT: %15 = add i32 %ptr1, 9 -; IR-NEXT: %scevgep = getelementptr i64, i64* %A, i32 %15 +; IR-NEXT: %15 = shl i32 %ptr1, 3 +; IR-NEXT: %16 = add i32 %15, 72 +; IR-NEXT: %uglygep = getelementptr i8, ptr %A, i32 %16 ; IR-NEXT: br label %polly.loop_header ; target datalayout = "e-p:32:32:32-m:e-i64:64-f80:128-n8:16:32:64-S128" -define void @f(i64* %A, i64* %ptr, i64 %val) { +define void @f(ptr %A, ptr %ptr, i64 %val) { entry: br label %for.cond @@ -51,19 +52,19 @@ for.cond: ; preds = %for.inc, %entry br i1 %exitcond, label %for.body, label %for.end for.body: ; preds = %for.cond - %add.ptr = getelementptr inbounds i64, i64* %ptr, i64 1 - %tmp = ptrtoint i64* %add.ptr to i64 + %add.ptr = getelementptr inbounds i64, ptr %ptr, i64 1 + %tmp = ptrtoint ptr %add.ptr to i64 %add = add nsw i64 %tmp, 1 %add1 = add nsw i64 %val, 1 - %tmp1 = inttoptr i64 %add1 to i64* - %add.ptr2 = getelementptr inbounds i64, i64* %tmp1, i64 1 - %tmp2 = ptrtoint i64* %add.ptr2 to i64 - %arrayidx = getelementptr inbounds i64, i64* %A, i64 %tmp2 - %tmp3 = load i64, i64* %arrayidx - %arrayidx3 = getelementptr inbounds i64, i64* %A, i64 %add - %tmp4 = load i64, i64* %arrayidx3 + %tmp1 = inttoptr i64 %add1 to ptr + %add.ptr2 = getelementptr inbounds i64, ptr %tmp1, i64 1 + %tmp2 = ptrtoint ptr %add.ptr2 to i64 + %arrayidx = getelementptr inbounds i64, ptr %A, i64 %tmp2 + %tmp3 = load i64, ptr %arrayidx + %arrayidx3 = getelementptr inbounds i64, ptr %A, i64 %add + %tmp4 = load i64, ptr %arrayidx3 %add4 = add nsw i64 %tmp4, %tmp3 - store i64 %add4, i64* %arrayidx3 + store i64 %add4, ptr %arrayidx3 br label %for.inc for.inc: ; preds = %for.body diff --git a/polly/test/ScopInfo/int2ptr_ptr2int_2.ll b/polly/test/ScopInfo/int2ptr_ptr2int_2.ll index e228e30b34ce4..a9c3431270fb8 100644 --- a/polly/test/ScopInfo/int2ptr_ptr2int_2.ll +++ b/polly/test/ScopInfo/int2ptr_ptr2int_2.ll @@ -1,6 +1,6 @@ -; RUN: opt -opaque-pointers=0 %loadPolly -polly-print-scops \ +; RUN: opt %loadPolly -polly-print-scops \ ; RUN: -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s -; RUN: opt -opaque-pointers=0 %loadPolly -S -polly-codegen \ +; RUN: opt %loadPolly -S -polly-codegen \ ; RUN: -polly-invariant-load-hoisting=true < %s | FileCheck %s --check-prefix=IR ; ; void f(long *A, long *B, long *ptr, long val) { @@ -21,25 +21,26 @@ ; CHECK-NEXT: [val, ptr] -> { Stmt_for_body[i0] -> MemRef_A[9 + ptr] }; ; IR: entry: -; IR-NEXT: %ptr13 = ptrtoint i64* %ptr to i16 +; IR-NEXT: %ptr13 = ptrtoint ptr %ptr to i16 ; ; IR: polly.stmt.for.body: -; IR-NEXT: %tmp4_p_scalar_ = load i64, i64* %scevgep, align 8, !alias.scope !3, !noalias !0 +; IR-NEXT: %tmp4_p_scalar_ = load i64, ptr %uglygep, align 8, !alias.scope !3, !noalias !0 ; IR-NEXT: %p_add4 = add nsw i64 %tmp4_p_scalar_, %polly.preload.tmp3.merge -; IR-NEXT: store i64 %p_add4, i64* %scevgep, align 8, !alias.scope !3, !noalias !0 +; IR-NEXT: store i64 %p_add4, ptr %uglygep, align 8, !alias.scope !3, !noalias !0 ; IR-NEXT: %polly.indvar_next = add nsw i64 %polly.indvar, 1 ; IR-NEXT: %polly.loop_cond = icmp sle i64 %polly.indvar_next, 99 ; IR-NEXT: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit ; IR: polly.loop_preheader: ; IR-NEXT: %41 = add i16 %val, 1 -; IR-NEXT: %42 = add i16 %ptr13, 9 -; IR-NEXT: %scevgep = getelementptr i64, i64* %A, i16 %42 +; IR-NEXT: %42 = shl i16 %ptr13, 3 +; IR-NEXT: %43 = add i16 %42, 72 +; IR-NEXT: %uglygep = getelementptr i8, ptr %A, i16 %43 ; IR-NEXT: br label %polly.loop_header ; target datalayout = "e-p:16:16:16-m:e-i64:64-f80:128-n8:16:16:64-S128" -define void @f(i64* %A, i64* %B, i64* %ptr, i16 %val) { +define void @f(ptr %A, ptr %B, ptr %ptr, i16 %val) { entry: br label %for.cond @@ -49,19 +50,19 @@ for.cond: ; preds = %for.inc, %entry br i1 %exitcond, label %for.body, label %for.end for.body: ; preds = %for.cond - %add.ptr = getelementptr inbounds i64, i64* %ptr, i64 1 - %tmp = ptrtoint i64* %add.ptr to i16 + %add.ptr = getelementptr inbounds i64, ptr %ptr, i64 1 + %tmp = ptrtoint ptr %add.ptr to i16 %add = add nsw i16 %tmp, 1 %add1 = add nsw i16 %val, 1 - %tmp1 = inttoptr i16 %add1 to i64* - %add.ptr2 = getelementptr inbounds i64, i64* %tmp1, i64 1 - %tmp2 = ptrtoint i64* %add.ptr2 to i16 - %arrayidx = getelementptr inbounds i64, i64* %B, i16 %tmp2 - %tmp3 = load i64, i64* %arrayidx - %arrayidx3 = getelementptr inbounds i64, i64* %A, i16 %add - %tmp4 = load i64, i64* %arrayidx3 + %tmp1 = inttoptr i16 %add1 to ptr + %add.ptr2 = getelementptr inbounds i64, ptr %tmp1, i64 1 + %tmp2 = ptrtoint ptr %add.ptr2 to i16 + %arrayidx = getelementptr inbounds i64, ptr %B, i16 %tmp2 + %tmp3 = load i64, ptr %arrayidx + %arrayidx3 = getelementptr inbounds i64, ptr %A, i16 %add + %tmp4 = load i64, ptr %arrayidx3 %add4 = add nsw i64 %tmp4, %tmp3 - store i64 %add4, i64* %arrayidx3 + store i64 %add4, ptr %arrayidx3 br label %for.inc for.inc: ; preds = %for.body diff --git a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll index 4ace2e061cf21..ccc3ee3bdbaa4 100644 --- a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll +++ b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type.ll @@ -1,5 +1,5 @@ -; RUN: opt -opaque-pointers=0 %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s -; RUN: opt -opaque-pointers=0 %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s --check-prefix=CODEGEN ; ; struct { ; int a; @@ -23,21 +23,21 @@ ; CODEGEN: %S.b.preload.s2a = alloca float ; CODEGEN: %S.a.preload.s2a = alloca i32 ; -; CODEGEN: %.load = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0) -; CODEGEN: store i32 %.load, i32* %S.a.preload.s2a -; CODEGEN: %.load1 = load float, float* bitcast (i32* getelementptr (i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0), i64 1) to float*) -; CODEGEN: store float %.load1, float* %S.b.preload.s2a +; CODEGEN: %S.load = load i32, ptr @S +; CODEGEN: store i32 %S.load, ptr %S.a.preload.s2a +; CODEGEN: %.load = load float, ptr getelementptr inbounds (i32, ptr @S, i64 1) +; CODEGEN: store float %.load, ptr %S.b.preload.s2a ; ; CODEGEN: polly.stmt.for.body: -; CODEGEN: %p_conv = sitofp i32 %.load to float -; CODEGEN: %p_add = fadd float %p_conv, %.load1 +; CODEGEN: %p_conv = sitofp i32 %S.load to float +; CODEGEN: %p_add = fadd float %p_conv, %.load ; CODEGEN: %p_conv1 = fptosi float %p_add to i32 %struct.anon = type { i32, float } @S = common global %struct.anon zeroinitializer, align 4 -define void @f(i32* %A) { +define void @f(ptr %A) { entry: br label %for.cond @@ -47,13 +47,13 @@ for.cond: ; preds = %for.inc, %entry br i1 %exitcond, label %for.body, label %for.end for.body: ; preds = %for.cond - %S.a = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i64 0, i32 0), align 4 + %S.a = load i32, ptr @S, align 4 %conv = sitofp i32 %S.a to float - %S.b = load float, float* getelementptr inbounds (%struct.anon, %struct.anon* @S, i64 0, i32 1), align 4 + %S.b = load float, ptr getelementptr inbounds (%struct.anon, ptr @S, i64 0, i32 1), align 4 %add = fadd float %conv, %S.b %conv1 = fptosi float %add to i32 - %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv - store i32 %conv1, i32* %arrayidx, align 4 + %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv + store i32 %conv1, ptr %arrayidx, align 4 br label %for.inc for.inc: ; preds = %for.body diff --git a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll index e3629acafcfa3..4d4b64daed5d8 100644 --- a/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll +++ b/polly/test/ScopInfo/invariant_load_access_classes_different_base_type_escaping.ll @@ -1,5 +1,5 @@ -; RUN: opt -opaque-pointers=0 %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s -; RUN: opt -opaque-pointers=0 %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s --check-prefix=CODEGEN ; ; struct { ; int a; @@ -42,10 +42,10 @@ ; CODEGEN: %S.a.preload.s2a = alloca i32 ; ; CODEGEN: polly.preload.begin: -; CODEGEN: %.load = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0) -; CODEGEN: store i32 %.load, i32* %S.a.preload.s2a -; CODEGEN: %.load1 = load float, float* bitcast (i32* getelementptr (i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i32 0, i32 0), i64 1) to float*) -; CODEGEN: store float %.load1, float* %S.b.preload.s2a +; CODEGEN: %S.load = load i32, ptr @S +; CODEGEN: store i32 %S.load, ptr %S.a.preload.s2a +; CODEGEN: %.load = load float, ptr getelementptr inbounds (i32, ptr @S, i64 1) +; CODEGEN: store float %.load, ptr %S.b.preload.s2a ; ; CODEGEN: polly.merge_new_and_old: ; CODEGEN-DAG: %S.b.merge = phi float [ %S.b.final_reload, %polly.exiting ], [ %S.b, %do.cond ] @@ -57,8 +57,8 @@ ; CODEGEN: ret float %add4 ; ; CODEGEN: polly.loop_exit: -; CODEGEN-DAG: %S.b.final_reload = load float, float* %S.b.preload.s2a -; CODEGEN-DAG: %S.a.final_reload = load i32, i32* %S.a.preload.s2a +; CODEGEN-DAG: %S.b.final_reload = load float, ptr %S.b.preload.s2a +; CODEGEN-DAG: %S.a.final_reload = load i32, ptr %S.a.preload.s2a ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" @@ -67,19 +67,19 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" @S = common global %struct.anon zeroinitializer, align 4 -define float @f(i32* %A) { +define float @f(ptr %A) { entry: br label %do.body do.body: ; preds = %do.cond, %entry %indvars.iv = phi i64 [ %indvars.iv.next, %do.cond ], [ 0, %entry ] - %S.a = load i32, i32* getelementptr inbounds (%struct.anon, %struct.anon* @S, i64 0, i32 0), align 4 - %S.b = load float, float* getelementptr inbounds (%struct.anon, %struct.anon* @S, i64 0, i32 1), align 4 + %S.a = load i32, ptr @S, align 4 + %S.b = load float, ptr getelementptr inbounds (%struct.anon, ptr @S, i64 0, i32 1), align 4 %conv = sitofp i32 %S.a to float %add = fadd float %conv, %S.b %conv1 = fptosi float %add to i32 - %arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv - store i32 %conv1, i32* %arrayidx, align 4 + %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv + store i32 %conv1, ptr %arrayidx, align 4 br label %do.cond do.cond: ; preds = %do.body diff --git a/polly/test/ScopInfo/invariant_load_zext_parameter.ll b/polly/test/ScopInfo/invariant_load_zext_parameter.ll index 377152e8fc090..1bde70282d440 100644 --- a/polly/test/ScopInfo/invariant_load_zext_parameter.ll +++ b/polly/test/ScopInfo/invariant_load_zext_parameter.ll @@ -1,5 +1,5 @@ -; RUN: opt -opaque-pointers=0 %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s -; RUN: opt -opaque-pointers=0 %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s --check-prefix=CODEGEN +; RUN: opt %loadPolly -polly-print-scops -polly-invariant-load-hoisting=true -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -polly-codegen -polly-invariant-load-hoisting=true -S < %s | FileCheck %s --check-prefix=CODEGEN ; ; void f(int *I0, int *I1, int *V) { ; for (int i = 0; i < 1000; i++) { @@ -20,9 +20,9 @@ ; CHECK-NEXT: [loadI0] -> { Stmt_if_then[i0] : loadI0 = 0 and 0 <= i0 <= 999 }; ; ; CODEGEN: polly.preload.begin: -; CODEGEN-NEXT: %polly.access.I0 = getelementptr i32, i32* %I0, i64 0 -; CODEGEN-NEXT: %polly.access.I0.load = load i32, i32* %polly.access.I0 -; CODEGEN-NEXT: store i32 %polly.access.I0.load, i32* %loadI1a.preload.s2a +; CODEGEN-NEXT: %polly.access.I0 = getelementptr i32, ptr %I0, i64 0 +; CODEGEN-NEXT: %polly.access.I0.load = load i32, ptr %polly.access.I0 +; CODEGEN-NEXT: store i32 %polly.access.I0.load, ptr %loadI1a.preload.s2a ; CODEGEN-NEXT: %0 = sext i32 %polly.access.I0.load to i64 ; CODEGEN-NEXT: %1 = icmp eq i64 %0, 0 ; CODEGEN-NEXT: %polly.preload.cond.result = and i1 %1, true @@ -33,7 +33,7 @@ ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -define void @f(i32* %I0, i32* %I1, i32* %V) { +define void @f(ptr %I0, ptr %I1, ptr %V) { entry: br label %for.cond @@ -43,22 +43,22 @@ for.cond: ; preds = %for.inc, %entry br i1 %exitcond, label %for.body, label %for.end for.body: ; preds = %for.cond - %loadI1a = load i32, i32* %I0, align 4 - %arrayidx = getelementptr inbounds i32, i32* %V, i64 %indvars.iv - %loadI1a1 = load i32, i32* %arrayidx, align 4 + %loadI1a = load i32, ptr %I0, align 4 + %arrayidx = getelementptr inbounds i32, ptr %V, i64 %indvars.iv + %loadI1a1 = load i32, ptr %arrayidx, align 4 %add = add nsw i32 %loadI1a1, %loadI1a - store i32 %add, i32* %arrayidx, align 4 - %loadI0 = load i32, i32* %I0, align 4 + store i32 %add, ptr %arrayidx, align 4 + %loadI0 = load i32, ptr %I0, align 4 %loadI0ext = zext i32 %loadI0 to i64 %cmp1 = icmp eq i64 %loadI0ext, 0 br i1 %cmp1, label %if.then, label %if.end if.then: ; preds = %for.body - %loadI1b = load i32, i32* %I1, align 4 - %arrayidx4 = getelementptr inbounds i32, i32* %V, i64 %indvars.iv - %loadI1a4 = load i32, i32* %arrayidx4, align 4 + %loadI1b = load i32, ptr %I1, align 4 + %arrayidx4 = getelementptr inbounds i32, ptr %V, i64 %indvars.iv + %loadI1a4 = load i32, ptr %arrayidx4, align 4 %add5 = add nsw i32 %loadI1a4, %loadI1b - store i32 %add5, i32* %arrayidx4, align 4 + store i32 %add5, ptr %arrayidx4, align 4 br label %if.end if.end: ; preds = %if.then, %for.body diff --git a/polly/test/ScopInfo/memcpy.ll b/polly/test/ScopInfo/memcpy.ll index 27419f42801a1..705dea769e42a 100644 --- a/polly/test/ScopInfo/memcpy.ll +++ b/polly/test/ScopInfo/memcpy.ll @@ -1,5 +1,5 @@ -; RUN: opt -opaque-pointers=0 %loadPolly -basic-aa -polly-allow-differing-element-types -polly-print-scops -disable-output < %s | FileCheck %s -; RUN: opt -opaque-pointers=0 %loadPolly -S -basic-aa -polly-allow-differing-element-types -polly-codegen < %s | FileCheck --check-prefix=IR %s +; RUN: opt %loadPolly -basic-aa -polly-allow-differing-element-types -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -S -basic-aa -polly-allow-differing-element-types -polly-codegen < %s | FileCheck --check-prefix=IR %s ; ; CHECK: Arrays { ; CHECK-NEXT: i8 MemRef_A[*]; // Element size 1 @@ -17,13 +17,11 @@ ; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> MemRef_B[o0] : 64 <= o0 <= 100 }; ; ; IR: polly.loop_preheader: -; IR: %[[r1:[a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i64 -4 -; IR: %[[r2:[a-zA-Z0-9]*]] = bitcast i32* %scevgep to i8* -; IR: %[[r3:[a-zA-Z0-9]*]] = getelementptr i64, i64* %B, i64 8 -; IR: %[[r4:[a-zA-Z0-9]*]] = bitcast i64* %scevgep8 to i8* +; IR: %[[r1:[a-zA-Z0-9]*]] = getelementptr i8, ptr %A, i64 -16 +; IR: %[[r3:[a-zA-Z0-9]*]] = getelementptr i8, ptr %B, i64 64 ; ; IR: polly.stmt.for.body3: -; IR: call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %[[r2]], i8* align 4 %[[r4]], i64 37, i1 false) +; IR: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %[[r1]], ptr align 4 %[[r3]], i64 37, i1 false) ; ; ; #include @@ -36,7 +34,7 @@ ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -define void @jd(i32* noalias %A, i64* noalias %B) { +define void @jd(ptr noalias %A, ptr noalias %B) { entry: br label %for.cond @@ -54,11 +52,9 @@ for.cond1: ; preds = %for.inc, %for.body br i1 %exitcond, label %for.body3, label %for.end for.body3: ; preds = %for.cond1 - %add.ptr = getelementptr inbounds i32, i32* %A, i64 -4 - %tmp = bitcast i32* %add.ptr to i8* - %add.ptr4 = getelementptr inbounds i64, i64* %B, i64 8 - %tmp2 = bitcast i64* %add.ptr4 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* %tmp, i8* %tmp2, i64 37, i32 4, i1 false) + %add.ptr = getelementptr inbounds i32, ptr %A, i64 -4 + %add.ptr4 = getelementptr inbounds i64, ptr %B, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr %add.ptr, ptr %add.ptr4, i64 37, i32 4, i1 false) br label %for.inc for.inc: ; preds = %for.body3 @@ -76,5 +72,5 @@ for.end7: ; preds = %for.cond ret void } -declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1 +declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i32, i1) #1 diff --git a/polly/test/ScopInfo/memmove.ll b/polly/test/ScopInfo/memmove.ll index bee028aa05ffb..15123422f4192 100644 --- a/polly/test/ScopInfo/memmove.ll +++ b/polly/test/ScopInfo/memmove.ll @@ -1,5 +1,5 @@ -; RUN: opt -opaque-pointers=0 %loadPolly -basic-aa -polly-allow-differing-element-types -polly-print-scops -disable-output < %s | FileCheck %s -; RUN: opt -opaque-pointers=0 %loadPolly -S -basic-aa -polly-allow-differing-element-types -polly-codegen < %s | FileCheck --check-prefix=IR %s +; RUN: opt %loadPolly -basic-aa -polly-allow-differing-element-types -polly-print-scops -disable-output < %s | FileCheck %s +; RUN: opt %loadPolly -S -basic-aa -polly-allow-differing-element-types -polly-codegen < %s | FileCheck --check-prefix=IR %s ; ; CHECK: Arrays { ; CHECK-NEXT: i8 MemRef_A[*]; // Element size 1 @@ -17,13 +17,11 @@ ; CHECK-NEXT: { Stmt_for_body3[i0, i1] -> MemRef_B[o0] : 64 <= o0 <= 95 }; ; ; IR: polly.loop_preheader: -; IR: %[[r1:[a-zA-Z0-9]*]] = getelementptr i32, i32* %A, i64 -4 -; IR: %[[r2:[a-zA-Z0-9]*]] = bitcast i32* %scevgep to i8* -; IR: %[[r3:[a-zA-Z0-9]*]] = getelementptr i64, i64* %B, i64 8 -; IR: %[[r4:[a-zA-Z0-9]*]] = bitcast i64* %scevgep8 to i8* +; IR: %[[r1:[a-zA-Z0-9]*]] = getelementptr i8, ptr %A, i64 -16 +; IR: %[[r3:[a-zA-Z0-9]*]] = getelementptr i8, ptr %B, i64 64 ; ; IR: polly.stmt.for.body3: -; IR: call void @llvm.memmove.p0i8.p0i8.i64(i8* align 4 %[[r2]], i8* align 4 %[[r4]], i64 32, i1 false) +; IR: call void @llvm.memmove.p0.p0.i64(ptr align 4 %[[r1]], ptr align 4 %[[r3]], i64 32, i1 false) ; ; #include ; @@ -35,7 +33,7 @@ ; target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -define void @jd(i32* noalias %A, i64* noalias %B) { +define void @jd(ptr noalias %A, ptr noalias %B) { entry: br label %for.cond @@ -53,11 +51,9 @@ for.cond1: ; preds = %for.inc, %for.body br i1 %exitcond, label %for.body3, label %for.end for.body3: ; preds = %for.cond1 - %add.ptr = getelementptr inbounds i32, i32* %A, i64 -4 - %tmp = bitcast i32* %add.ptr to i8* - %add.ptr4 = getelementptr inbounds i64, i64* %B, i64 8 - %tmp2 = bitcast i64* %add.ptr4 to i8* - call void @llvm.memmove.p0i8.p0i8.i64(i8* %tmp, i8* %tmp2, i64 32, i32 4, i1 false) + %add.ptr = getelementptr inbounds i32, ptr %A, i64 -4 + %add.ptr4 = getelementptr inbounds i64, ptr %B, i64 8 + call void @llvm.memmove.p0.p0.i64(ptr %add.ptr, ptr %add.ptr4, i64 32, i32 4, i1 false) br label %for.inc for.inc: ; preds = %for.body3 @@ -75,5 +71,5 @@ for.end7: ; preds = %for.cond ret void } -declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1) #1 +declare void @llvm.memmove.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i32, i1) #1