LLVM/project 63605c6 — llvm/lib/Target/AMDGPU AMDGPUBufferUtils.h GCNFeatures.td, llvm/test/CodeGen/AMDGPU lower-buffer-fat-pointers-oob-fold.ll

Major refactoring and inclusion of addr(7)

- Moved the checks into new file AMDGPUBufferUtils and use it from
  InstCombine and LowerBufferFatPointers. Also shuffled the checks
  so that cheaper checks are in starting.
- Changed OOB Model name based on characteristics (removed gfx version
  naming of OOB Model)i as well as readable -mattr=help description.
- Bail on num_records wider than the hardware field.
DeltaFile
+230-230llvm/test/Transforms/InstCombine/AMDGPU/fold-oob-raw-buffer.ll
+258-0llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-oob-fold.ll
+97-0llvm/lib/Target/AMDGPU/AMDGPUBufferUtils.cpp
+5-78llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+22-18llvm/lib/Target/AMDGPU/GCNFeatures.td
+35-0llvm/lib/Target/AMDGPU/AMDGPUBufferUtils.h
+647-3265 files not shown
+678-37011 files

LLVM/project 7e464ae — llvm/lib/Target/SystemZ SystemZ.h SystemZTargetMachine.cpp, llvm/test/CodeGen/SystemZ newpm-pipeline.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+174-0llvm/lib/Target/SystemZ/SystemZCodeGenPassBuilder.cpp
+139-0llvm/test/CodeGen/SystemZ/newpm-pipeline.ll
+20-0llvm/lib/Target/SystemZ/SystemZPassRegistry.def
+6-5llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
+9-2llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
+8-2llvm/lib/Target/SystemZ/SystemZ.h
+356-92 files not shown
+366-98 files

LLVM/project f015c05 — llvm/lib/Target/SystemZ SystemZTargetMachine.cpp SystemZ.h, llvm/test/CodeGen/SystemZ newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+175-0llvm/lib/Target/SystemZ/SystemZCodeGenPassBuilder.cpp
+141-0llvm/test/CodeGen/SystemZ/newpm-pipeline.ll
+19-7llvm/lib/Target/SystemZ/SystemZAlignGlobals.cpp
+26-0llvm/lib/Target/SystemZ/SystemZPassRegistry.def
+19-4llvm/lib/Target/SystemZ/SystemZ.h
+8-6llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
+388-173 files not shown
+407-199 files

LLVM/project add398e — lld/ELF InputFiles.h InputFiles.cpp

[ELF] Remove unused ignoreComdats parameter and ekind dispatchers. NFC (#240269)

PR #207437 removed the only call site of `ignoreComdats`.
The callers of initSectionsAndLocalSyms and postParse are in link<ELFT>,
so call them directly instead of dispatching on ekind.
DeltaFile
+8-42lld/ELF/Driver.cpp
+3-6lld/ELF/InputFiles.cpp
+2-3lld/ELF/InputFiles.h
+13-513 files

LLVM/project bf0fbf0 — llvm/lib/Transforms/Vectorize LoopVectorizationLegality.cpp LoopVectorize.cpp, llvm/test/Transforms/LoopVectorize early_exit_store_legality.ll early-exit-tail-folding.ll

[VPlan] Allow tail folding early exits with side effects

Continues the work in #179595.

This allows us to tail fold e.g. the following loop:

```c
extern char a[1024], b[1024], c[1024], y[1024];
void two_guards(void) {
  for (int i = 0; i < 1000; i++) {
    if (a[i] == 0)
      break;
    if (b[i] > 3) {
      if (c[i] < 9)
        y[i] = 1;
    }
  }
}
```

    [30 lines not shown]
DeltaFile
+40-70llvm/test/Transforms/LoopVectorize/early-exit-tail-folding.ll
+24-41llvm/test/Transforms/LoopVectorize/RISCV/early_exit_with_stores.ll
+18-35llvm/test/Transforms/LoopVectorize/RISCV/early-exit.ll
+24-0llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+0-7llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+2-2llvm/test/Transforms/LoopVectorize/early_exit_store_legality.ll
+108-1552 files not shown
+111-1578 files

LLVM/project 59fc02e — llvm/test/Transforms/LoopVectorize early-exit-tail-folding.ll

Precommit tests
DeltaFile
+214-153llvm/test/Transforms/LoopVectorize/early-exit-tail-folding.ll
+214-1531 files

LLVM/project 0a8d310 — llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlanLowering.cpp

[VPlan] Lower MaskedCond earlier in the predicator. NFC

A MaskedCond is used to logically-and some condition with the current block in mask.

It's currently lowered in convertToConcreteRecipes but we can just do it earlier in VPlanPredicator, which removes the need for the separate fold in simplifyRecipe. It also enables more logical-and simplifications earlier on.
DeltaFile
+13-1llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+0-11llvm/lib/Transforms/Vectorize/VPlanLowering.cpp
+0-5llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+13-173 files

LLVM/project 86866e4 — llvm/test/Transforms/LoopVectorize early-exit-tail-folding-active-lane-mask.ll early-exit-tail-folding.ll, llvm/test/Transforms/LoopVectorize/RISCV early-exit.ll

Precommit tests
DeltaFile
+552-0llvm/test/Transforms/LoopVectorize/RISCV/early-exit.ll
+524-0llvm/test/Transforms/LoopVectorize/early-exit-tail-folding.ll
+65-0llvm/test/Transforms/LoopVectorize/early-exit-tail-folding-active-lane-mask.ll
+1,141-03 files

LLVM/project 3df680b — llvm/lib/Transforms/Vectorize VPlanConstruction.cpp, llvm/test/Transforms/LoopVectorize multiple-early-exits.ll early-exit-tail-folding.ll

[VPlan] Support tail folding uncountable early exits

Enables the first step towards #179595. After #237254, the MaskedHandleExitInVectorLoop early exit style uses the CFG to handle masking for early exit loops. This allows it to compose with tail folding which is also handled via the CFG in #176143.

This allows us to tail fold the following loop:

```c
extern char x[256];
int f(char * restrict y) {
  for (int i = 0; i < 256; i++) {
    if (x[i] == 0)
      return i;
  }
  return -1;
}
```

Into this on RISC-V:


    [18 lines not shown]
DeltaFile
+91-164llvm/test/Transforms/LoopVectorize/RISCV/early-exit-live-out.ll
+77-149llvm/test/Transforms/LoopVectorize/RISCV/early-exit.ll
+54-105llvm/test/Transforms/LoopVectorize/early-exit-tail-folding.ll
+108-16llvm/test/Transforms/LoopVectorize/multiple-early-exits.ll
+20-37llvm/test/Transforms/LoopVectorize/RISCV/sink-to-early-exit.ll
+32-18llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+382-4894 files not shown
+414-49710 files

LLVM/project 456281d — llvm/lib/Transforms/Vectorize VPlan.h VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize early_exit_with_stores.ll

[VPlan] Allow early exit loops with side effects by masking in the vector loop.

When all blocks with side effects are dominated by every early exit, we can vectorize the loop if we mask off any lanes past the exit. We can do this with control flow:

```mermaid
flowchart TD
  header --> exiting
  exiting -->| exit mask | sideeffects --> latch --> latch.split
  exiting -->| !exit mask | latch.split
```

For every early exiting block we add a branch to the latch on `!mask.beforefirst(exitcond)`. This is implemented in UncountableExitStyle::ReadOnly which is now renamed to MaskedHandleExitInVectorLoop.

This is a complementary exit style to MaskedHandleExitInScalarLoop. If any of the side effects aren't dominated by the early exit it still falls back to the scalar loop style, which is why none of the existing early exit side effect tests changed. Masking in loop is profitable for RISC-V and I'm assuming it's also profitable for AArch64 too, but if not then we can add a TTI hook for a preferred exit style.
DeltaFile
+59-76llvm/test/Transforms/LoopVectorize/early_exit_with_stores.ll
+86-33llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+10-9llvm/test/Transforms/LoopVectorize/X86/early_exit_with_stores.ll
+8-7llvm/test/Transforms/LoopVectorize/RISCV/early_exit_with_stores.ll
+5-4llvm/lib/Transforms/Vectorize/VPlan.h
+3-2llvm/unittests/Transforms/Vectorize/VPlanVerifierTest.cpp
+171-1312 files not shown
+176-1338 files

LLVM/project a2c0de1 — llvm/test/Transforms/LoopVectorize early_exit_with_stores.ll

Precommit tests
DeltaFile
+221-0llvm/test/Transforms/LoopVectorize/early_exit_with_stores.ll
+221-01 files

LLVM/project 29490e8 — llvm/lib/Transforms/Vectorize VPlanConstruction.cpp LoopVectorize.cpp

[VPlan] Use vputils::findCanonicalIVIncrement in more places. NFC

In a future patch we want to enable more scenarios with early exits and tail folding. In these scenarios the terminator will no longer be a BranchOnCount/BranchOnCond but a BranchOnTwoConds, so a bunch of canonical IV matchers break. Use vputils::findCanonicalIVIncrement instead since it searches the users of the canonical IV instead of looking at the terminator.
DeltaFile
+7-13llvm/lib/Transforms/Vectorize/VPlanEVLTailFolding.cpp
+2-9llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+2-8llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+11-303 files

LLVM/project c491eea — llvm/lib/Transforms/Vectorize VPlanVerifier.cpp VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize predicated-single-exit.ll predicated-early-exits-interleave.ll

[VPlan] Preserve SSA in early exit loops

MaskedCond is used to logically-and the condition to early exit with the current block in-mask. However because we use it in the latch block where the condition isn't defined on all paths, we have to workaround it not being in SSA in the verifier.

This fixes this by using reconstructSSA added in #212209 to preserve SSA in both the exit conditions and live outs in the exit blocks. It also means we get the right exit condition without MaskedCond and allows us to remove the MaskedCond exceptions in the verifier. MaskedCond is still kept since a followup PR will still use it.

One subtle point is that we need to freeze any branch conditions. Any lanes after and including the early exiting lane might contain poison and we can have branches on those poison lanes that didn't we didn't previously branch on in the scalar loop.

There's no miscompile on main today because we coincidentally don't keep SSA so exit conditions are read directly without being polluted by poison stemming from a branch past the early exit. But in this PR the exit conditions are polluted and we can end up with poison in the condition operand of a select, which causes an undefined result for AnyOf even if it freezes its operand. The poison in the branch will also cause problems in future if we decide to preserve uniform control flow and emit branches instead of blends. The exit_cond_merged_after_poison_branch test illustrates this.
DeltaFile
+156-36llvm/test/Transforms/LoopVectorize/predicated-multiple-exits.ll
+24-16llvm/test/Transforms/LoopVectorize/predicated-early-exits-interleave.ll
+26-9llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-18llvm/lib/Transforms/Vectorize/VPlanVerifier.cpp
+12-6llvm/test/Transforms/LoopVectorize/predicated-single-exit.ll
+219-855 files

LLVM/project 17877ee — llvm/lib/Transforms/Vectorize VPlanPredicator.cpp, llvm/test/Transforms/LoopVectorize uniform-blend.ll select-cmp-blend-chain.ll

[VPlan] Peek through nested phi incoming values in computeBlendMasks
DeltaFile
+495-0llvm/test/Transforms/LoopVectorize/predicator.ll
+389-6llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+80-11llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+81-0llvm/test/Transforms/LoopVectorize/find-last.ll
+13-3llvm/test/Transforms/LoopVectorize/select-cmp-blend-chain.ll
+3-12llvm/test/Transforms/LoopVectorize/uniform-blend.ll
+1,061-326 files

LLVM/project 2795486 — llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize blend-i1.ll

[VPlan] Simplify BLEND X/M, false, ..., false -> M && X

If an i1 blend has false for all but one incoming value, then we can simplify this to the one non-false value. Blends by construction never have any overlapping mask values, so we don't need to worry about the order as the masks can't "shortcut" each other.
DeltaFile
+13-0llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+3-8llvm/test/Transforms/LoopVectorize/blend-i1.ll
+16-82 files

LLVM/project 0fe49d6 — llvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize interleave_uncountable_exits.ll

[VPlan] Move extract-lane(0, canWideIV) combine before unrolling

Some extract-lane combines can't be performed before unrolling, e.g. the one that combines it to Instruction::ExtractElement can end up extracting from a different part. But the extract-lane(0, canWideIV) can because at index 0 you're always extracting from the first part. Do this before unrolling, which improves codegen of unrolled code.
DeltaFile
+5-80llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores.ll
+16-24llvm/test/Transforms/LoopVectorize/VPlan/early_exit_with_stores_vplan.ll
+4-12llvm/test/Transforms/LoopVectorize/interleave_uncountable_exits.ll
+6-6llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-8llvm/test/Transforms/PhaseOrdering/AArch64/countable-and-uncountable-exits-combined.ll
+32-1305 files

LLVM/project bdba46a — llvm/test/Transforms/LoopVectorize blend-i1.ll

Precommit tests
DeltaFile
+69-0llvm/test/Transforms/LoopVectorize/blend-i1.ll
+69-01 files

LLVM/project 791496a — llvm/lib/Transforms/Vectorize LoopVectorize.cpp VPlanUnroll.cpp, llvm/test/Transforms/LoopVectorize interleave_uncountable_exits.ll

[VPlan] Support interleaving early exit loops with side effects

We couldn't do this on main previously because the exit mask `active-lane-mask(0, FirstActiveLane(Cond))` doesn't get unrolled properly across parts. Now that we use mask.beforefirst we can unroll it properly in a chain. The unrolled form is:

    unroll(mask.beforefirst, P) = mask.beforefirst(cond[P] | broadcast(anyof(not(unroll(mask.beforefirst, P-1)))))

On AArch64 this can be combined to brkpb in another patch.
DeltaFile
+216-15llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores.ll
+106-7llvm/test/Transforms/LoopVectorize/interleave_uncountable_exits.ll
+35-4llvm/test/Transforms/PhaseOrdering/AArch64/countable-and-uncountable-exits-combined.ll
+10-0llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp
+10-0llvm/lib/Transforms/Vectorize/VPlanLowering.cpp
+0-9llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+377-356 files

LLVM/project 6c315bb — llvm/lib/Transforms/Vectorize VPlan.h VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/VPlan early_exit_with_stores_vplan.ll

Emit VPWidenIntrinsicRecipe
DeltaFile
+56-56llvm/test/Transforms/LoopVectorize/VPlan/early_exit_with_stores_vplan.ll
+0-21llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+9-0llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+2-2llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+0-3llvm/lib/Transforms/Vectorize/VPlan.h
+67-825 files

LLVM/project 5579108 — llvm/lib/Transforms/Vectorize VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize early_exit_combined_exits.ll early_exit_with_stores.ll

[VPlan] Use llvm.mask.beforefirst for computing early exit mask

This makes the cost more accurate and improves codegen for RISC-V. The codegen for an early exit loop with side effects then goes from:

    .LBB0_3:                                # %vector.body
                                            # =>This Inner Loop Header: Depth=1
        vl1r.v  v16, (a3)
        vsetvli zero, zero, e8, m1, ta, ma
        vmseq.vi        v16, v16, 0
        vfirst.m        a7, v16
        srli    t0, a7, 63
        czero.nez       a7, a7, t0
        czero.eqz       t0, a1, t0
        or      a7, t0, a7
        vsetvli zero, zero, e64, m8, ta, ma
        vmsltu.vx       v0, v8, a7
        vle8.v  v17, (a5), v0.t
        vcpop.m t1, v16
        vsetvli zero, zero, e8, m1, ta, ma

    [22 lines not shown]
DeltaFile
+50-50llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores.ll
+40-40llvm/test/Transforms/LoopVectorize/VPlan/early_exit_with_stores_vplan.ll
+23-23llvm/test/Transforms/LoopVectorize/RISCV/early_exit_with_stores.ll
+18-18llvm/test/Transforms/LoopVectorize/early_exit_with_stores.ll
+21-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+8-8llvm/test/Transforms/LoopVectorize/early_exit_combined_exits.ll
+160-1398 files not shown
+183-16114 files

LLVM/project 8e791c9 — llvm/lib/Transforms/Vectorize VPlanPredicator.cpp, llvm/test/Transforms/LoopVectorize predicator.ll

[VPlan] Skip poison incoming values computeBlendEdges (#237121)

A poison value can be replaced with anything, so we don't need to create
an incoming value for it when converting
phis to blends.
DeltaFile
+83-0llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+71-1llvm/test/Transforms/LoopVectorize/predicator.ll
+2-0llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+156-13 files

LLVM/project cbf54d6 — clang/lib/Driver Driver.cpp Job.cpp, clang/test/Driver cc1-spawnprocess.c in-process-multiple-cc1-crash.c

[clang] Support multiple in-process cc1 jobs in a ToolSession (#222531)

Please read: [RFC: Embeddable LLVM tool drivers for long-lived
hosts](https://discourse.llvm.org/t/rfc-embeddable-llvm-tool-drivers-for-long-lived-hosts/91754)
and the section on [`InitLLVM`
ownership](https://discourse.llvm.org/t/rfc-embeddable-llvm-tool-drivers-for-long-lived-hosts/91754#p-367966-why-initllvm-ownership-matters-7).

Builds on #221996, which introduced `ToolSession`.

Clang already supports invoking a single `cc1` job in-process. However,
when a compilation contains multiple frontend jobs, it currently falls
back to spawning each one as a separate process.

This patch allows a Clang driver owned by a `ToolSession` to execute
multiple `cc1` jobs through Clang's existing in-process callback:

```text
one ToolSession
      │

    [32 lines not shown]
DeltaFile
+68-0clang/test/Driver/in-process-multiple-cc1.c
+23-17clang/tools/driver/cc1_main.cpp
+20-0clang/test/Driver/in-process-multiple-cc1-crash.c
+8-5clang/lib/Driver/Job.cpp
+7-5clang/lib/Driver/Driver.cpp
+7-4clang/test/Driver/cc1-spawnprocess.c
+133-319 files not shown
+175-4115 files

LLVM/project 74760a0 — llvm/lib/Target/SystemZ SystemZ.h SystemZTargetMachine.cpp, llvm/test/CodeGen/SystemZ newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+174-0llvm/lib/Target/SystemZ/SystemZCodeGenPassBuilder.cpp
+139-0llvm/test/CodeGen/SystemZ/newpm-pipeline.ll
+20-0llvm/lib/Target/SystemZ/SystemZPassRegistry.def
+6-5llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
+9-2llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
+8-2llvm/lib/Target/SystemZ/SystemZ.h
+356-92 files not shown
+366-98 files

LLVM/project 8b30731 — llvm/lib/Target/SystemZ SystemZTargetMachine.cpp SystemZ.h

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+9-2llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
+8-2llvm/lib/Target/SystemZ/SystemZ.h
+2-1llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
+19-53 files

LLVM/project 320612d — llvm/lib/Target/SystemZ SystemZ.h

fix

Created using spr 1.3.7
DeltaFile
+1-1llvm/lib/Target/SystemZ/SystemZ.h
+1-11 files

LLVM/project f9fc525 — lld/ELF MarkLive.cpp

[ELF] markLive: Merge getAddend overloads and skip dead instantiations. NFC (#240266)
DeltaFile
+16-28lld/ELF/MarkLive.cpp
+16-281 files

LLVM/project 3a53076 — llvm/lib/Target/SystemZ SystemZTargetMachine.cpp SystemZ.h

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+9-2llvm/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
+8-2llvm/lib/Target/SystemZ/SystemZ.h
+2-1llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
+19-53 files

LLVM/project 5b50dee — llvm/include/llvm/LTO Config.h, llvm/lib/LTO LTOBackend.cpp

[LTO] Remove PreCodeGenPassesHook

This is unused in-tree after 74e4694b8cbd and it seems like there are no
users in public open source. This also makes porting to the NewPM
slightly more complicated if we want to preserve the functionality (for
which there are also no tests).

Reviewers: MaskRay, teresajohnson

Pull Request: https://github.com/llvm/llvm-project/pull/240236
DeltaFile
+0-2llvm/lib/LTO/LTOBackend.cpp
+0-2llvm/include/llvm/LTO/Config.h
+0-42 files

LLVM/project 13d13c0 — llvm/lib/CodeGen MachineVerifier.cpp, llvm/test/CodeGen/AMDGPU si-fold-operands-bundle.mir

MachineVerifier: Remove dead virtual register kill tracking (#240017)

Kill flags on virtual registers are now rejected, so the per-block
tracking of killed virtual registers can never report anything
new. Physical register kills are handled separately.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+9-30llvm/lib/CodeGen/MachineVerifier.cpp
+5-6llvm/test/CodeGen/AMDGPU/si-fold-operands-bundle.mir
+14-362 files

LLVM/project eaba57b — llvm/lib/Target/RISCV RISCVRegisterInfo.h RISCVRegisterInfo.cpp, llvm/test/CodeGen/RISCV csr-first-use-cost.ll exception-pointer-register.ll

[RISCV] Return true from enableCSRFirstTimeMinCost
DeltaFile
+14-22llvm/test/CodeGen/RISCV/exception-pointer-register.ll
+9-9llvm/test/CodeGen/RISCV/csr-first-use-cost.ll
+5-0llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp
+2-0llvm/lib/Target/RISCV/RISCVRegisterInfo.h
+30-314 files