brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.9 KiB · 2b702e2 Raw
330 lines · plain
1; RUN: opt %loadNPMPolly '-passes=polly-custom<scops>' -polly-print-scops -disable-output < %s 2>&1 | FileCheck %s2;3; void consequences(int *A, int bool_cond, int lhs, int rhs) {4;5;   BC: *A = 0;6;     if (bool_cond)7;   S_BC:     *A = 0;8;   M_BC: *A = 0;9;10;   NEG_BC: *A = 0;11;     if (!bool_cond)12;   S_NEG_BC: *A = 0;13;   M_NEG_BC: *A = 0;14;15;   SLT: *A = 0;16;     if (lhs < rhs)17;   S_SLT:    *A = 0;18;   M_SLT: *A = 0;19;20;   SLE: *A = 0;21;     if (lhs <= rhs)22;   S_SLE:    *A = 0;23;   M_SLE: *A = 0;24;25;   SGT: *A = 0;26;     if (lhs > rhs)27;   S_SGT:    *A = 0;28;   M_SGT: *A = 0;29;30;   SGE: *A = 0;31;     if (lhs >= rhs)32;   S_SGE:    *A = 0;33;   M_SGE: *A = 0;34;35;   EQ: *A = 0;36;     if (lhs == rhs)37;   S_EQ:    *A = 0;38;   M_EQ: *A = 0;39;40;   NEQ: *A = 0;41;     if (lhs != rhs)42;   S_NEQ:   *A = 0;43;   M_NEQ: *A = 0;44;45; }46; CHECK:      Statements {47; CHECK-NEXT:     Stmt_BC48; CHECK-NEXT:         Domain :=49; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_BC[] };50; CHECK-NEXT:         Schedule :=51; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_BC[] -> [0] };52; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]53; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_BC[] -> MemRef_A[0] };54; CHECK-NEXT:     Stmt_S_BC55; CHECK-NEXT:         Domain :=56; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_BC[] : bool_cond < 0 or bool_cond > 0 };57; CHECK-NEXT:         Schedule :=58; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_BC[] -> [1] : bool_cond < 0 or bool_cond > 0 };59; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]60; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_BC[] -> MemRef_A[0] };61; CHECK-NEXT:     Stmt_M_BC62; CHECK-NEXT:         Domain :=63; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_BC[] };64; CHECK-NEXT:         Schedule :=65; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_BC[] -> [2] };66; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]67; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_BC[] -> MemRef_A[0] };68; CHECK-NEXT:     Stmt_NEG_BC69; CHECK-NEXT:         Domain :=70; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_NEG_BC[] };71; CHECK-NEXT:         Schedule :=72; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_NEG_BC[] -> [3] };73; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]74; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_NEG_BC[] -> MemRef_A[0] };75; CHECK-NEXT:     Stmt_S_NEG_BC76; CHECK-NEXT:         Domain :=77; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_NEG_BC[] : bool_cond = 0 };78; CHECK-NEXT:         Schedule :=79; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_NEG_BC[] -> [4] };80; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]81; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_NEG_BC[] -> MemRef_A[0] };82; CHECK-NEXT:     Stmt_M_NEG_BC83; CHECK-NEXT:         Domain :=84; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_NEG_BC[] };85; CHECK-NEXT:         Schedule :=86; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_NEG_BC[] -> [5] };87; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]88; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_NEG_BC[] -> MemRef_A[0] };89; CHECK-NEXT:     Stmt_SLT90; CHECK-NEXT:         Domain :=91; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SLT[] };92; CHECK-NEXT:         Schedule :=93; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SLT[] -> [6] };94; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]95; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SLT[] -> MemRef_A[0] };96; CHECK-NEXT:     Stmt_S_SLT97; CHECK-NEXT:         Domain :=98; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SLT[] : rhs > lhs };99; CHECK-NEXT:         Schedule :=100; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SLT[] -> [7] };101; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]102; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SLT[] -> MemRef_A[0] };103; CHECK-NEXT:     Stmt_M_SLT104; CHECK-NEXT:         Domain :=105; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SLT[] };106; CHECK-NEXT:         Schedule :=107; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SLT[] -> [8] };108; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]109; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SLT[] -> MemRef_A[0] };110; CHECK-NEXT:     Stmt_SLE111; CHECK-NEXT:         Domain :=112; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SLE[] };113; CHECK-NEXT:         Schedule :=114; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SLE[] -> [9] };115; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]116; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SLE[] -> MemRef_A[0] };117; CHECK-NEXT:     Stmt_S_SLE118; CHECK-NEXT:         Domain :=119; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SLE[] : rhs >= lhs };120; CHECK-NEXT:         Schedule :=121; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SLE[] -> [10] };122; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]123; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SLE[] -> MemRef_A[0] };124; CHECK-NEXT:     Stmt_M_SLE125; CHECK-NEXT:         Domain :=126; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SLE[] };127; CHECK-NEXT:         Schedule :=128; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SLE[] -> [11] };129; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]130; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SLE[] -> MemRef_A[0] };131; CHECK-NEXT:     Stmt_SGT132; CHECK-NEXT:         Domain :=133; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SGT[] };134; CHECK-NEXT:         Schedule :=135; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SGT[] -> [12] };136; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]137; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SGT[] -> MemRef_A[0] };138; CHECK-NEXT:     Stmt_S_SGT139; CHECK-NEXT:         Domain :=140; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SGT[] : rhs < lhs };141; CHECK-NEXT:         Schedule :=142; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SGT[] -> [13] };143; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]144; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SGT[] -> MemRef_A[0] };145; CHECK-NEXT:     Stmt_M_SGT146; CHECK-NEXT:         Domain :=147; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SGT[] };148; CHECK-NEXT:         Schedule :=149; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SGT[] -> [14] };150; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]151; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SGT[] -> MemRef_A[0] };152; CHECK-NEXT:     Stmt_SGE153; CHECK-NEXT:         Domain :=154; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SGE[] };155; CHECK-NEXT:         Schedule :=156; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SGE[] -> [15] };157; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]158; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_SGE[] -> MemRef_A[0] };159; CHECK-NEXT:     Stmt_S_SGE160; CHECK-NEXT:         Domain :=161; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SGE[] : rhs <= lhs };162; CHECK-NEXT:         Schedule :=163; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SGE[] -> [16] };164; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]165; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_SGE[] -> MemRef_A[0] };166; CHECK-NEXT:     Stmt_M_SGE167; CHECK-NEXT:         Domain :=168; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SGE[] };169; CHECK-NEXT:         Schedule :=170; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SGE[] -> [17] };171; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]172; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_SGE[] -> MemRef_A[0] };173; CHECK-NEXT:     Stmt_EQ174; CHECK-NEXT:         Domain :=175; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_EQ[] };176; CHECK-NEXT:         Schedule :=177; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_EQ[] -> [18] };178; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]179; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_EQ[] -> MemRef_A[0] };180; CHECK-NEXT:     Stmt_S_EQ181; CHECK-NEXT:         Domain :=182; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_EQ[] : rhs = lhs };183; CHECK-NEXT:         Schedule :=184; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_EQ[] -> [19] };185; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]186; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_EQ[] -> MemRef_A[0] };187; CHECK-NEXT:     Stmt_M_EQ188; CHECK-NEXT:         Domain :=189; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_EQ[] };190; CHECK-NEXT:         Schedule :=191; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_EQ[] -> [20] };192; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]193; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_EQ[] -> MemRef_A[0] };194; CHECK-NEXT:     Stmt_NEQ195; CHECK-NEXT:         Domain :=196; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_NEQ[] };197; CHECK-NEXT:         Schedule :=198; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_NEQ[] -> [21] };199; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]200; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_NEQ[] -> MemRef_A[0] };201; CHECK-NEXT:     Stmt_S_NEQ202; CHECK-NEXT:         Domain :=203; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_NEQ[] : rhs > lhs or rhs < lhs };204; CHECK-NEXT:         Schedule :=205; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_NEQ[] -> [22] : rhs > lhs or rhs < lhs };206; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]207; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_S_NEQ[] -> MemRef_A[0] };208; CHECK-NEXT:     Stmt_M_NEQ209; CHECK-NEXT:         Domain :=210; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_NEQ[] };211; CHECK-NEXT:         Schedule :=212; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_NEQ[] -> [23] };213; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]214; CHECK-NEXT:             [bool_cond, lhs, rhs] -> { Stmt_M_NEQ[] -> MemRef_A[0] };215; CHECK-NEXT: }216;217target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"218 219define void @consequences(ptr %A, i32 %bool_cond, i32 %lhs, i32 %rhs) {220entry:221  br label %BC222 223BC:                                               ; preds = %entry224  store i32 0, ptr %A, align 4225  %tobool = icmp eq i32 %bool_cond, 0226  br i1 %tobool, label %M_BC, label %S_BC227 228S_BC:                                             ; preds = %if.then229  store i32 0, ptr %A, align 4230  br label %M_BC231 232M_BC:                                           ; preds = %BC, %S_BC233  store i32 0, ptr %A, align 4234  br label %NEG_BC235 236NEG_BC:                                           ; preds = %if.end237  store i32 0, ptr %A, align 4238  %tobool1 = icmp eq i32 %bool_cond, 0239  br i1 %tobool1, label %S_NEG_BC, label %M_NEG_BC240 241S_NEG_BC:                                         ; preds = %if.then.2242  store i32 0, ptr %A, align 4243  br label %M_NEG_BC244 245M_NEG_BC:                                         ; preds = %NEG_BC, %S_NEG_BC246  store i32 0, ptr %A, align 4247  br label %SLT248 249SLT:                                              ; preds = %if.end.3250  store i32 0, ptr %A, align 4251  %cmp = icmp slt i32 %lhs, %rhs252  br i1 %cmp, label %S_SLT, label %M_SLT253 254S_SLT:                                            ; preds = %if.then.4255  store i32 0, ptr %A, align 4256  br label %M_SLT257 258M_SLT:                                         ; preds = %S_SLT, %SLT259  store i32 0, ptr %A, align 4260  br label %SLE261 262SLE:                                              ; preds = %if.end.5263  store i32 0, ptr %A, align 4264  %cmp6 = icmp sgt i32 %lhs, %rhs265  br i1 %cmp6, label %M_SLE, label %S_SLE266 267S_SLE:                                            ; preds = %if.then.7268  store i32 0, ptr %A, align 4269  br label %M_SLE270 271M_SLE:                                         ; preds = %SLE, %S_SLE272  store i32 0, ptr %A, align 4273  br label %SGT274 275SGT:                                              ; preds = %if.end.8276  store i32 0, ptr %A, align 4277  %cmp9 = icmp sgt i32 %lhs, %rhs278  br i1 %cmp9, label %S_SGT, label %M_SGT279 280S_SGT:                                            ; preds = %if.then.10281  store i32 0, ptr %A, align 4282  br label %M_SGT283 284M_SGT:                                        ; preds = %S_SGT, %SGT285  store i32 0, ptr %A, align 4286  br label %SGE287 288SGE:                                              ; preds = %if.end.11289  store i32 0, ptr %A, align 4290  %cmp12 = icmp slt i32 %lhs, %rhs291  br i1 %cmp12, label %M_SGE, label %S_SGE292 293S_SGE:                                            ; preds = %if.then.13294  store i32 0, ptr %A, align 4295  br label %M_SGE296 297M_SGE:                                        ; preds = %SGE, %S_SGE298  store i32 0, ptr %A, align 4299  br label %EQ300 301EQ:                                               ; preds = %if.end.14302  store i32 0, ptr %A, align 4303  %cmp15 = icmp eq i32 %lhs, %rhs304  br i1 %cmp15, label %S_EQ, label %M_EQ305 306S_EQ:                                             ; preds = %if.then.16307  store i32 0, ptr %A, align 4308  br label %M_EQ309 310M_EQ:                                        ; preds = %S_EQ, %EQ311  store i32 0, ptr %A, align 4312  br label %NEQ313 314NEQ:                                              ; preds = %if.end.17315  store i32 0, ptr %A, align 4316  %cmp18 = icmp eq i32 %lhs, %rhs317  br i1 %cmp18, label %M_NEQ, label %S_NEQ318 319S_NEQ:                                            ; preds = %if.then.19320  store i32 0, ptr %A, align 4321  br label %M_NEQ322 323M_NEQ:                                        ; preds = %NEQ, %S_NEQ324  store i32 0, ptr %A, align 4325  br label %exit326 327exit:328  ret void329}330