[llvm] cf8d8a3 - [LV] Convert some tests to use opaque pointers (NFC).
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 19 12:46:35 PST 2022
Author: Florian Hahn
Date: 2022-12-19T20:44:44Z
New Revision: cf8d8a33c6152594c2a8fd094d17b09bf53bbead
URL: https://github.com/llvm/llvm-project/commit/cf8d8a33c6152594c2a8fd094d17b09bf53bbead
DIFF: https://github.com/llvm/llvm-project/commit/cf8d8a33c6152594c2a8fd094d17b09bf53bbead.diff
LOG: [LV] Convert some tests to use opaque pointers (NFC).
Added:
Modified:
llvm/test/Transforms/LoopVectorize/vplan-printing.ll
llvm/test/Transforms/LoopVectorize/vplan-sink-scalars-and-merge.ll
llvm/test/Transforms/LoopVectorize/vplan-vectorize-inner-loop-reduction.ll
llvm/test/Transforms/LoopVectorize/vplan-widen-call-instruction.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/LoopVectorize/vplan-printing.ll b/llvm/test/Transforms/LoopVectorize/vplan-printing.ll
index 7156469fcd395..b31f6458922e2 100644
--- a/llvm/test/Transforms/LoopVectorize/vplan-printing.ll
+++ b/llvm/test/Transforms/LoopVectorize/vplan-printing.ll
@@ -6,7 +6,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
; Tests for printing VPlans.
-define void @print_call_and_memory(i64 %n, float* noalias %y, float* noalias %x) nounwind uwtable {
+define void @print_call_and_memory(i64 %n, ptr noalias %y, ptr noalias %x) nounwind uwtable {
; CHECK-LABEL: Checking a loop in 'print_call_and_memory'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -39,11 +39,11 @@ entry:
for.body: ; preds = %entry, %for.body
%iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]
- %arrayidx = getelementptr inbounds float, float* %y, i64 %iv
- %lv = load float, float* %arrayidx, align 4
+ %arrayidx = getelementptr inbounds float, ptr %y, i64 %iv
+ %lv = load float, ptr %arrayidx, align 4
%call = tail call float @llvm.sqrt.f32(float %lv) nounwind readnone
- %arrayidx2 = getelementptr inbounds float, float* %x, i64 %iv
- store float %call, float* %arrayidx2, align 4
+ %arrayidx2 = getelementptr inbounds float, ptr %x, i64 %iv
+ store float %call, ptr %arrayidx2, align 4
%iv.next = add i64 %iv, 1
%exitcond = icmp eq i64 %iv.next, %n
br i1 %exitcond, label %for.end, label %for.body
@@ -52,7 +52,7 @@ for.end: ; preds = %for.body, %entry
ret void
}
-define void @print_widen_gep_and_select(i64 %n, float* noalias %y, float* noalias %x, float* %z) nounwind uwtable {
+define void @print_widen_gep_and_select(i64 %n, ptr noalias %y, ptr noalias %x, ptr %z) nounwind uwtable {
; CHECK-LABEL: Checking a loop in 'print_widen_gep_and_select'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -88,13 +88,13 @@ entry:
for.body: ; preds = %entry, %for.body
%iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]
- %arrayidx = getelementptr inbounds float, float* %y, i64 %iv
- %lv = load float, float* %arrayidx, align 4
- %cmp = icmp eq float* %arrayidx, %z
+ %arrayidx = getelementptr inbounds float, ptr %y, i64 %iv
+ %lv = load float, ptr %arrayidx, align 4
+ %cmp = icmp eq ptr %arrayidx, %z
%sel = select i1 %cmp, float 10.0, float 20.0
%add = fadd float %lv, %sel
- %arrayidx2 = getelementptr inbounds float, float* %x, i64 %iv
- store float %add, float* %arrayidx2, align 4
+ %arrayidx2 = getelementptr inbounds float, ptr %x, i64 %iv
+ store float %add, ptr %arrayidx2, align 4
%iv.next = add i64 %iv, 1
%exitcond = icmp eq i64 %iv.next, %n
br i1 %exitcond, label %for.end, label %for.body
@@ -103,7 +103,7 @@ for.end: ; preds = %for.body, %entry
ret void
}
-define float @print_reduction(i64 %n, float* noalias %y) {
+define float @print_reduction(i64 %n, ptr noalias %y) {
; CHECK-LABEL: Checking a loop in 'print_reduction'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -137,8 +137,8 @@ entry:
for.body: ; preds = %entry, %for.body
%iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]
%red = phi float [ %red.next, %for.body ], [ 0.0, %entry ]
- %arrayidx = getelementptr inbounds float, float* %y, i64 %iv
- %lv = load float, float* %arrayidx, align 4
+ %arrayidx = getelementptr inbounds float, ptr %y, i64 %iv
+ %lv = load float, ptr %arrayidx, align 4
%red.next = fadd fast float %lv, %red
%iv.next = add i64 %iv, 1
%exitcond = icmp eq i64 %iv.next, %n
@@ -148,7 +148,7 @@ for.end: ; preds = %for.body, %entry
ret float %red.next
}
-define void @print_reduction_with_invariant_store(i64 %n, float* noalias %y, float* noalias %dst) {
+define void @print_reduction_with_invariant_store(i64 %n, ptr noalias %y, ptr noalias %dst) {
; CHECK-LABEL: Checking a loop in 'print_reduction_with_invariant_store'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -180,10 +180,10 @@ entry:
for.body: ; preds = %entry, %for.body
%iv = phi i64 [ %iv.next, %for.body ], [ 0, %entry ]
%red = phi float [ %red.next, %for.body ], [ 0.0, %entry ]
- %arrayidx = getelementptr inbounds float, float* %y, i64 %iv
- %lv = load float, float* %arrayidx, align 4
+ %arrayidx = getelementptr inbounds float, ptr %y, i64 %iv
+ %lv = load float, ptr %arrayidx, align 4
%red.next = fadd fast float %lv, %red
- store float %red.next, float* %dst, align 4
+ store float %red.next, ptr %dst, align 4
%iv.next = add i64 %iv, 1
%exitcond = icmp eq i64 %iv.next, %n
br i1 %exitcond, label %for.end, label %for.body
@@ -192,7 +192,7 @@ for.end: ; preds = %for.body, %entry
ret void
}
-define void @print_replicate_predicated_phi(i64 %n, i64* %x) {
+define void @print_replicate_predicated_phi(i64 %n, ptr %x) {
; CHECK-LABEL: Checking a loop in 'print_replicate_predicated_phi'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -258,8 +258,8 @@ if.then: ; preds = %for.body
for.inc: ; preds = %if.then, %for.body
%d = phi i64 [ 0, %for.body ], [ %tmp4, %if.then ]
- %idx = getelementptr i64, i64* %x, i64 %i
- store i64 %d, i64* %idx
+ %idx = getelementptr i64, ptr %x, i64 %i
+ store i64 %d, ptr %idx
%i.next = add nuw nsw i64 %i, 1
%cond = icmp slt i64 %i.next, %n
br i1 %cond, label %for.body, label %for.end
@@ -312,24 +312,24 @@ entry:
for.body:
%iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
- %gep.AB.0= getelementptr inbounds [1024 x i32], [1024 x i32]* @AB, i64 0, i64 %iv
- %AB.0 = load i32, i32* %gep.AB.0, align 4
+ %gep.AB.0= getelementptr inbounds [1024 x i32], ptr @AB, i64 0, i64 %iv
+ %AB.0 = load i32, ptr %gep.AB.0, align 4
%iv.plus.1 = add i64 %iv, 1
- %gep.AB.1 = getelementptr inbounds [1024 x i32], [1024 x i32]* @AB, i64 0, i64 %iv.plus.1
- %AB.1 = load i32, i32* %gep.AB.1, align 4
+ %gep.AB.1 = getelementptr inbounds [1024 x i32], ptr @AB, i64 0, i64 %iv.plus.1
+ %AB.1 = load i32, ptr %gep.AB.1, align 4
%iv.plus.2 = add i64 %iv, 2
%iv.plus.3 = add i64 %iv, 3
- %gep.AB.3 = getelementptr inbounds [1024 x i32], [1024 x i32]* @AB, i64 0, i64 %iv.plus.3
- %AB.3 = load i32, i32* %gep.AB.3, align 4
+ %gep.AB.3 = getelementptr inbounds [1024 x i32], ptr @AB, i64 0, i64 %iv.plus.3
+ %AB.3 = load i32, ptr %gep.AB.3, align 4
%add = add nsw i32 %AB.0, %AB.1
- %gep.CD.0 = getelementptr inbounds [1024 x i32], [1024 x i32]* @CD, i64 0, i64 %iv
- store i32 %add, i32* %gep.CD.0, align 4
- %gep.CD.1 = getelementptr inbounds [1024 x i32], [1024 x i32]* @CD, i64 0, i64 %iv.plus.1
- store i32 1, i32* %gep.CD.1, align 4
- %gep.CD.2 = getelementptr inbounds [1024 x i32], [1024 x i32]* @CD, i64 0, i64 %iv.plus.2
- store i32 2, i32* %gep.CD.2, align 4
- %gep.CD.3 = getelementptr inbounds [1024 x i32], [1024 x i32]* @CD, i64 0, i64 %iv.plus.3
- store i32 %AB.3, i32* %gep.CD.3, align 4
+ %gep.CD.0 = getelementptr inbounds [1024 x i32], ptr @CD, i64 0, i64 %iv
+ store i32 %add, ptr %gep.CD.0, align 4
+ %gep.CD.1 = getelementptr inbounds [1024 x i32], ptr @CD, i64 0, i64 %iv.plus.1
+ store i32 1, ptr %gep.CD.1, align 4
+ %gep.CD.2 = getelementptr inbounds [1024 x i32], ptr @CD, i64 0, i64 %iv.plus.2
+ store i32 2, ptr %gep.CD.2, align 4
+ %gep.CD.3 = getelementptr inbounds [1024 x i32], ptr @CD, i64 0, i64 %iv.plus.3
+ store i32 %AB.3, ptr %gep.CD.3, align 4
%iv.next = add nuw nsw i64 %iv, 4
%cmp = icmp slt i64 %iv.next, 1024
br i1 %cmp, label %for.body, label %for.end
@@ -338,7 +338,7 @@ for.end:
ret void
}
-define float @print_fmuladd_strict(float* %a, float* %b, i64 %n) {
+define float @print_fmuladd_strict(ptr %a, ptr %b, i64 %n) {
; CHECK-LABEL: Checking a loop in 'print_fmuladd_strict'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -375,10 +375,10 @@ entry:
for.body:
%iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
%sum.07 = phi float [ 0.000000e+00, %entry ], [ %muladd, %for.body ]
- %arrayidx = getelementptr inbounds float, float* %a, i64 %iv
- %l.a = load float, float* %arrayidx, align 4
- %arrayidx2 = getelementptr inbounds float, float* %b, i64 %iv
- %l.b = load float, float* %arrayidx2, align 4
+ %arrayidx = getelementptr inbounds float, ptr %a, i64 %iv
+ %l.a = load float, ptr %arrayidx, align 4
+ %arrayidx2 = getelementptr inbounds float, ptr %b, i64 %iv
+ %l.b = load float, ptr %arrayidx2, align 4
%muladd = tail call nnan ninf nsz float @llvm.fmuladd.f32(float %l.a, float %l.b, float %sum.07)
%iv.next = add nuw nsw i64 %iv, 1
%exitcond.not = icmp eq i64 %iv.next, %n
@@ -388,7 +388,7 @@ for.end:
ret float %muladd
}
-define void @debug_loc_vpinstruction(i32* nocapture %asd, i32* nocapture %bsd) !dbg !5 {
+define void @debug_loc_vpinstruction(ptr nocapture %asd, ptr nocapture %bsd) !dbg !5 {
; CHECK-LABEL: Checking a loop in 'debug_loc_vpinstruction'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -454,8 +454,8 @@ entry:
loop:
%iv = phi i64 [ 0, %entry ], [ %iv.next, %if.end ]
- %isd = getelementptr inbounds i32, i32* %asd, i64 %iv
- %lsd = load i32, i32* %isd, align 4
+ %isd = getelementptr inbounds i32, ptr %asd, i64 %iv
+ %lsd = load i32, ptr %isd, align 4
%psd = add nsw i32 %lsd, 23
%cmp1 = icmp slt i32 %lsd, 100
br i1 %cmp1, label %if.then, label %check, !dbg !7
@@ -470,7 +470,7 @@ if.then:
if.end:
%ysd.0 = phi i32 [ %sd1, %if.then ], [ %psd, %check ]
- store i32 %ysd.0, i32* %isd, align 4
+ store i32 %ysd.0, ptr %isd, align 4
%iv.next = add nuw nsw i64 %iv, 1
%exitcond = icmp eq i64 %iv.next, 128
br i1 %exitcond, label %exit, label %loop
@@ -482,7 +482,7 @@ exit:
declare float @llvm.sqrt.f32(float) nounwind readnone
declare float @llvm.fmuladd.f32(float, float, float)
-define void @print_expand_scev(i64 %y, i8* %ptr) {
+define void @print_expand_scev(i64 %y, ptr %ptr) {
; CHECK-LABEL: Checking a loop in 'print_expand_scev'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<%0> = vector-trip-count
@@ -521,8 +521,8 @@ loop: ; preds = %loop, %entry
%iv = phi i64 [ %iv.next, %loop ], [ 0, %entry ]
%v2 = trunc i64 %iv to i8
%v3 = add i8 %v2, 1
- %gep = getelementptr inbounds i8, i8* %ptr, i64 %iv
- store i8 %v3, i8* %gep
+ %gep = getelementptr inbounds i8, ptr %ptr, i64 %iv
+ store i8 %v3, ptr %gep
%cmp15 = icmp slt i8 %v3, 10000
%iv.next = add i64 %iv, %inc
@@ -532,7 +532,7 @@ loop.exit:
ret void
}
-define i32 @print_exit_value(i8* %ptr, i32 %off) {
+define i32 @print_exit_value(ptr %ptr, i32 %off) {
; CHECK-LABEL: Checking a loop in 'print_exit_value'
; CHECK: VPlan 'Initial VPlan for VF={4},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -565,9 +565,9 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
- %gep = getelementptr inbounds i8, i8* %ptr, i32 %iv
+ %gep = getelementptr inbounds i8, ptr %ptr, i32 %iv
%add = add i32 %iv, %off
- store i8 0, i8* %gep
+ store i8 0, ptr %gep
%iv.next = add nsw i32 %iv, 1
%ec = icmp eq i32 %iv.next, 1000
br i1 %ec, label %exit, label %loop
diff --git a/llvm/test/Transforms/LoopVectorize/vplan-sink-scalars-and-merge.ll b/llvm/test/Transforms/LoopVectorize/vplan-sink-scalars-and-merge.ll
index 30f250d98fc14..4a94951e1f954 100644
--- a/llvm/test/Transforms/LoopVectorize/vplan-sink-scalars-and-merge.ll
+++ b/llvm/test/Transforms/LoopVectorize/vplan-sink-scalars-and-merge.ll
@@ -60,12 +60,12 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
- %gep.b = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i32 0, i32 %iv
- %lv.b = load i32, i32* %gep.b, align 4
+ %gep.b = getelementptr inbounds [2048 x i32], ptr @b, i32 0, i32 %iv
+ %lv.b = load i32, ptr %gep.b, align 4
%add = add i32 %lv.b, 10
%mul = mul i32 2, %add
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %iv
- store i32 %mul, i32* %gep.a, align 4
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %iv
+ store i32 %mul, ptr %gep.a, align 4
%iv.next = add i32 %iv, 1
%large = icmp sge i32 %iv, 8
%exitcond = icmp eq i32 %iv, %k
@@ -139,12 +139,12 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
- %gep.b = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i32 0, i32 %iv
- %lv.b = load i32, i32* %gep.b, align 4
+ %gep.b = getelementptr inbounds [2048 x i32], ptr @b, i32 0, i32 %iv
+ %lv.b = load i32, ptr %gep.b, align 4
%add = add i32 %lv.b, 10
%mul = mul i32 %iv, 2
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %mul
- store i32 %add, i32* %gep.a, align 4
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %mul
+ store i32 %add, ptr %gep.a, align 4
%iv.next = add i32 %iv, 1
%large = icmp sge i32 %iv, 8
%exitcond = icmp eq i32 %iv, %k
@@ -218,12 +218,12 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
- %gep.b = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i32 0, i32 %iv
- %lv.b = load i32, i32* %gep.b, align 4
+ %gep.b = getelementptr inbounds [2048 x i32], ptr @b, i32 0, i32 %iv
+ %lv.b = load i32, ptr %gep.b, align 4
%add = add i32 %lv.b, 10
%mul = mul i32 %iv, %add
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %mul
- store i32 %add, i32* %gep.a, align 4
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %mul
+ store i32 %add, ptr %gep.a, align 4
%iv.next = add i32 %iv, 1
%large = icmp sge i32 %iv, 8
%exitcond = icmp eq i32 %iv, %k
@@ -235,7 +235,7 @@ exit:
}
; Make sure we do not sink uniform instructions.
-define void @uniform_gep(i64 %k, i16* noalias %A, i16* noalias %B) {
+define void @uniform_gep(i64 %k, ptr noalias %A, ptr noalias %B) {
; CHECK-LABEL: LV: Checking a loop in 'uniform_gep'
; CHECK: VPlan 'Initial VPlan for VF={2},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -292,14 +292,14 @@ entry:
loop:
%iv = phi i64 [ 21, %entry ], [ %iv.next, %loop.latch ]
- %gep.A.uniform = getelementptr inbounds i16, i16* %A, i64 0
- %gep.B = getelementptr inbounds i16, i16* %B, i64 %iv
- %lv = load i16, i16* %gep.A.uniform, align 1
+ %gep.A.uniform = getelementptr inbounds i16, ptr %A, i64 0
+ %gep.B = getelementptr inbounds i16, ptr %B, i64 %iv
+ %lv = load i16, ptr %gep.A.uniform, align 1
%cmp = icmp ult i64 %iv, %k
br i1 %cmp, label %loop.latch, label %loop.then
loop.then:
- store i16 %lv, i16* %gep.B, align 1
+ store i16 %lv, ptr %gep.B, align 1
br label %loop.latch
loop.latch:
@@ -387,19 +387,19 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %next.0 ]
- %gep.b = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i32 0, i32 %iv
+ %gep.b = getelementptr inbounds [2048 x i32], ptr @b, i32 0, i32 %iv
%c.1 = icmp ult i32 %iv, %j
%mul = mul i32 %iv, 10
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %mul
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %mul
br i1 %c.1, label %then.0, label %next.0
then.0:
- %lv.b = load i32, i32* %gep.b, align 4
+ %lv.b = load i32, ptr %gep.b, align 4
br label %next.0
next.0:
%p = phi i32 [ 0, %loop ], [ %lv.b, %then.0 ]
- store i32 %p, i32* %gep.a, align 4
+ store i32 %p, ptr %gep.a, align 4
%iv.next = add i32 %iv, 1
%large = icmp sge i32 %iv, 8
%exitcond = icmp eq i32 %iv, %k
@@ -496,15 +496,15 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %next.1 ]
- %gep.b = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i32 0, i32 %iv
+ %gep.b = getelementptr inbounds [2048 x i32], ptr @b, i32 0, i32 %iv
%mul = mul i32 %iv, 10
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %mul
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %mul
%c.0 = icmp ult i32 %iv, %j
%c.1 = icmp ugt i32 %iv, %j
br i1 %c.0, label %then.0, label %next.0
then.0:
- %lv.b = load i32, i32* %gep.b, align 4
+ %lv.b = load i32, ptr %gep.b, align 4
br label %next.0
next.0:
@@ -512,7 +512,7 @@ next.0:
br i1 %c.1, label %then.1, label %next.1
then.1:
- store i32 %p, i32* %gep.a, align 4
+ store i32 %p, ptr %gep.a, align 4
br label %next.1
next.1:
@@ -616,15 +616,15 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %next.1 ]
- %gep.b = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i32 0, i32 %iv
+ %gep.b = getelementptr inbounds [2048 x i32], ptr @b, i32 0, i32 %iv
%mul = mul i32 %iv, 10
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %mul
- %gep.c = getelementptr inbounds [2048 x i32], [2048 x i32]* @c, i32 0, i32 %mul
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %mul
+ %gep.c = getelementptr inbounds [2048 x i32], ptr @c, i32 0, i32 %mul
%c.0 = icmp ult i32 %iv, %j
br i1 %c.0, label %then.0, label %next.0
then.0:
- %lv.b = load i32, i32* %gep.b, align 4
+ %lv.b = load i32, ptr %gep.b, align 4
br label %next.0
next.0:
@@ -632,8 +632,8 @@ next.0:
br i1 %c.0, label %then.1, label %next.1
then.1:
- store i32 0, i32* %gep.a, align 4
- store i32 %p, i32* %gep.c, align 4
+ store i32 0, ptr %gep.a, align 4
+ store i32 %p, ptr %gep.c, align 4
br label %next.1
next.1:
@@ -734,20 +734,20 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %latch ]
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %iv
- %lv.a = load i32, i32* %gep.a, align 4
- %gep.b = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i32 0, i32 %iv
- %lv.b = load i32, i32* %gep.b, align 4
- %gep.c = getelementptr inbounds [2048 x i32], [2048 x i32]* @c, i32 0, i32 %iv
- store i32 %lv.a, i32* %gep.c, align 4
- store i32 %lv.b, i32* %gep.a, align 4
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %iv
+ %lv.a = load i32, ptr %gep.a, align 4
+ %gep.b = getelementptr inbounds [2048 x i32], ptr @b, i32 0, i32 %iv
+ %lv.b = load i32, ptr %gep.b, align 4
+ %gep.c = getelementptr inbounds [2048 x i32], ptr @c, i32 0, i32 %iv
+ store i32 %lv.a, ptr %gep.c, align 4
+ store i32 %lv.b, ptr %gep.a, align 4
%c.0 = icmp ult i32 %iv, %j
br i1 %c.0, label %then.0, label %latch
then.0:
%mul = mul i32 %lv.a, %lv.b
- %gep.c.1 = getelementptr inbounds [2048 x i32], [2048 x i32]* @c, i32 0, i32 %iv
- store i32 %mul, i32* %gep.c.1, align 4
+ %gep.c.1 = getelementptr inbounds [2048 x i32], ptr @c, i32 0, i32 %iv
+ store i32 %mul, ptr %gep.c.1, align 4
br label %latch
latch:
@@ -816,10 +816,10 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %iv
- %lv.a = load i32, i32* %gep.a, align 4
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %iv
+ %lv.a = load i32, ptr %gep.a, align 4
%div = sdiv i32 %lv.a, %lv.a
- store i32 %div, i32* %gep.a, align 4
+ store i32 %div, ptr %gep.a, align 4
%iv.next = add i32 %iv, 1
%large = icmp sge i32 %iv, 8
%exitcond = icmp eq i32 %iv, %k
@@ -900,10 +900,10 @@ entry:
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
%for = phi i32 [ 0, %entry ], [ %lv.a, %loop ]
- %gep.a = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i32 0, i32 %iv
- %lv.a = load i32, i32* %gep.a, align 4
+ %gep.a = getelementptr inbounds [2048 x i32], ptr @a, i32 0, i32 %iv
+ %lv.a = load i32, ptr %gep.a, align 4
%div = sdiv i32 %for, %lv.a
- store i32 %div, i32* %gep.a, align 4
+ store i32 %div, ptr %gep.a, align 4
%iv.next = add i32 %iv, 1
%large = icmp sge i32 %iv, 8
%exitcond = icmp eq i32 %iv, %k
@@ -914,7 +914,7 @@ exit:
ret void
}
-define void @update_multiple_users(i16* noalias %src, i8* noalias %dst, i1 %c) {
+define void @update_multiple_users(ptr noalias %src, ptr noalias %dst, i1 %c) {
; CHECK-LABEL: LV: Checking a loop in 'update_multiple_users'
; CHECK: VPlan 'Initial VPlan for VF={2},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -969,11 +969,11 @@ loop.header:
br i1 %c, label %loop.then, label %loop.latch
loop.then:
- %l1 = load i16, i16* %src, align 2
+ %l1 = load i16, ptr %src, align 2
%l2 = trunc i16 %l1 to i8
%cmp = icmp eq i16 %l1, 0
%sel = select i1 %cmp, i8 5, i8 %l2
- store i8 %sel, i8* %dst, align 1
+ store i8 %sel, ptr %dst, align 1
%sext.l1 = sext i16 %l1 to i32
br label %loop.latch
@@ -986,7 +986,7 @@ exit:
ret void
}
-define void @sinking_requires_duplication(float* %addr) {
+define void @sinking_requires_duplication(ptr %addr) {
; CHECK-LABEL: LV: Checking a loop in 'sinking_requires_duplication'
; CHECK: VPlan 'Initial VPlan for VF={2},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -1039,17 +1039,17 @@ entry:
loop.header:
%iv = phi i64 [ 0, %entry ], [ %iv.next, %loop.latch ]
- %gep = getelementptr float, float* %addr, i64 %iv
+ %gep = getelementptr float, ptr %addr, i64 %iv
%exitcond.not = icmp eq i64 %iv, 200
br i1 %exitcond.not, label %exit, label %loop.body
loop.body:
- %0 = load float, float* %gep, align 4
+ %0 = load float, ptr %gep, align 4
%pred = fcmp oeq float %0, 0.0
br i1 %pred, label %loop.latch, label %then
then:
- store float 10.0, float* %gep, align 4
+ store float 10.0, ptr %gep, align 4
br label %loop.latch
loop.latch:
@@ -1062,7 +1062,7 @@ exit:
; Test case with a dead GEP between the load and store regions. Dead recipes
; need to be removed before merging.
-define void @merge_with_dead_gep_between_regions(i32 %n, i32* noalias %src, i32* noalias %dst) optsize {
+define void @merge_with_dead_gep_between_regions(i32 %n, ptr noalias %src, ptr noalias %dst) optsize {
; CHECK-LABEL: LV: Checking a loop in 'merge_with_dead_gep_between_regions'
; CHECK: VPlan 'Initial VPlan for VF={2},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -1119,11 +1119,11 @@ entry:
loop:
%iv = phi i32[ %n, %entry ], [ %iv.next, %loop ]
%iv.next = add nsw i32 %iv, -1
- %gep.src = getelementptr inbounds i32, i32* %src, i32 %iv
- %l = load i32, i32* %gep.src, align 16
- %dead_gep = getelementptr inbounds i32, i32* %dst, i64 1
- %gep.dst = getelementptr inbounds i32, i32* %dst, i32 %iv
- store i32 %l, i32* %gep.dst, align 16
+ %gep.src = getelementptr inbounds i32, ptr %src, i32 %iv
+ %l = load i32, ptr %gep.src, align 16
+ %dead_gep = getelementptr inbounds i32, ptr %dst, i64 1
+ %gep.dst = getelementptr inbounds i32, ptr %dst, i32 %iv
+ store i32 %l, ptr %gep.dst, align 16
%ec = icmp eq i32 %iv.next, 0
br i1 %ec, label %exit, label %loop
@@ -1131,7 +1131,7 @@ exit:
ret void
}
-define void @ptr_induction_remove_dead_recipe(i8* %start, i8* %end) {
+define void @ptr_induction_remove_dead_recipe(ptr %start, ptr %end) {
; CHECK-LABEL: LV: Checking a loop in 'ptr_induction_remove_dead_recipe'
; CHECK: VPlan 'Initial VPlan for VF={2},UF>=1' {
; CHECK-NEXT: Live-in vp<[[VEC_TC:%.+]]> = vector-trip-count
@@ -1185,18 +1185,18 @@ entry:
br label %loop.header
loop.header:
- %ptr.iv = phi i8* [ %start, %entry ], [ %ptr.iv.next, %loop.latch ]
- %ptr.iv.next = getelementptr inbounds i8, i8* %ptr.iv, i64 -1
- %l = load i8, i8* %ptr.iv.next, align 1
+ %ptr.iv = phi ptr [ %start, %entry ], [ %ptr.iv.next, %loop.latch ]
+ %ptr.iv.next = getelementptr inbounds i8, ptr %ptr.iv, i64 -1
+ %l = load i8, ptr %ptr.iv.next, align 1
%c.1 = icmp eq i8 %l, 0
br i1 %c.1, label %loop.latch, label %if.then
if.then:
- store i8 95, i8* %ptr.iv.next, align 1
+ store i8 95, ptr %ptr.iv.next, align 1
br label %loop.latch
loop.latch:
- %c.2 = icmp eq i8* %ptr.iv.next, %end
+ %c.2 = icmp eq ptr %ptr.iv.next, %end
br i1 %c.2, label %exit, label %loop.header
exit:
diff --git a/llvm/test/Transforms/LoopVectorize/vplan-vectorize-inner-loop-reduction.ll b/llvm/test/Transforms/LoopVectorize/vplan-vectorize-inner-loop-reduction.ll
index 177968cfae120..fdf73963e8646 100644
--- a/llvm/test/Transforms/LoopVectorize/vplan-vectorize-inner-loop-reduction.ll
+++ b/llvm/test/Transforms/LoopVectorize/vplan-vectorize-inner-loop-reduction.ll
@@ -3,7 +3,7 @@
; Vectorize explict marked outer loop using vplan native path. Inner loop
; contains simple double add reduction. IR is compiled and modified by hand
; from following C code:
-; void inner_loop_reduction(const double* restrict in_a, const double* restrict in_b, double* restrict out)
+; void inner_loop_reduction(const ptr restrict in_a, const ptr restrict in_b, ptr restrict out)
; {
; #pragma clang loop vectorize(enable)
; for (int i = 0; i < 1000; ++i) {
@@ -15,16 +15,16 @@
; out[i] = a;
; }
; }
-define void @inner_loop_reduction(double* noalias nocapture readonly %a.in, double* noalias nocapture readonly %b.in, double* noalias nocapture %c.out) {
+define void @inner_loop_reduction(ptr noalias nocapture readonly %a.in, ptr noalias nocapture readonly %b.in, ptr noalias nocapture %c.out) {
; CHECK-LABEL: @inner_loop_reduction(
; CHECK: vector.body:
; CHECK-NEXT: %[[FOR1_INDEX:.*]] = phi i64 [ 0, %[[LABEL_PR:.*]] ], [ %{{.*}}, %[[LABEL_FOR1_LATCH:.*]] ]
; CHECK: %[[VEC_INDEX:.*]] = phi <4 x i64> [ <i64 0, i64 1, i64 2, i64 3>, %[[LABEL_PR]] ], [ %{{.*}}, %[[LABEL_FOR1_LATCH]] ]
-; CHECK-NEXT: %[[A_PTR:.*]] = getelementptr inbounds double, double* %a.in, <4 x i64> %[[VEC_INDEX]]
-; CHECK-NEXT: %[[MASKED_GATHER1:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %[[A_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
-; CHECK-NEXT: %[[B_PTR:.*]] = getelementptr inbounds double, double* %b.in, <4 x i64> %[[VEC_INDEX]]
-; CHECK-NEXT: %[[MASKED_GATHER2:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %[[B_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
+; CHECK-NEXT: %[[A_PTR:.*]] = getelementptr inbounds double, ptr %a.in, <4 x i64> %[[VEC_INDEX]]
+; CHECK-NEXT: %[[MASKED_GATHER1:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0(<4 x ptr> %[[A_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
+; CHECK-NEXT: %[[B_PTR:.*]] = getelementptr inbounds double, ptr %b.in, <4 x i64> %[[VEC_INDEX]]
+; CHECK-NEXT: %[[MASKED_GATHER2:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0(<4 x ptr> %[[B_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
; CHECK-NEXT: br label %[[FOR2_HEADER:.*]]
; CHECK: [[FOR2_HEADER]]:
@@ -38,8 +38,8 @@ define void @inner_loop_reduction(double* noalias nocapture readonly %a.in, doub
; CHECK: [[FOR1_LATCH]]:
; CHECK-NEXT: %[[REDUCTION:.*]] = phi <4 x double> [ %[[REDUCTION_NEXT]], %[[FOR2_HEADER]] ]
-; CHECK-NEXT: %[[C_PTR:.*]] = getelementptr inbounds double, double* %c.out, <4 x i64> %[[VEC_INDEX]]
-; CHECK-NEXT: call void @llvm.masked.scatter.v4f64.v4p0f64(<4 x double> %[[REDUCTION]], <4 x double*> %[[C_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
+; CHECK-NEXT: %[[C_PTR:.*]] = getelementptr inbounds double, ptr %c.out, <4 x i64> %[[VEC_INDEX]]
+; CHECK-NEXT: call void @llvm.masked.scatter.v4f64.v4p0(<4 x double> %[[REDUCTION]], <4 x ptr> %[[C_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
; CHECK-NEXT: %[[VEC_INDEX_NEXT:.*]] = add nuw nsw <4 x i64> %[[VEC_INDEX]], <i64 1, i64 1, i64 1, i64 1>
; CHECK-NEXT: %[[VEC_PTR:.*]] = icmp eq <4 x i64> %[[VEC_INDEX_NEXT]], <i64 1000, i64 1000, i64 1000, i64 1000>
; CHECK-NEXT: %[[FOR1_INDEX_NEXT:.*]] = add nuw i64 %[[FOR1_INDEX]], 4
@@ -52,10 +52,10 @@ entry:
for1.header: ; preds = %entry
%indvar1 = phi i64 [ 0, %entry ], [ %indvar11, %for1.latch ]
- %a.ptr = getelementptr inbounds double, double* %a.in, i64 %indvar1
- %a = load double, double* %a.ptr, align 8
- %b.ptr = getelementptr inbounds double, double* %b.in, i64 %indvar1
- %b = load double, double* %b.ptr, align 8
+ %a.ptr = getelementptr inbounds double, ptr %a.in, i64 %indvar1
+ %a = load double, ptr %a.ptr, align 8
+ %b.ptr = getelementptr inbounds double, ptr %b.in, i64 %indvar1
+ %b = load double, ptr %b.ptr, align 8
br label %for2.header
for2.header: ; preds = %for1.header, %for2.header
@@ -67,8 +67,8 @@ for2.header: ; preds = %for1.header
br i1 %for2.cond, label %for1.latch, label %for2.header
for1.latch: ; preds = %for2.header
- %c.ptr = getelementptr inbounds double, double* %c.out, i64 %indvar1
- store double %a.reduction1, double* %c.ptr, align 8
+ %c.ptr = getelementptr inbounds double, ptr %c.out, i64 %indvar1
+ store double %a.reduction1, ptr %c.ptr, align 8
%indvar11 = add nuw nsw i64 %indvar1, 1
%for1.cond = icmp eq i64 %indvar11, 1000
br i1 %for1.cond, label %exit, label %for1.header, !llvm.loop !0
diff --git a/llvm/test/Transforms/LoopVectorize/vplan-widen-call-instruction.ll b/llvm/test/Transforms/LoopVectorize/vplan-widen-call-instruction.ll
index e43221565aba8..3335c21c8d745 100644
--- a/llvm/test/Transforms/LoopVectorize/vplan-widen-call-instruction.ll
+++ b/llvm/test/Transforms/LoopVectorize/vplan-widen-call-instruction.ll
@@ -4,16 +4,16 @@
; llvm.sqrt.* intrincis calls.
declare double @llvm.sqrt.f64(double %0)
-define void @widen_call_instruction(double* noalias nocapture readonly %a.in, double* noalias nocapture readonly %b.in, double* noalias nocapture %c.out) {
+define void @widen_call_instruction(ptr noalias nocapture readonly %a.in, ptr noalias nocapture readonly %b.in, ptr noalias nocapture %c.out) {
; CHECK-LABEL: @widen_call_instruction(
; CHECK: vector.body:
; CHECK-NEXT: %[[FOR1_INDEX:.*]] = phi i64 [ 0, %[[LABEL_PR:.*]] ], [ %{{.*}}, %[[LABEL_FOR1_LATCH:.*]] ]
; CHECK: %[[VEC_INDEX:.*]] = phi <4 x i64> [ <i64 0, i64 1, i64 2, i64 3>, %[[LABEL_PR]] ], [ %{{.*}}, %[[LABEL_FOR1_LATCH]] ]
-; CHECK-NEXT: %[[A_PTR:.*]] = getelementptr inbounds double, double* %a.in, <4 x i64> %[[VEC_INDEX]]
-; CHECK-NEXT: %[[MASKED_GATHER1:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %[[A_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
-; CHECK-NEXT: %[[B_PTR:.*]] = getelementptr inbounds double, double* %b.in, <4 x i64> %[[VEC_INDEX]]
-; CHECK-NEXT: %[[MASKED_GATHER2:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %[[B_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
+; CHECK-NEXT: %[[A_PTR:.*]] = getelementptr inbounds double, ptr %a.in, <4 x i64> %[[VEC_INDEX]]
+; CHECK-NEXT: %[[MASKED_GATHER1:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0(<4 x ptr> %[[A_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
+; CHECK-NEXT: %[[B_PTR:.*]] = getelementptr inbounds double, ptr %b.in, <4 x i64> %[[VEC_INDEX]]
+; CHECK-NEXT: %[[MASKED_GATHER2:.*]] = call <4 x double> @llvm.masked.gather.v4f64.v4p0(<4 x ptr> %[[B_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x double> poison)
; CHECK-NEXT: %[[B_SQRT:.*]] = call <4 x double> @llvm.sqrt.v4f64(<4 x double> %[[MASKED_GATHER2]])
; CHECK-NEXT: br label %[[FOR2_HEADER:.*]]
@@ -28,8 +28,8 @@ define void @widen_call_instruction(double* noalias nocapture readonly %a.in, do
; CHECK: [[FOR1_LATCH]]:
; CHECK-NEXT: %[[REDUCTION:.*]] = phi <4 x double> [ %[[REDUCTION_NEXT]], %[[FOR2_HEADER]] ]
-; CHECK-NEXT: %[[C_PTR:.*]] = getelementptr inbounds double, double* %c.out, <4 x i64> %[[VEC_INDEX]]
-; CHECK-NEXT: call void @llvm.masked.scatter.v4f64.v4p0f64(<4 x double> %[[REDUCTION]], <4 x double*> %[[C_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
+; CHECK-NEXT: %[[C_PTR:.*]] = getelementptr inbounds double, ptr %c.out, <4 x i64> %[[VEC_INDEX]]
+; CHECK-NEXT: call void @llvm.masked.scatter.v4f64.v4p0(<4 x double> %[[REDUCTION]], <4 x ptr> %[[C_PTR]], i32 8, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)
; CHECK-NEXT: %[[VEC_INDEX_NEXT:.*]] = add nuw nsw <4 x i64> %[[VEC_INDEX]], <i64 1, i64 1, i64 1, i64 1>
; CHECK-NEXT: %[[VEC_PTR:.*]] = icmp eq <4 x i64> %[[VEC_INDEX_NEXT]], <i64 1000, i64 1000, i64 1000, i64 1000>
; CHECK-NEXT: %[[FOR1_INDEX_NEXT:.*]] = add nuw i64 %[[FOR1_INDEX]], 4
@@ -42,10 +42,10 @@ entry:
for1.header:
%indvar1 = phi i64 [ 0, %entry ], [ %indvar11, %for1.latch ]
- %a.ptr = getelementptr inbounds double, double* %a.in, i64 %indvar1
- %a = load double, double* %a.ptr, align 8
- %b.ptr = getelementptr inbounds double, double* %b.in, i64 %indvar1
- %b = load double, double* %b.ptr, align 8
+ %a.ptr = getelementptr inbounds double, ptr %a.in, i64 %indvar1
+ %a = load double, ptr %a.ptr, align 8
+ %b.ptr = getelementptr inbounds double, ptr %b.in, i64 %indvar1
+ %b = load double, ptr %b.ptr, align 8
%b.sqrt = call double @llvm.sqrt.f64(double %b)
br label %for2.header
@@ -58,8 +58,8 @@ for2.header:
br i1 %for2.cond, label %for1.latch, label %for2.header
for1.latch:
- %c.ptr = getelementptr inbounds double, double* %c.out, i64 %indvar1
- store double %a.reduction1, double* %c.ptr, align 8
+ %c.ptr = getelementptr inbounds double, ptr %c.out, i64 %indvar1
+ store double %a.reduction1, ptr %c.ptr, align 8
%indvar11 = add nuw nsw i64 %indvar1, 1
%for1.cond = icmp eq i64 %indvar11, 1000
br i1 %for1.cond, label %exit, label %for1.header, !llvm.loop !0
More information about the llvm-commits
mailing list