| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py |
| # RUN: llc %s -mtriple=riscv64 -run-pass=riscv-cleanup-vsetvli -o - | FileCheck %s |
| |
| # Make sure we don't combine these VSET{I}VLIs in the cleanup pass. We could not |
| # differentiate AVL values if the opcode of the previous one is different from |
| # current one. |
| |
| --- | |
| ; ModuleID = '../llvm/test/CodeGen/RISCV/rvv/add-vsetivli.ll' |
| source_filename = "../llvm/test/CodeGen/RISCV/rvv/add-vsetivli.ll" |
| target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" |
| target triple = "riscv64" |
| |
| define void @cleanup_vsetivli() #0 { |
| ret void |
| } |
| |
| attributes #0 = { "target-features"="+experimental-v" } |
| |
| ... |
| --- |
| name: cleanup_vsetivli |
| alignment: 4 |
| tracksRegLiveness: true |
| registers: |
| - { id: 0, class: gpr } |
| frameInfo: |
| maxAlignment: 1 |
| machineFunctionInfo: {} |
| body: | |
| bb.0 (%ir-block.0): |
| ; CHECK-LABEL: name: cleanup_vsetivli |
| ; CHECK: dead %0:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype |
| ; CHECK: dead %1:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype |
| ; CHECK: dead %3:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype |
| ; CHECK: dead %5:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype |
| ; CHECK: PseudoRET |
| dead %0:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype |
| dead %1:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype |
| dead %2:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype |
| dead %3:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype |
| dead %4:gpr = PseudoVSETVLI $x0, 12, implicit-def $vl, implicit-def $vtype |
| dead %5:gpr = PseudoVSETIVLI 5, 12, implicit-def $vl, implicit-def $vtype |
| PseudoRET |
| |
| ... |