summaryrefslogtreecommitdiffstats
path: root/llvm/test/MC/Hexagon/new-value-check.s
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/MC/Hexagon/new-value-check.s')
-rw-r--r--llvm/test/MC/Hexagon/new-value-check.s29
1 files changed, 13 insertions, 16 deletions
diff --git a/llvm/test/MC/Hexagon/new-value-check.s b/llvm/test/MC/Hexagon/new-value-check.s
index 978d6f15148..4c0674d7e2f 100644
--- a/llvm/test/MC/Hexagon/new-value-check.s
+++ b/llvm/test/MC/Hexagon/new-value-check.s
@@ -3,36 +3,33 @@
# RUN: not llvm-mc -triple=hexagon -relax-nv-checks < %s 2>&1 | \
# RUN: FileCheck %s --check-prefix=CHECK-RELAXED
-# CHECK-STRICT: :12:1: error: register `R0' used with `.new' but not validly modified in the same packet
-# CHECK-RELAXED: :12:1: error: register `R0' used with `.new' but not validly modified in the same packet
+# CHECK-STRICT: :10:3: note: Register producer has the opposite predicate sense as consumer
+# CHECK-RELAXED: :10:3: note: Register producer has the opposite predicate sense as consumer
{
# invalid: r0 definition predicated on the opposite condition
if (p3) r0 = add(r1, r2)
if (!p3) memb(r20) = r0.new
}
-# CHECK-STRICT: :20:1: error: register `R0' used with `.new' but not validly modified in the same packet
-# CHECK-RELAXED: :20:1: error: register `R0' used with `.new' but not validly modified in the same packet
-{
- # invalid: new-value compare-and-jump cannot use floating point value
+# CHECK-STRICT: :18:3: note: FPU instructions cannot be new-value producers for jumps
+# CHECK-RELAXED: :18:3: note: FPU instructions cannot be new-value producers for jumps
+# CHECK-RELAXED: :19:3: error: Instruction does not have a valid new register producer
+{ # invalid: new-value compare-and-jump cannot use floating point value
r0 = sfadd(r1, r2)
if (cmp.eq(r0.new, #0)) jump:nt .
}
-# CHECK-STRICT: :29:1: error: register `R0' used with `.new' but not validly modified in the same packet
-# CHECK-RELAXED: :29:1: error: register `R0' used with `.new' but not validly modified in the same packet
+# No errors from this point on with the relaxed checks.
+# CHECK-RELAXED-NOT: error
+
+# CHECK-STRICT: :28:3: note: Register producer is predicated and consumer is unconditional
{
- # invalid: definition of r0 should be unconditional (not explicitly docu-
- # mented)
+ # valid in relaxed, p0 could always be true
if (p0) r0 = r1
if (cmp.eq(r0.new, #0)) jump:nt .
}
-
-# No errors from this point on with the relaxed checks.
-# CHECK-RELAXED-NOT: error
-
-# CHECK-STRICT: :41:1: error: register `R0' used with `.new' but not validly modified in the same packet
+# CHECK-STRICT: :36:3: note: Register producer does not use the same predicate register as the consumer
{
# valid (relaxed): p2 and p3 cannot be proven to violate the new-value
# requirements
@@ -40,7 +37,7 @@
if (p2) memb(r20) = r0.new
}
-# CHECK-STRICT: :48:1: error: register `R0' used with `.new' but not validly modified in the same packet
+# CHECK-STRICT: :43:3: note: Register producer is predicated and consumer is unconditional
{
# valid (relaxed): p3 could be always true
if (p3) r0 = add(r1, r2)
OpenPOWER on IntegriCloud