[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-10-19 Thread Amy Kwan via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG5eaf5b916146: [PowerPC] Restrict various P10 options to P10 
only. (authored by amyk).

Changed prior to commit:
  https://reviews.llvm.org/D109652?vs=374990=380682#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109652/new/

https://reviews.llvm.org/D109652

Files:
  clang/lib/Basic/Targets/PPC.cpp
  clang/test/Driver/ppc-p10-features-support-check.c

Index: clang/test/Driver/ppc-p10-features-support-check.c
===
--- /dev/null
+++ clang/test/Driver/ppc-p10-features-support-check.c
@@ -0,0 +1,65 @@
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpaired-vector-memops %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpcrel %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpcrel -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL-PREFIX
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpcrel -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL-PREFIX
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpcrel -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL-PREFIX
+
+int test_p10_features() {
+  return 0;
+}
+
+// HASPAIRED: test_p10_features() #0 {
+// HASPAIRED: attributes #0 = {
+// HASPAIRED-SAME: +paired-vector-memops
+// NOPAIRED: option '-mpaired-vector-memops' cannot be specified without '-mcpu=pwr10'
+
+// HASPREFIXED: test_p10_features() #0 {
+// HASPREFIXED: attributes #0 = {
+// HASPREFIXED-SAME: +prefix-instrs
+// NOPREFIXED: option '-mprefixed' cannot be specified without '-mcpu=pwr10'
+
+// HASPCREL: test_p10_features() #0 {
+// HASPCREL: attributes #0 = {
+// HASPCREL-SAME: +pcrelative-memops
+// NOPCREL: option '-mpcrel' cannot be specified without '-mcpu=pwr10 -mprefixed'
+
+// HASPCREL-PREFIX: test_p10_features() #0 {
+// HASPCREL-PREFIX: attributes #0 = {
+// HASPCREL-PREFIX-SAME: +pcrelative-memops
+// HASPCREL-PREFIX-SAME: +prefix-instrs
+// NOPCREL-PREFIX: option '-mpcrel' cannot be specified without '-mcpu=pwr10 -mprefixed'
+
Index: clang/lib/Basic/Targets/PPC.cpp
===
--- clang/lib/Basic/Targets/PPC.cpp
+++ clang/lib/Basic/Targets/PPC.cpp
@@ -568,11 +568,33 @@
 return false;
   }
 
-  if (!(ArchDefs & ArchDefinePwr10) &&
-  llvm::is_contained(FeaturesVec, "+mma")) {
-// We have MMA on PPC but not power 10 and above.
-Diags.Report(diag::err_opt_not_valid_with_opt) << "-mmma" << CPU;
-return false;
+  if (!(ArchDefs & ArchDefinePwr10)) {
+if (llvm::find(FeaturesVec, "+mma") != FeaturesVec.end()) {
+  // MMA operations are not available pre-Power10.
+  Diags.Report(diag::err_opt_not_valid_with_opt) << "-mmma" << CPU;
+  return false;
+}
+if (llvm::find(FeaturesVec, "+pcrel") != FeaturesVec.end()) {
+  // PC-Relative instructions are not available pre-Power10,
+  // and these instructions also require prefixed instructions support.
+  Diags.Report(diag::err_opt_not_valid_without_opt)
+  << "-mpcrel"
+  << "-mcpu=pwr10 -mprefixed";
+  return false;
+}
+if (llvm::find(FeaturesVec, "+prefixed") != FeaturesVec.end()) {
+  // Prefixed instructions are not available pre-Power10.
+  Diags.Report(diag::err_opt_not_valid_without_opt) << "-mprefixed"
+  

[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-10-18 Thread Lei Huang via Phabricator via cfe-commits
lei accepted this revision.
lei added a comment.

LGTM
I think you went a bit overkill with the tests for this patch .  Please cut 
down the number of run lines before committing.




Comment at: clang/test/Driver/ppc-p10-features-support-check.c:4
+// RUN:   --check-prefix=HASPAIRED
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mpaired-vector-memops %s -o - | FileCheck %s \

I think you can just use `pwr10` and `power10` in diff run lines if you need, 
but no need to test for both in this case.



Comment at: clang/test/Driver/ppc-p10-features-support-check.c:11
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED

might be an overkill to also test for pwr7/8.  I think pwr9/10 test is enough.



Comment at: clang/test/Driver/ppc-p10-features-support-check.c:19
+// RUN:   --check-prefix=NOPAIRED
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \

same comment for the set of runlines below.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109652/new/

https://reviews.llvm.org/D109652

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-10-08 Thread Amy Kwan via Phabricator via cfe-commits
amyk added a comment.

Ping @lei.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109652/new/

https://reviews.llvm.org/D109652

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-10-01 Thread Amy Kwan via Phabricator via cfe-commits
amyk added a comment.

Ping.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109652/new/

https://reviews.llvm.org/D109652

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-09-24 Thread Amy Kwan via Phabricator via cfe-commits
amyk updated this revision to Diff 374990.
amyk edited the summary of this revision.
amyk added a comment.

Addressed Lei's review comments to output:

  error: option '-mpcrel' cannot be specified without '-mcpu=pwr10 -mprefixed'

when PC-Rel is specified pre-P10.

Also updated the comment for MMA on pre-P10 so it makes more sense and is more 
consistent with the comments I've added.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109652/new/

https://reviews.llvm.org/D109652

Files:
  clang/lib/Basic/Targets/PPC.cpp
  clang/test/Driver/ppc-p10-features-support-check.c

Index: clang/test/Driver/ppc-p10-features-support-check.c
===
--- /dev/null
+++ clang/test/Driver/ppc-p10-features-support-check.c
@@ -0,0 +1,101 @@
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpaired-vector-memops %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPAIRED
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mpaired-vector-memops %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr7 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPREFIXED
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr7 -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpcrel %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mpcrel %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr7 -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpcrel -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL-PREFIX
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mpcrel -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL-PREFIX
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpcrel -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL-PREFIX
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mpcrel -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL-PREFIX
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr7 -mpcrel -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL-PREFIX
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpcrel -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL-PREFIX
+
+int test_p10_features() {
+  return 0;
+}
+

[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-09-20 Thread Lei Huang via Phabricator via cfe-commits
lei added inline comments.



Comment at: clang/lib/Basic/Targets/PPC.cpp:566-569
+  if (llvm::find(FeaturesVec, "+pcrel") != FeaturesVec.end()) {
+Diags.Report(diag::err_opt_not_valid_without_opt) << "-mpcrel"
+  << "-mprefixed";
+  }

I think this need more thought:
```
$ clang -mcpu=pwr9 -mprefixed -mpcrel test.c -o test
error: option '-mpcrel' cannot be specified without '-mprefixed'
error: option '-mprefixed' cannot be specified without '-mcpu=pwr10'

$ clang -mcpu=pwr9 -mpcrel test.c -o test
error: option '-mpcrel' cannot be specified without '-mprefixed'
```

For this, the first err makes not sense since both `-mprefixed` and `-mpcrel` 
is specified:
```
$ clang -mcpu=pwr9 -mprefixed -mpcrel test.c -o test
error: option '-mpcrel' cannot be specified without '-mprefixed'
error: option '-mprefixed' cannot be specified without '-mcpu=pwr10'
```
Shouldn't it just give:
```
$ clang -mcpu=pwr9 -mprefixed -mpcrel test.c -o test
error: option '-mpcrel' cannot be specified without '-mcpu=pwr10 -mprefixed'
```


For this:
```
$ clang -mcpu=pwr9 -mpcrel test.c -o test
error: option '-mpcrel' cannot be specified without '-mprefixed'
```
I think it's better if it says:
```
$ clang -mcpu=pwr9 -mpcrel test.c -o test
error: option '-mpcrel' cannot be specified without '-mcpu=pwr10 -mprefixed'
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109652/new/

https://reviews.llvm.org/D109652

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-09-20 Thread Albion Fung via Phabricator via cfe-commits
Conanap accepted this revision.
Conanap added a comment.
This revision is now accepted and ready to land.

LGTM


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109652/new/

https://reviews.llvm.org/D109652

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D109652: [PowerPC] Restrict various P10 options to P10 only.

2021-09-11 Thread Amy Kwan via Phabricator via cfe-commits
amyk created this revision.
amyk added reviewers: PowerPC, nemanjai, stefanp.
amyk added projects: LLVM, PowerPC.
Herald added subscribers: shchenz, kbarton.
amyk requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

This patch attempts to restrict the following P10 
 options:

  -mprefixed
  -mpcrel
  -mpaired-vector-memops

To P10  only. This will prevent the use of these 
options on P9  and earlier.

The behaviour of this patch looks like the following on pre-P10:

  $ clang -mcpu=pwr9 -mpaired-vector-memops test.c -o test
  error: option '-mpaired-vector-memops' cannot be specified without 
'-mcpu=pwr10'
  
  $ clang -mcpu=pwr9 -mprefixed test.c -o test
  error: option '-mprefixed' cannot be specified without '-mcpu=pwr10'
  
  $ clang -mcpu=pwr9 -mprefixed -mpcrel test.c -o test
  error: option '-mpcrel' cannot be specified without '-mprefixed'
  error: option '-mprefixed' cannot be specified without '-mcpu=pwr10'
  
  $ clang -mcpu=pwr9 -mpcrel test.c -o test
  error: option '-mpcrel' cannot be specified without '-mprefixed'


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D109652

Files:
  clang/lib/Basic/Targets/PPC.cpp
  clang/test/Driver/ppc-p10-features-support-check.c

Index: clang/test/Driver/ppc-p10-features-support-check.c
===
--- /dev/null
+++ clang/test/Driver/ppc-p10-features-support-check.c
@@ -0,0 +1,102 @@
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpaired-vector-memops %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPAIRED
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mpaired-vector-memops %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr7 -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpaired-vector-memops %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPAIRED
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPREFIXED
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr7 -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mprefixed %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPREFIXED
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpcrel %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mpcrel %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr9 -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr8 -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mcpu=pwr7 -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+// RUN: not %clang -target powerpc64le-unknown-linux-gnu -fsyntax-only \
+// RUN:   -mpcrel %s 2>&1 | FileCheck %s \
+// RUN:   --check-prefix=NOPCREL
+
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=pwr10 -mpcrel -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL-PREFIX
+// RUN: %clang -target powerpc64le-unknown-linux-gnu -S -emit-llvm  \
+// RUN:   -mcpu=power10 -mpcrel -mprefixed %s -o - | FileCheck %s \
+// RUN:   --check-prefix=HASPCREL-PREFIX
+// RUN: not %clang