reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
# RUN: llc -mtriple=amdgcn--amdpal -mcpu=gfx803 -run-pass=simple-register-coalescing -o - %s | FileCheck -check-prefix=GCN %s

# GCN: {{^body}}

---
name: foo
tracksRegLiveness: true
body: |
  bb.0:
    successors: %bb.2
    %0:sreg_32_xm0 = S_MOV_B32 1
    %1:vgpr_32 = COPY %0
    INLINEASM &"; %1", 1, 327690, def %1, 2147483657, %1(tied-def 3)
    %2:sreg_64 = V_CMP_NE_U32_e64 0, %1, implicit $exec
    undef %3.sub0:sgpr_128 = COPY %0
    %3.sub1:sgpr_128 = COPY %0
    %3.sub2:sgpr_128 = COPY %0
    %4:sgpr_128 = COPY %3
    %5:vgpr_32 = V_MOV_B32_e32 -64, implicit $exec
    %6:vreg_128 = COPY %4
    %7:sreg_32_xm0 = S_AND_B32 target-flags(amdgpu-gotprel) 1, %2.sub0, implicit-def dead $scc
    %8:sreg_32_xm0 = S_MOV_B32 0
    %9:vgpr_32 = COPY %5
    %10:vreg_128 = COPY %6
    S_BRANCH %bb.2

  bb.1:
    %11:vgpr_32 = V_OR_B32_e32 %12.sub0, %12.sub1, implicit $exec
    %13:vgpr_32 = V_OR_B32_e32 %11, %12.sub2, implicit $exec
    %14:vgpr_32 = V_AND_B32_e32 1, %13, implicit $exec
    %15:sreg_64_xexec = V_CMP_EQ_U32_e64 0, %14, implicit $exec
    %16:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %15, implicit $exec
    BUFFER_STORE_DWORD_OFFEN_exact %16, undef %17:vgpr_32, undef %18:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable store 4 into constant-pool, align 1, addrspace 4)
    S_ENDPGM 0

  bb.2:
    successors: %bb.3, %bb.4
    %19:sreg_64 = V_CMP_EQ_U32_e64 1, %7, implicit $exec
    %20:sreg_64 = COPY $exec, implicit-def $exec
    %21:sreg_64 = S_AND_B64 %20, %19, implicit-def dead $scc
    $exec = S_MOV_B64_term %21
    SI_MASK_BRANCH %bb.4, implicit $exec
    S_BRANCH %bb.3

  bb.3:
    successors: %bb.4
    undef %22.sub0:sgpr_128 = COPY %8
    %22.sub1:sgpr_128 = COPY %8
    %22.sub2:sgpr_128 = COPY %8
    %23:sgpr_128 = COPY %22
    %24:vreg_128 = COPY %23
    %10:vreg_128 = COPY %24

  bb.4:
    successors: %bb.5
    $exec = S_OR_B64 $exec, %20, implicit-def $scc

  bb.5:
    successors: %bb.7, %bb.6
    S_CBRANCH_SCC0 %bb.7, implicit undef $scc

  bb.6:
    successors: %bb.9
    %12:vreg_128 = COPY %10
    S_BRANCH %bb.9

  bb.7:
    successors: %bb.8, %bb.10
    %25:vgpr_32 = V_AND_B32_e32 target-flags(amdgpu-gotprel32-hi) 1, %10.sub2, implicit $exec
    %26:sreg_64 = V_CMP_EQ_U32_e64 1, %25, implicit $exec
    %27:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    %28:vgpr_32 = COPY %27
    %29:sreg_64 = COPY $exec, implicit-def $exec
    %30:sreg_64 = S_AND_B64 %29, %26, implicit-def dead $scc
    $exec = S_MOV_B64_term %30
    SI_MASK_BRANCH %bb.10, implicit $exec
    S_BRANCH %bb.8

  bb.8:
    successors: %bb.10
    %31:vgpr_32 = BUFFER_LOAD_DWORD_OFFEN undef %32:vgpr_32, undef %33:sgpr_128, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load 4 from constant-pool, align 1, addrspace 4)
    %34:sreg_64_xexec = V_CMP_NE_U32_e64 0, %31, implicit $exec
    %35:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, %34, implicit $exec
    %28:vgpr_32 = COPY %35
    S_BRANCH %bb.10

  bb.9:
    successors: %bb.11
    S_BRANCH %bb.11

  bb.10:
    successors: %bb.9
    $exec = S_OR_B64 $exec, %29, implicit-def $scc
    %36:vgpr_32 = COPY %28
    %37:sreg_64_xexec = V_CMP_NE_U32_e64 0, %36, implicit $exec
    %38:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %37, implicit $exec
    %39:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    undef %40.sub0:vreg_128 = COPY %39
    %40.sub1:vreg_128 = COPY %39
    %40.sub2:vreg_128 = COPY %38
    %41:vreg_128 = COPY %40
    %12:vreg_128 = COPY %41
    S_BRANCH %bb.9

  bb.11:
    successors: %bb.2, %bb.1
    %42:vgpr_32 = V_ADD_I32_e32 32, %9, implicit-def dead $vcc, implicit $exec
    V_CMP_EQ_U32_e32 0, %42, implicit-def $vcc, implicit $exec
    %43:vgpr_32 = COPY %42
    $vcc = S_AND_B64 $exec, killed $vcc, implicit-def dead $scc
    %44:vreg_128 = COPY %12
    %9:vgpr_32 = COPY %43
    %10:vreg_128 = COPY %44
    S_CBRANCH_VCCNZ %bb.1, implicit killed $vcc
    S_BRANCH %bb.2
...