llvm/llvm/test/CodeGen/Hexagon/swp-ws-fail-2.mir

# REQUIRES: asserts
# RUN: llc --march=hexagon %s -run-pass=pipeliner -debug-only=pipeliner \
# RUN: -window-sched=force -filetype=null -verify-machineinstrs 2>&1 \
# RUN: | FileCheck %s

# CHECK: Physical registers are not supported in window scheduling!
# CHECK: The WindowScheduler failed to initialize!

---
name:            exp_approx_top_six
tracksRegLiveness: true
body:             |
  bb.0:
    successors: %bb.2(0x30000000), %bb.1(0x50000000)
    liveins: $r0, $r1, $r2

    %0:intregs = COPY $r2
    %1:intregs = COPY $r1
    %2:intregs = COPY $r0
    %3:predregs = C2_cmpeqi %2, 0
    J2_jumpt killed %3, %bb.2, implicit-def dead $pc
    J2_jump %bb.1, implicit-def dead $pc

  bb.1:
    successors: %bb.3(0x80000000)

    %4:intregs = A2_tfrsi 1065353216
    %5:hvxvr = V6_lvsplatw killed %4
    %6:intregs = A2_tfrsi 1056964608
    %7:hvxvr = V6_lvsplatw killed %6
    %8:intregs = A2_tfrsi 1042983595
    %9:hvxvr = V6_lvsplatw killed %8
    %10:intregs = A2_tfrsi 1026206379
    %11:hvxvr = V6_lvsplatw killed %10
    %12:intregs = A2_tfrsi 1007192201
    %13:hvxvr = V6_lvsplatw killed %12
    %14:intregs = A2_tfrsi 985008993
    %15:hvxvr = V6_lvsplatw killed %14
    %16:intregs = A2_addi %2, 31
    %17:intregs = S2_lsr_i_r %16, 5
    %18:intregs = COPY %17
    J2_loop0r %bb.3, %18, implicit-def $lc0, implicit-def $sa0, implicit-def $usr
    J2_jump %bb.3, implicit-def dead $pc

  bb.2:
    PS_jmpret $r31, implicit-def dead $pc

  bb.3 (machine-block-address-taken):
    successors: %bb.3(0x7c000000), %bb.2(0x04000000)

    %19:intregs = PHI %1, %bb.1, %20, %bb.3
    %21:intregs = PHI %0, %bb.1, %22, %bb.3
    %23:hvxvr, %20:intregs = V6_vL32b_pi %19, 128
    %24:hvxvr = V6_vmpyowh_rnd %23, %23
    %25:hvxvr = V6_vmpyowh_rnd %24, %23
    %26:hvxvr = V6_vmpyowh_rnd %25, %23
    %27:hvxvr = V6_vmpyowh_rnd %26, %23
    %28:hvxvr = V6_vmpyowh_rnd %27, %23
    %29:hvxvr = V6_vmpyowh_rnd %7, %24
    %30:hvxvr = V6_vmpyowh_rnd %9, %25
    %31:hvxvr = V6_vmpyowh_rnd %11, %26
    %32:hvxvr = V6_vmpyowh_rnd %13, %27
    %33:hvxvr = V6_vmpyowh_rnd %15, killed %28
    %34:hvxvr = V6_vaddw %5, %23
    %35:hvxvr = V6_vaddw killed %34, killed %29
    %36:hvxvr = V6_vaddw killed %35, killed %30
    %37:hvxvr = V6_vaddw killed %36, killed %31
    %38:hvxvr = V6_vaddw killed %37, killed %32
    %39:hvxvr = V6_vaddw killed %38, killed %33
    ; To check the implicitly defined phiscal register within loop kernel.
    dead %40:intregs = A2_abssat %18, implicit-def dead $usr_ovf
    %22:intregs = V6_vS32b_pi %21, 128, killed %39
    ENDLOOP0 %bb.3, implicit-def $pc, implicit-def $lc0, implicit $sa0, implicit $lc0
    J2_jump %bb.2, implicit-def dead $pc
...