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
# RUN: llc -march hexagon -run-pass livevars -run-pass twoaddressinstruction  -verify-machineinstrs -o - %s | FileCheck %s


###############################################################################

---
name:            test1
tracksRegLiveness: true
body:             |
  bb.0.entry:
    liveins: $d0

    %0:doubleregs = COPY killed $d0
    %1:intregs = S2_lsr_i_r_acc %0.isub_lo, %0.isub_lo, 16

...

# Verify that both uses if %0.isub_lo are replaced here.
# (we used to get %1:intregs = S2_lsr_i_r_acc %1, %1.isub_lo, 16)
#
# CHECK-LABEL: name:            test1
# CHECK:  bb.0.entry:
# CHECK:      %0:doubleregs = COPY killed $d0
# CHECK-NEXT: %1:intregs = COPY killed %0.isub_lo
# CHECK-NEXT: %1:intregs = S2_lsr_i_r_acc %1, %1, 16


###############################################################################

---
name:            test2
tracksRegLiveness: true
body:             |
  bb.0.entry:
    liveins: $d0

    %0:doubleregs = COPY killed $d0
    %1:intregs = S2_lsr_i_r_acc %0.isub_lo, %0.isub_hi, 16

...

# Verify that the use of %0.isub_hi isn't replaced here.
# (we used to get %1:intregs = S2_lsr_i_r_acc %1, %1.isub_hi, 16)
#
# We also used to get an incorrect "killed" for %0 in the second COPY.
# So we verify that we do not get machine verifier complaints here.
# An improvement could be to get a "killed" attribute on the last
# use of %0.isub_hi, but we do not need it for the IR to be valid.
#
# CHECK-LABEL: name:            test2
# CHECK:  bb.0.entry:
# CHECK:      %0:doubleregs = COPY killed $d0
# CHECK-NEXT: %1:intregs = COPY %0.isub_lo
# CHECK-NEXT: %1:intregs = S2_lsr_i_r_acc %1, %0.isub_hi, 16

###############################################################################