Commit Graph

11042 Commits

Author SHA1 Message Date
Simon Pilgrim 80c5989127 [X86][SHA] Tag SHA instructions scheduler classes
Put these under VecIMul itinerary classes for now - seems to be a good average value


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320161 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-08 16:38:41 +00:00
Gadi Haber 8cfd6d0425 [X86][Haswell]: Updating the scheduling information for the Haswell subtarget.
Updated the scheduling information for the Haswell subtarget with the following changes:

Regrouped the instructions after adding appropriate load + store latencies.
Added scheduling for missing instructions such as the GATHER instrs.
The changes were made after revisiting the latencies impact of all memory uOps.

Reviewers: RKSimon, zvi, craig.topper, apilipenko
Differential Revision: https://reviews.llvm.org/D40021

Change-Id: Iaf6c1f5169add1552845a8a566af4e5a359217a7

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320137 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-08 09:48:44 +00:00
Craig Topper b04a69212c [X86] Handle alls version of vXi1 insert_vector_elt with a constant index without falling back to shuffles.
We previously only supported inserting to the LSB or MSB where it was easy to zero to perform an OR to insert.

This change effectively extracts the old value and the new value, xors them together and then xors that single bit with the correct location in the original vector. This will cancel out the old value in the first xor leaving the new value in the position.

The way I've implemented this uses 3 shifts and two xors and uses an additional register. We can avoid the additional register at the cost of another shift.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320120 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-08 00:16:09 +00:00
Craig Topper 0d51b66397 [X86] Fix InsertBitToMaskVector to only issue KSHIFTS of native size so that upper bits are properly zeroed.
There's no v2i1 or v4i1 kshift, and v8i1 is only supported with AVXDQ. Isel has fake patterns to extend these types to native shifts, but makes no guarantees about the value of any bits shifted in when shifting right.

This patch promotes the vector to a type that supports a native shift first and only allows inserting into the msb of a native sized shift.

I've constructed this in a way that doesn't do the promotion if we're going to fallback to using a xmm/ymm/zmm shuffle. I think I have a plan to remove the shuffle fall back entirely. In which case we this can be simplified, but I wanted to fix the correctness issue first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320081 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 20:10:04 +00:00
Simon Pilgrim e94aa96401 [X86] Tag BMI/BMI2/TBM instructions scheduler classes
Put these under UNARY/BINOP ALU itinerary classes for now - seems to be a good average value

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320064 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 17:37:39 +00:00
Simon Pilgrim 4c084feb99 [X86][TBM] Add TBM scheduling tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320062 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 17:23:00 +00:00
Craig Topper 3c0dce30f1 [X86] Rename function in recently added test case to not be 'main' returning 'void'. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320059 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 17:02:49 +00:00
Simon Pilgrim cb541e30a7 [X86] Tag SALC instructions scheduler class
Treat these the same as LAHF/SAHF (although its not a x86_64 instruction)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320055 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 16:07:06 +00:00
Simon Pilgrim d0c12e6258 [X86] Add LAHF/SAHF scheduling test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320054 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 16:04:20 +00:00
Simon Pilgrim 989d3202bf [X86] Add SALC scheduling test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320052 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 15:46:58 +00:00
Simon Pilgrim a3ea5549cc [X86] Tag LZCNT/TZCNT instructions scheduler classes
Tagged as IMUL instructions for a reasonable approximation (ALU tends to be a lot faster) - POPCNT is currently tagged as FAdd which I think should be replaced with IMUL as well

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320051 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 15:24:14 +00:00
Sanjay Patel c36b1d69e0 [DAGCombiner] eliminate shuffle of insert element
I noticed this pattern in D38316 / D38388. We failed to combine a shuffle that is either 
repeating a scalar insertion at the same position in a vector or translated to a different 
element index.

Like the earlier patch, this could be an instcombine too, but since we opted to make this 
a DAG transform earlier, I've made this one a DAG patch too.

We do not need any legality checking because the new insert is identical to the existing 
insert except that it may have a different constant insertion operand.

The constant insertion test in test/CodeGen/X86/vector-shuffle-combining.ll was the 
motivation for D38756.

Differential Revision: https://reviews.llvm.org/D40209


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320050 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 15:17:58 +00:00
Simon Pilgrim 066502e9ff [X86][FMA] Regenerate fma schedule tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320048 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 14:51:47 +00:00
Simon Pilgrim 1306edd491 [X86] Tag RDRAND/RDSEED instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320045 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 14:18:48 +00:00
Simon Pilgrim 890e64fe11 [X86] Regenerate RDTSC codegen tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320042 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 13:50:29 +00:00
Simon Pilgrim 7d3718531c [X86][RDSEED] Add rdseed scheduling tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320040 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 13:47:17 +00:00
Simon Pilgrim aabfb341de [X86][RDRAND] Add rdrand scheduling tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320039 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 13:46:47 +00:00
Andrew V. Tischenko b21bd46f2d Add proper BTVER2 sched support for MOV instr.
Differential Revision: https://reviews.llvm.org/D40345


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320034 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 11:19:49 +00:00
Francis Visoiu Mistrih fd11bc0813 [CodeGen] Use MachineOperand::print in the MIRPrinter for MO_Register.
Work towards the unification of MIR and debug output by refactoring the
interfaces.

For MachineOperand::print, keep a simple version that can be easily called
from `dump()`, and a more complex one which will be called from both the
MIRPrinter and MachineInstr::print.

Add extra checks inside MachineOperand for detached operands (operands
with getParent() == nullptr).

https://reviews.llvm.org/D40836

* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/kill: ([^ ]+) ([^ ]+)<def> ([^ ]+)/kill: \1 def \2 \3/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/kill: ([^ ]+) ([^ ]+) ([^ ]+)<def>/kill: \1 \2 def \3/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/kill: def ([^ ]+) ([^ ]+) ([^ ]+)<def>/kill: def \1 \2 def \3/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/<def>//g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<kill>/killed \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<imp-use,kill>/implicit killed \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<dead>/dead \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<def[ ]*,[ ]*dead>/dead \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<imp-def[ ]*,[ ]*dead>/implicit-def dead \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<imp-def>/implicit-def \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<imp-use>/implicit \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<internal>/internal \1/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" -o -name "*.s" \) -type f -print0 | xargs -0 sed -i '' -E 's/([^ ]+)<undef>/undef \1/g'

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320022 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-07 10:40:31 +00:00
Simon Pilgrim 5671e842df [X86][AVX512] Tag mask reg op instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319945 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 19:36:00 +00:00
Simon Pilgrim 6b6659a744 [X86][SSE] Regenerate vpmovm2*/vpmov*2m avx512 schedule tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319921 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 18:47:37 +00:00
Simon Pilgrim 1c65bd2d5a [X86][AVX2] Tag MASKMOV instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319915 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 18:24:48 +00:00
Craig Topper 130d6d8471 [X86] Regenerate test for r319778
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319914 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 18:04:39 +00:00
Simon Pilgrim 47aefda7c6 [X86][AVX512] Tag aligned/unaligned move instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319913 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 17:59:26 +00:00
Simon Pilgrim 72e969ff83 [X86][AVX] Regenerate vpmovm2*/vpmov*2m avx512 schedule tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319912 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 17:57:18 +00:00
Simon Pilgrim ba2a499340 [X86][AVX512] Tag BROADCAST instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319900 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 15:48:40 +00:00
Simon Pilgrim ea2f82191e [X86][AVX512] Regenerate vpmovm2*/vpmov*2m avx512 schedule tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319895 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-06 14:07:38 +00:00
Simon Pilgrim 6ba130a469 [X86][AVX512] Tag BLENDM instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319833 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 21:05:25 +00:00
Simon Pilgrim 668022c80f [X86][AVX512] Tag GATHER/SCATTER instruction scheduler classes
NOTE: At the moment these use the WriteLoad/WriteStore classes, which severely underestimates the costs. This needs to be reviewed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319829 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 20:47:11 +00:00
Hans Wennborg e33d953bea Re-commit r319490 "XOR the frame pointer with the stack cookie when protecting the stack"
The patch originally broke Chromium (crbug.com/791714) due to its failing to
specify that the new pseudo instructions clobber EFLAGS. This commit fixes
that.

> Summary: This strengthens the guard and matches MSVC.
>
> Reviewers: hans, etienneb
>
> Subscribers: hiraditya, JDevlieghere, vlad.tsyrklevich, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D40622

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319824 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 20:22:20 +00:00
Simon Pilgrim 952471eaa5 [X86][AVX512] Tag VPTRUNC/VPMOVSX/VPMOVZX instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319815 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 19:21:28 +00:00
Simon Pilgrim 05c71a9ebe [X86][X87] Tag FCMOV instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319804 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 18:01:26 +00:00
Jina Nahias 03b74e4166 [x86][AVX512] Lowering kunpack intrinsics to LLVM IR
This patch, together with a matching clang patch (https://reviews.llvm.org/D39719), implements the lowering of X86 kunpack intrinsics to IR.

Differential Revision: https://reviews.llvm.org/D39720

Change-Id: I4088d9428478f9457f6afddc90bd3d66b3daf0a1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319778 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 15:42:56 +00:00
Simon Pilgrim ee90d36601 [X86][AVX512] Add missing scalar CMPSS/CMPSD logic scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319770 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 14:34:42 +00:00
Simon Pilgrim ac5b6678b7 [X86][AVX512] Cleanup bit logic scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319767 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 14:04:23 +00:00
Simon Pilgrim a327b4b915 [X86][AVX512] Tag scalar CVT and CMP instruction scheduler classes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319765 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 13:49:44 +00:00
Simon Pilgrim f071b970e4 [X86][AVX512] Tag VPCMP/VPCMPU instruction scheduler classes
Move hardcoded itinerary out to the instruction declarations. Not sure that IIC_SSE_ALU_F32P is the best schedule for integer comparisons, but I'm not going to change it right now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319760 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 12:14:36 +00:00
Simon Pilgrim d45b450a96 [X86][AVX512] Cleanup VPCMP scheduler classes
Move hardcoded itinerary out to the instruction declarations. Not sure that IIC_SSE_ALU_F32P is the best schedule for integer comparisons, but I'm not going to change it right now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319758 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 12:02:22 +00:00
Guy Blank 3b3a7b4e28 [X86] Fix a bug in handling GRXX subclasses in Domain Reassignment pass
When trying to determine the correct Mask register class corresponding
to a GPR register class, not all register classes were handled.
This caused an assertion to be raised on some scenarios.

Differential Revision:
https://reviews.llvm.org/D40290

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319745 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 09:08:24 +00:00
Craig Topper 07b0498e27 [X86] Use vector widening to support sign extend from i1 when the dest type is not 512-bits and vlx is not enabled.
Previously we used a wider element type and truncated. But its more efficient to keep the element type and drop unused elements.

If BWI isn't supported and we have a i16 or i8 type, we'll extend it to be i32 and still use a truncate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319740 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 06:37:21 +00:00
Craig Topper 95465ed3d1 [X86] Fix a crash if avx512bw and xop are both enabled when the IR contrains a v32i8 bitreverse.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319737 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 04:47:12 +00:00
Craig Topper eb94f55b0d [X86] Use vector widening to support zero extend from i1 when the dest type is not 512-bits and vlx is not enabled.
Previously we used a wider element type and truncated. But its more efficient to keep the element type and drop unused elements.

If BWI isn't supported and we have a i16 or i8 type, we'll extend it to be i32 and still use a truncate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319728 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 01:45:46 +00:00
Craig Topper 93de9f6cdd [X86] Don't use kunpck for vXi1 concat_vectors if the upper bits are undef.
This can be efficiently selected by a COPY_TO_REGCLASS without the need for an extra instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319726 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 01:28:06 +00:00
Craig Topper fadb00b655 [X86] Use getZeroVector and remove an unnecessary creation of an APInt before calling getConstant. NFCI
The getConstant function can take care of creating the APInt internally.

getZeroVector will take care of using the correct type for the build vector to avoid re-lowering.

The test change here is because execution domain constraints apparently pass through undef inputs of a zeroing xor. So the different ordering of register allocation here caused the dependency to change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319725 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-05 01:28:04 +00:00
Hans Wennborg 206bdbac74 Revert r319490 "XOR the frame pointer with the stack cookie when protecting the stack"
This broke the Chromium build (crbug.com/791714). Reverting while investigating.

> Summary: This strengthens the guard and matches MSVC.
>
> Reviewers: hans, etienneb
>
> Subscribers: hiraditya, JDevlieghere, vlad.tsyrklevich, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D40622
>
> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319490 91177308-0d34-0410-b5e6-96231b3b80d8

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319706 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-04 22:21:15 +00:00
Paul Robinson a61e335ed0 Re-submit r289925 (Update .debug_line section version to match DWARF version)
Set the .debug_line version to match the requested DWARF version,
except with a maximum of v4 because we don't support v5 yet.

Previously Chromium had issues with this patch; see PR31407.  Chromium
tool issues have been addressed, so hopefully this will go through
this time.

Patch by Katya Romanova!

Differential Revision: https://reviews.llvm.org/D38002

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319699 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-04 21:27:46 +00:00
Hans Wennborg 1e96e811d7 DAG: Match truncated rotation (PR35487)
If the truncation has been pushed past the or-node, look through it and
truncate afterwards.

Differential revision: https://reviews.llvm.org/D40792

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319692 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-04 20:39:57 +00:00
Matthias Braun ca3a90446b Add missing triple args to tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319686 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-04 20:08:28 +00:00
Matthias Braun 998cdc4f56 MachineVerifier: undef phi arg doesn't need to be live-out from predecessor
Differential Revision: https://reviews.llvm.org/D40756

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319674 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-04 18:57:48 +00:00
Francis Visoiu Mistrih ca0df55065 [CodeGen] Unify MBB reference format in both MIR and debug output
As part of the unification of the debug format and the MIR format, print
MBB references as '%bb.5'.

The MIR printer prints the IR name of a MBB only for block definitions.

* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E 's/BB#" << ([a-zA-Z0-9_]+)->getNumber\(\)/" << printMBBReference(*\1)/g'
* find . \( -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E 's/BB#" << ([a-zA-Z0-9_]+)\.getNumber\(\)/" << printMBBReference(\1)/g'
* find . \( -name "*.txt" -o -name "*.s" -o -name "*.mir" -o -name "*.cpp" -o -name "*.h" -o -name "*.ll" \) -type f -print0 | xargs -0 sed -i '' -E 's/BB#([0-9]+)/%bb.\1/g'
* grep -nr 'BB#' and fix

Differential Revision: https://reviews.llvm.org/D40422

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319665 91177308-0d34-0410-b5e6-96231b3b80d8
2017-12-04 17:18:51 +00:00