brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · c7d878c Raw
34 lines · plain
1# RUN: llc -mtriple=hexagon -run-pass postra-machine-sink,postrapseudos,if-converter -verify-machineinstrs -o - %s | FileCheck %s2 3# 1. Post-RA machine sinking moves the copy (1) to block %bb.1. The4#    subregisters $r2 and $r3 of $d1 are not removed from the live-ins.5# 2. Expand post-RA pseudos replaces the COPY with A2_tfrp which is6#    predicable.7# 3. If-conversion predicates block %bb.1. Since $d1 (made of $r2 and $r3)8#    is in the live-in list to %bb.1, it assumes that $d1 in (1) is live,9#    and adds an implicit use of $d1 to the predicated copy.10#    This results in an invalid machine code, since the implicit use11#    refers to an undefined register.12 13# Make sure that post-RA machine sinking removes subregisters from live-ins14# to block bb.1.15 16# CHECK: $d1 = A2_tfrpf $p0, $d017# CHECK-NOT: implicit killed $d118 19name: fred20tracksRegLiveness: true21body: |22  bb.0:23    liveins: $d0, $p024    renamable $d1 = COPY $d0                ;; (1)25    J2_jumpt $p0, %bb.2, implicit-def $pc26  bb.1:27    liveins: $r2, $r328    $r0 = A2_addi $r2, 129  bb.2:30    liveins: $r031    A2_nop32    J2_jumpr $r31, implicit-def $pc33...34