Home | History | Annotate | Download | only in Hexagon
      1 # RUN: llc -march=hexagon -run-pass expand-condsets -o - %s -verify-machineinstrs | FileCheck %s
      2 
      3 # CHECK-LABEL: name: fred
      4 
      5 # Make sure that <def,read-undef> is accounted for when validating moves
      6 # during predication. In the code below, %2.isub_hi is invalidated
      7 # by the C2_mux instruction, and so predicating the A2_addi as an argument
      8 # to the C2_muxir should not happen.
      9 
     10 --- |
     11   define void @fred() { ret void }
     12 
     13 ...
     14 ---
     15 
     16 name: fred
     17 tracksRegLiveness: true
     18 registers:
     19   - { id: 0, class: predregs }
     20   - { id: 1, class: intregs }
     21   - { id: 2, class: doubleregs }
     22   - { id: 3, class: intregs }
     23 liveins:
     24   - { reg: '$p0', virtual-reg: '%0' }
     25   - { reg: '$r0', virtual-reg: '%1' }
     26   - { reg: '$d0', virtual-reg: '%2' }
     27 
     28 body: |
     29   bb.0:
     30     liveins: $r0, $d0, $p0
     31     %0 = COPY $p0
     32     %1 = COPY $r0
     33     %2 = COPY $d0
     34     ; Check that this instruction is unchanged (remains unpredicated)
     35     ; CHECK: %3:intregs = A2_addi %2.isub_hi, 1
     36     %3 = A2_addi %2.isub_hi, 1
     37     undef %2.isub_lo = C2_mux %0, %2.isub_lo, %1
     38     %2.isub_hi = C2_muxir %0, %3, 0
     39 
     40 ...
     41