| ;--------------------------------------------------------------------- |
| ; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=IdentPat |
| ; RUN: FileCheck -input-file %s %s -check-prefix=IdentPat |
| |
| __IdentPat |
| add r10, r1, r2 |
| add r11, r3, r4 |
| mul r5, r10, r11 |
| __IdentPat |
| |
| ; IdentPat: {{^}}__IdentPat |
| ; IdentPat-DAG: {{^}}add [[REG1:r[0-9]+]], {{r[0-9]+}}, {{r[0-9]+}} |
| ; IdentPat-DAG: {{^}}add [[REG2:r[0-9]+]], {{r[0-9]+}}, {{r[0-9]+}} |
| ; IdentPat: {{^}}mul r5, [[REG1]], [[REG2]] |
| ; IdentPat: {{^}}__IdentPat |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=IdentPatNot |
| ; RUN: FileCheck -input-file %s %s -check-prefix=IdentPatNot |
| |
| __IdentPatNot |
| add r11, r1, r2 |
| xor r12, r1, r2 |
| add r10, r3, r4 |
| mul r5, r10, r11 |
| __IdentPatNot |
| |
| ; IdentPatNot: {{^}}__IdentPatNot |
| ; IdentPatNot-DAG: {{^}}add {{r[0-9]+}}, {{r[0-9]+}}, {{r[0-9]+}} |
| ; IdentPatNot-DAG: {{^}}add {{r[0-9]+}}, {{r[0-9]+}}, {{r[0-9]+}} |
| ; IdentPatNot-NOT: {{^}}xor |
| ; IdentPatNot-DAG: {{^}}mul r5, r10, r11 |
| ; IdentPatNot: {{^}}__IdentPatNot |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=IdentPatVarDiff |
| ; RUN: FileCheck -input-file %s %s -check-prefix=IdentPatVarDiff |
| |
| __IdentPatVarDiff |
| call void @foo(), !dbg !0 |
| call void @bar(), !dbg !1 |
| !1 = !DILocation(line: 1, |
| !0 = !DILocation(line: 1, |
| __IdentPatVarDiff |
| |
| ; IdentPatVarDiff: {{^}}__IdentPatVarDiff |
| ; IdentPatVarDiff: {{^}}call void @foo(), !dbg [[DBG0:![0-9]+]] |
| ; IdentPatVarDiff: {{^}}call void @bar(), !dbg [[DBG1:![0-9]+]] |
| ; IdentPatVarDiff-DAG: {{^}}[[DBG0]] = !DILocation(line: 1, |
| ; IdentPatVarDiff-DAG: {{^}}[[DBG1]] = !DILocation(line: 1, |
| ; IdentPatVarDiff: {{^}}__IdentPatVarDiff |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=IdentPatVarSame |
| ; RUN: not FileCheck -input-file %s %s -check-prefix=IdentPatVarSame |
| |
| __IdentPatVarSame |
| call void @foo(), !dbg !0 |
| call void @bar(), !dbg !0 |
| !1 = !DILocation(line: 1, |
| !0 = !DILocation(line: 1, |
| __IdentPatVarSame |
| |
| ; IdentPatVarSame: {{^}}__IdentPatVarSame |
| ; IdentPatVarSame: {{^}}call void @foo(), !dbg [[DBG0:![0-9]+]] |
| ; IdentPatVarSame: {{^}}call void @bar(), !dbg [[DBG1:![0-9]+]] |
| ; IdentPatVarSame-DAG: {{^}}[[DBG0]] = !DILocation(line: 1, |
| ; IdentPatVarSame-DAG: {{^}}[[DBG1]] = !DILocation(line: 1, |
| ; IdentPatVarSame: {{^}}__IdentPatVarSame |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=SupSubSet |
| ; RUN: not FileCheck -input-file %s %s -check-prefix=SupSubSet |
| |
| __SupSubSet |
| store i64 8, i64* %a |
| store i64 4, i64* %a |
| store i64 4, i64* %b |
| store i64 8, i64* %b |
| __SupSubSet |
| |
| ; SupSubSet: {{^}}__SupSubSet |
| ; SupSubSet-DAG: {{^}}store i64 {{4|8}}, i64* %a |
| ; SupSubSet-DAG: {{^}}store i64 4, i64* %a |
| ; SupSubSet-DAG: {{^}}store i64 {{4|8}}, i64* %b |
| ; SupSubSet-DAG: {{^}}store i64 4, i64* %b |
| ; SupSubSet: {{^}}__SupSubSet |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=SubSupSet |
| ; RUN: FileCheck -input-file %s %s -check-prefix=SubSupSet |
| |
| __SubSupSet |
| store i64 8, i64* %a |
| store i64 4, i64* %a |
| store i64 4, i64* %b |
| store i64 8, i64* %b |
| __SubSupSet |
| |
| ; SubSupSet: {{^}}__SubSupSet |
| ; SubSupSet-DAG: {{^}}store i64 4, i64* %a |
| ; SubSupSet-DAG: {{^}}store i64 {{4|8}}, i64* %a |
| ; SubSupSet-DAG: {{^}}store i64 4, i64* %b |
| ; SubSupSet-DAG: {{^}}store i64 {{4|8}}, i64* %b |
| ; SubSupSet: {{^}}__SubSupSet |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefixes=WrongNumReps |
| ; RUN: not FileCheck -input-file %s %s -check-prefixes=WrongNumReps |
| ; |
| ; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefixes=WrongNumReps,WrongNumReps2 |
| ; RUN: FileCheck -input-file %s %s \ |
| ; RUN: -check-prefixes=WrongNumReps,WrongNumReps2 |
| ; |
| ; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefixes=WrongNumReps,WrongNumReps2,WrongNumReps3 |
| ; RUN: not FileCheck -input-file %s %s \ |
| ; RUN: -check-prefixes=WrongNumReps,WrongNumReps2,WrongNumReps3 |
| |
| __WrongNumReps |
| 0: task_begin |
| 1: task_begin |
| 0: barrier_begin |
| 1: barrier_begin |
| __WrongNumReps |
| |
| ; WrongNumReps: {{^}}__WrongNumReps |
| ; WrongNumReps-DAG: {{^}}[[THID:[0-9]+]]: task_begin |
| ; WrongNumReps-DAG: {{^}}[[THID]]: barrier_begin |
| ; WrongNumReps2-DAG: {{^}}[[THID:[0-9]+]]: task_begin |
| ; WrongNumReps2-DAG: {{^}}[[THID]]: barrier_begin |
| ; WrongNumReps3-DAG: {{^}}[[THID:[0-9]+]]: task_begin |
| ; WrongNumReps3-DAG: {{^}}[[THID]]: barrier_begin |
| ; WrongNumReps-NEXT: {{^}}__WrongNumReps |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=SameSimple |
| ; RUN: FileCheck -input-file %s %s -check-prefix=SameSimple |
| |
| __SameSimple |
| (<foo><bar><foo>) |
| __SameSimple |
| |
| ; SameSimple: {{^}}__SameSimple |
| ; SameSimple: {{^}}( |
| ; SameSimple-DAG: <foo> |
| ; SameSimple-DAG: <foo> |
| ; SameSimple-DAG: <bar> |
| ; SameSimple-NOT: <foo> |
| ; SameSimple-SAME: ){{$}} |
| ; SameSimple: {{^}}__SameSimple |
| |
| ;--------------------------------------------------------------------- |
| ; RUN: not FileCheck -allow-deprecated-dag-overlap -input-file %s %s \ |
| ; RUN: -check-prefix=DagNotDag |
| ; RUN: FileCheck -input-file %s %s -check-prefix=DagNotDag |
| |
| Assume we have DAGs, NOTs, DAGs, NOTs, and then DAGs. Let X, Y, and Z be |
| the DAG groups such that the leading DAGs are x, y, and z. y won't match |
| overlaps with matches from: |
| |
| 1. X. Otherwise, we used to get a spurious reordering complaint (back |
| when reordering complaints on DAG-NOT-DAG were still implemented). |
| 2. Y, because y is in Y. To prevent these overlaps, the implementation must be |
| careful not to drop y's match from the previous matches list when it drops |
| matches from X to save search time. |
| 3. z. This follows by applying rule #1 for z instead of y. |
| |
| __DagNotDag |
| abcdefgh |
| abcd |
| efgh |
| |
| abcd |
| ab |
| cd |
| |
| abcd |
| cd |
| ab |
| __DagNotDag |
| |
| ; DagNotDag: {{^}}__DagNotDag |
| ; |
| ; X: |
| ; x:DagNotDag-DAG: {{^}}abcdefgh |
| ; DagNotDag-DAG: {{^}}abcd |
| ; DagNotDag-DAG: efgh{{$}} |
| ; |
| ; Reordering complaint if rule #1 is broken. |
| ; DagNotDag-NOT: abcd |
| ; DagNotDag-NOT: efgh |
| ; |
| ; Y: |
| ; y:DagNotDag-DAG: {{^}}abcd |
| ; DagNotDag-DAG: {{^}}ab |
| ; DagNotDag-DAG: cd{{$}} |
| ; |
| ; Matches if rule #2 is broken. |
| ; DagNotDag-NOT: ab |
| ; DagNotDag-NOT: cd |
| ; |
| ; Z: |
| ; z:DagNotDag-DAG: {{^}}abcd |
| ; DagNotDag-DAG: {{^}}ab |
| ; DagNotDag-DAG: cd{{$}} |
| ; |
| ; Matches if rule #3 is broken. |
| ; DagNotDag-NOT: {{^}}ab |
| ; DagNotDag-NOT: {{^}}cd |
| ; |
| ; DagNotDag: {{^}}__DagNotDag |