forked from OSchip/llvm-project
[NFC] [Fortran Support] Cleanup Fortran Array pattern mactch testcases
- Move the testcases to ScopInfo/ since the processing takes place in ScopBuilder. - Cleanup testcases, run -polly-canonicalize on them, find minimal set of opt parameters. llvm-svn: 302886
This commit is contained in:
parent
a1149e01d2
commit
c05fcc0d9e
|
@ -1,9 +1,6 @@
|
|||
; RUN: opt -S -polly-detect-fortran-arrays -analyze -polly-process-unprofitable \
|
||||
; RUN: -polly-remarks-minimal -polly-canonicalize -polly-scops \
|
||||
; RUN: -polly-dependences -polly-canonicalize \
|
||||
; RUN: -polly-allow-nonaffine -polly-ignore-aliasing \
|
||||
; RUN: -polly-invariant-load-hoisting < %s| FileCheck %s
|
||||
;
|
||||
; RUN: opt -analyze -S -polly-detect-fortran-arrays \
|
||||
; RUN: -polly-process-unprofitable -polly-scops < %s | FileCheck %s
|
||||
|
||||
; MODULE src_soil
|
||||
; USE data_parameters, ONLY : &
|
||||
; wp, & ! KIND-type parameter for real variables
|
||||
|
@ -23,6 +20,7 @@
|
|||
; END SUBROUTINE terra1
|
||||
; END MODULE src_soil
|
||||
|
||||
|
||||
target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
@ -41,74 +39,50 @@ module asm "\09.ident\09\22GCC: (GNU) 4.6.4 LLVM: 3.3.1\22"
|
|||
; Function Attrs: nounwind uwtable
|
||||
define void @__src_soil_MOD_terra1(i32* noalias nocapture %n) unnamed_addr #0 {
|
||||
entry:
|
||||
br label %entry.split
|
||||
|
||||
entry.split: ; preds = %entry
|
||||
store i64 537, i64* getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 2), align 16, !tbaa !0
|
||||
store i64 1, i64* getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 3, i64 0, i32 1), align 8, !tbaa !0
|
||||
%0 = load i32, i32* %n, align 4, !tbaa !3
|
||||
%1 = sext i32 %0 to i64
|
||||
store i64 %1, i64* getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 3, i64 0, i32 2), align 8, !tbaa !0
|
||||
store i64 1, i64* getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 3, i64 0, i32 0), align 8, !tbaa !0
|
||||
%2 = icmp slt i32 %0, 0
|
||||
%3 = select i1 %2, i64 0, i64 %1
|
||||
%4 = icmp eq i64 %3, 0
|
||||
br i1 %4, label %"16", label %"8"
|
||||
|
||||
"8": ; preds = %entry
|
||||
%5 = sdiv i64 9223372036854775807, %1
|
||||
%6 = icmp slt i64 %5, 1
|
||||
%7 = icmp slt i32 %0, 1
|
||||
%8 = shl nsw i64 %3, 3
|
||||
%.2 = select i1 %7, i64 0, i64 %8
|
||||
br i1 %6, label %"15", label %"16"
|
||||
|
||||
"15": ; preds = %"8"
|
||||
|
||||
unreachable
|
||||
|
||||
"16": ; preds = %"8", %entry
|
||||
%.24 = phi i64 [ %.2, %"8" ], [ 0, %entry ]
|
||||
%9 = load i8*, i8** getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 0), align 32, !tbaa !5
|
||||
%10 = icmp eq i8* %9, null
|
||||
br i1 %10, label %"17", label %"20"
|
||||
|
||||
"17": ; preds = %"16"
|
||||
%11 = icmp ne i64 %.24, 0
|
||||
%12 = select i1 %11, i64 %.24, i64 1
|
||||
%13 = tail call noalias i8* @malloc(i64 %12) #2 ;<= 1. malloc
|
||||
%14 = icmp eq i8* %13, null
|
||||
br i1 %14, label %"18", label %"19"
|
||||
|
||||
"18": ; preds = %"17"
|
||||
unreachable
|
||||
|
||||
"19": ; preds = %"17"
|
||||
store i8* %13, i8** getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 0), align 32, !tbaa !5
|
||||
%2 = icmp slt i32 %0, 1
|
||||
%3 = zext i32 %0 to i64
|
||||
%4 = shl nuw nsw i64 %3, 3
|
||||
%.24 = select i1 %2, i64 0, i64 %4
|
||||
%5 = icmp ne i64 %.24, 0
|
||||
%6 = select i1 %5, i64 %.24, i64 1
|
||||
%7 = tail call noalias i8* @malloc(i64 %6) #2
|
||||
store i8* %7, i8** getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 0), align 32, !tbaa !5
|
||||
store i64 -1, i64* getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 1), align 8, !tbaa !0
|
||||
%15 = icmp sgt i32 %0, 1
|
||||
br i1 %15, label %"21.preheader", label %return
|
||||
%8 = icmp sgt i32 %0, 1
|
||||
br i1 %8, label %"21.preheader", label %return
|
||||
|
||||
"21.preheader": ; preds = %"19"
|
||||
%16 = bitcast i8* %13 to double* ;<= 2. bitcast to double*
|
||||
%17 = add i32 %0, 1
|
||||
"21.preheader": ; preds = %entry.split
|
||||
%9 = bitcast i8* %7 to double*
|
||||
%10 = add i32 %0, 1
|
||||
br label %"21"
|
||||
|
||||
"20": ; preds = %"16"
|
||||
unreachable
|
||||
|
||||
"21": ; preds = %"21", %"21.preheader"
|
||||
%18 = phi double [ undef, %"21.preheader" ], [ %23, %"21" ]
|
||||
%11 = phi double [ undef, %"21.preheader" ], [ %16, %"21" ]
|
||||
%indvars.iv = phi i64 [ 2, %"21.preheader" ], [ %indvars.iv.next, %"21" ]
|
||||
%19 = add nsw i64 %indvars.iv, -1
|
||||
%20 = getelementptr inbounds double, double* %16, i64 %19 ;<= 3. GEP
|
||||
%21 = load double, double* %20, align 8, !tbaa !7
|
||||
%22 = fmul double %21, %21
|
||||
%23 = fadd double %22, %18
|
||||
store double %23, double* %20, align 8, !tbaa !7 ;<= 4. store
|
||||
%indvars.iv.next = add i64 %indvars.iv, 1
|
||||
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
|
||||
%exitcond = icmp eq i32 %lftr.wideiv, %17
|
||||
br i1 %exitcond, label %return, label %"21"
|
||||
%12 = add nsw i64 %indvars.iv, -1
|
||||
%13 = getelementptr inbounds double, double* %9, i64 %12
|
||||
%14 = load double, double* %13, align 8, !tbaa !7
|
||||
%15 = fmul double %14, %14
|
||||
%16 = fadd double %11, %15
|
||||
store double %16, double* %13, align 8, !tbaa !7
|
||||
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
|
||||
%lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
|
||||
%exitcond2 = icmp eq i32 %lftr.wideiv1, %10
|
||||
br i1 %exitcond2, label %return.loopexit, label %"21"
|
||||
|
||||
return: ; preds = %"21", %"19"
|
||||
return.loopexit: ; preds = %"21"
|
||||
br label %return
|
||||
|
||||
return: ; preds = %return.loopexit, %entry.split
|
||||
ret void
|
||||
}
|
||||
|
||||
|
@ -127,7 +101,6 @@ declare void @_gfortran_runtime_error_at(i8*, i8*, ...) #1
|
|||
attributes #0 = { nounwind uwtable }
|
||||
attributes #1 = { noreturn }
|
||||
attributes #2 = { nounwind }
|
||||
attributes #3 = { noreturn nounwind }
|
||||
|
||||
!0 = !{!1, !1, i64 0}
|
||||
!1 = !{!"alias set 4: integer(kind=8)", !2}
|
|
@ -1,9 +1,6 @@
|
|||
; RUN: opt -S -polly-detect-fortran-arrays -analyze -polly-process-unprofitable \
|
||||
; RUN: -polly-remarks-minimal -polly-canonicalize -polly-scops \
|
||||
; RUN: -polly-dependences -polly-canonicalize \
|
||||
; RUN: -polly-allow-nonaffine -polly-ignore-aliasing \
|
||||
; RUN: -polly-invariant-load-hoisting < %s| FileCheck %s
|
||||
;
|
||||
; RUN: opt -analyze -S -polly-detect-fortran-arrays \
|
||||
; RUN: -polly-process-unprofitable -polly-scops < %s | FileCheck %s
|
||||
|
||||
; MODULE src_soil
|
||||
; USE data_parameters, ONLY : &
|
||||
; wp, & ! KIND-type parameter for real variables
|
||||
|
@ -38,35 +35,40 @@ module asm "\09.ident\09\22GCC: (GNU) 4.6.4 LLVM: 3.3.1\22"
|
|||
; Function Attrs: nounwind uwtable
|
||||
define void @__src_soil_MOD_terra1(i32* noalias nocapture %n) unnamed_addr #0 {
|
||||
entry:
|
||||
br label %entry.split
|
||||
|
||||
entry.split: ; preds = %entry
|
||||
%0 = load i32, i32* %n, align 4, !tbaa !0
|
||||
%1 = icmp sgt i32 %0, 21
|
||||
br i1 %1, label %"3.preheader", label %return
|
||||
|
||||
"3.preheader": ; preds = %entry
|
||||
"3.preheader": ; preds = %entry.split
|
||||
%2 = load i64, i64* getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 1), align 8, !tbaa !3
|
||||
%3 = load i8*, i8** getelementptr inbounds (%"struct.array1_real(kind=8)", %"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs, i64 0, i32 0), align 32, !tbaa !5
|
||||
%4 = bitcast i8* %3 to double*
|
||||
%5 = add i32 %0, 1
|
||||
%3 = load double*, double** bitcast (%"struct.array1_real(kind=8)"* @__src_soil_MOD_xdzs to double**), align 32, !tbaa !5
|
||||
%4 = add i32 %0, 1
|
||||
br label %"3"
|
||||
|
||||
"3": ; preds = %"3", %"3.preheader"
|
||||
%indvars.iv = phi i64 [ 22, %"3.preheader" ], [ %indvars.iv.next, %"3" ]
|
||||
%6 = add nsw i64 %indvars.iv, %2
|
||||
%7 = getelementptr inbounds double, double* %4, i64 %6
|
||||
%8 = load double, double* %7, align 8, !tbaa !7
|
||||
%9 = fmul double %8, %8
|
||||
%10 = add nsw i64 %indvars.iv, -1
|
||||
%11 = add nsw i64 %10, %2
|
||||
%12 = getelementptr inbounds double, double* %4, i64 %11
|
||||
%13 = load double, double* %12, align 8, !tbaa !7
|
||||
%14 = fadd double %9, %13
|
||||
store double %14, double* %7, align 8, !tbaa !7
|
||||
%indvars.iv.next = add i64 %indvars.iv, 1
|
||||
%lftr.wideiv = trunc i64 %indvars.iv.next to i32
|
||||
%exitcond = icmp eq i32 %lftr.wideiv, %5
|
||||
br i1 %exitcond, label %return, label %"3"
|
||||
%5 = add nsw i64 %indvars.iv, %2
|
||||
%6 = getelementptr inbounds double, double* %3, i64 %5
|
||||
%7 = load double, double* %6, align 8, !tbaa !7
|
||||
%8 = fmul double %7, %7
|
||||
%9 = add i64 %2, -1
|
||||
%10 = add i64 %9, %indvars.iv
|
||||
%11 = getelementptr inbounds double, double* %3, i64 %10
|
||||
%12 = load double, double* %11, align 8, !tbaa !7
|
||||
%13 = fadd double %8, %12
|
||||
store double %13, double* %6, align 8, !tbaa !7
|
||||
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
|
||||
%lftr.wideiv1 = trunc i64 %indvars.iv.next to i32
|
||||
%exitcond2 = icmp eq i32 %lftr.wideiv1, %4
|
||||
br i1 %exitcond2, label %return.loopexit, label %"3"
|
||||
|
||||
return: ; preds = %"3", %entry
|
||||
return.loopexit: ; preds = %"3"
|
||||
br label %return
|
||||
|
||||
return: ; preds = %return.loopexit, %entry.split
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue