brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.9 KiB · 5f36d54 Raw
159 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -stress-regalloc=2 -start-before=greedy -stop-after=virtregmap -o - %s | FileCheck %s3 4# Test that a spill of a copy of exec is not folded to be a spill of exec directly.5 6---7 8name:            merge_sgpr_spill_into_copy_from_exec_lo9tracksRegLiveness: true10machineFunctionInfo:11  isEntryFunction: true12body:             |13  bb.0:14    ; CHECK-LABEL: name: merge_sgpr_spill_into_copy_from_exec_lo15    ; CHECK: S_NOP 0, implicit-def $exec_lo16    ; CHECK-NEXT: $sgpr0 = S_MOV_B32 $exec_lo17    ; CHECK-NEXT: $vgpr0 = IMPLICIT_DEF18    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr0, 0, $vgpr019    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 020    ; CHECK-NEXT: S_NOP 0, implicit-def dead renamable $sgpr1, implicit-def dead renamable $sgpr0, implicit killed renamable $sgpr021    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 022    ; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr023    ; CHECK-NEXT: S_SENDMSG 0, implicit $m0, implicit $exec24    S_NOP 0, implicit-def $exec_lo25    %0:sreg_32 = COPY $exec_lo26    S_NOP 0, implicit-def %1:sreg_32, implicit-def %2:sreg_32, implicit %027    $exec_lo = COPY %028    S_SENDMSG 0, implicit $m0, implicit $exec29 30...31---32 33name:            merge_sgpr_spill_into_copy_from_exec_hi34tracksRegLiveness: true35machineFunctionInfo:36  isEntryFunction: true37body:             |38  bb.0:39    ; CHECK-LABEL: name: merge_sgpr_spill_into_copy_from_exec_hi40    ; CHECK: S_NOP 0, implicit-def $exec_hi41    ; CHECK-NEXT: $sgpr0 = S_MOV_B32 $exec_hi42    ; CHECK-NEXT: $vgpr0 = IMPLICIT_DEF43    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr0, 0, $vgpr044    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 045    ; CHECK-NEXT: S_NOP 0, implicit-def dead renamable $sgpr1, implicit-def dead renamable $sgpr0, implicit killed renamable $sgpr046    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 047    ; CHECK-NEXT: $exec_hi = S_MOV_B32 killed $sgpr048    ; CHECK-NEXT: S_SENDMSG 0, implicit $m0, implicit $exec49    S_NOP 0, implicit-def $exec_hi50    %0:sreg_32 = COPY $exec_hi51    S_NOP 0, implicit-def %1:sreg_32, implicit-def %2:sreg_32, implicit %052    $exec_hi = COPY %053    S_SENDMSG 0, implicit $m0, implicit $exec54 55...56---57 58name:            merge_sgpr_spill_into_copy_from_exec59tracksRegLiveness: true60machineFunctionInfo:61  isEntryFunction: true62body:             |63  bb.0:64    ; CHECK-LABEL: name: merge_sgpr_spill_into_copy_from_exec65    ; CHECK: S_NOP 0, implicit-def $exec66    ; CHECK-NEXT: $sgpr0_sgpr1 = S_MOV_B64 $exec67    ; CHECK-NEXT: $vgpr0 = IMPLICIT_DEF68    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr0, 0, $vgpr0, implicit-def $sgpr0_sgpr1, implicit $sgpr0_sgpr169    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr1, 1, $vgpr0, implicit $sgpr0_sgpr170    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0, implicit-def $sgpr0_sgpr171    ; CHECK-NEXT: $sgpr1 = V_READLANE_B32 $vgpr0, 172    ; CHECK-NEXT: S_NOP 0, implicit-def dead renamable $sgpr2_sgpr3, implicit-def dead renamable $sgpr0_sgpr1, implicit killed renamable $sgpr0_sgpr173    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0, implicit-def $sgpr0_sgpr174    ; CHECK-NEXT: $sgpr1 = V_READLANE_B32 $vgpr0, 175    ; CHECK-NEXT: $exec = S_MOV_B64 killed $sgpr0_sgpr176    ; CHECK-NEXT: S_SENDMSG 0, implicit $m0, implicit $exec77    S_NOP 0, implicit-def $exec78    %0:sreg_64 = COPY $exec79    S_NOP 0, implicit-def %1:sreg_64, implicit-def %2:sreg_64, implicit %080    $exec = COPY %081    S_SENDMSG 0, implicit $m0, implicit $exec82 83...84 85# Test that a reload into a copy of exec is not folded to be a reload of exec directly.86 87---88 89name:            reload_sgpr_spill_into_copy_to_exec_lo90tracksRegLiveness: true91machineFunctionInfo:92  isEntryFunction: true93body:             |94  bb.0:95    ; CHECK-LABEL: name: reload_sgpr_spill_into_copy_to_exec_lo96    ; CHECK: S_NOP 0, implicit-def renamable $sgpr0, implicit-def dead renamable $sgpr1, implicit-def $exec_lo97    ; CHECK-NEXT: $vgpr0 = IMPLICIT_DEF98    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr0, 0, $vgpr099    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0100    ; CHECK-NEXT: S_NOP 0, implicit killed renamable $sgpr0, implicit-def dead renamable $sgpr1, implicit-def dead renamable $sgpr0101    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0102    ; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr0103    ; CHECK-NEXT: S_SENDMSG 0, implicit $m0, implicit $exec104    S_NOP 0, implicit-def %0:sreg_32, implicit-def %1:sreg_32, implicit-def $exec_lo105    S_NOP 0, implicit %0, implicit-def %3:sreg_32, implicit-def %4:sreg_32106    $exec_lo = COPY %0107    S_SENDMSG 0, implicit $m0, implicit $exec108 109...110---111 112name:            reload_sgpr_spill_into_copy_to_exec_hi113tracksRegLiveness: true114machineFunctionInfo:115  isEntryFunction: true116body:             |117  bb.0:118    ; CHECK-LABEL: name: reload_sgpr_spill_into_copy_to_exec_hi119    ; CHECK: S_NOP 0, implicit-def renamable $sgpr0, implicit-def dead renamable $sgpr1, implicit-def $exec_hi120    ; CHECK-NEXT: $vgpr0 = IMPLICIT_DEF121    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr0, 0, $vgpr0122    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0123    ; CHECK-NEXT: S_NOP 0, implicit killed renamable $sgpr0, implicit-def dead renamable $sgpr1, implicit-def dead renamable $sgpr0124    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0125    ; CHECK-NEXT: $exec_hi = S_MOV_B32 killed $sgpr0126    ; CHECK-NEXT: S_SENDMSG 0, implicit $m0, implicit $exec127    S_NOP 0, implicit-def %0:sreg_32, implicit-def %1:sreg_32, implicit-def $exec_hi128    S_NOP 0, implicit %0, implicit-def %3:sreg_32, implicit-def %4:sreg_32129    $exec_hi = COPY %0130    S_SENDMSG 0, implicit $m0, implicit $exec131 132...133---134 135name:            reload_sgpr_spill_into_copy_to_exec136tracksRegLiveness: true137machineFunctionInfo:138  isEntryFunction: true139body:             |140  bb.0:141    ; CHECK-LABEL: name: reload_sgpr_spill_into_copy_to_exec142    ; CHECK: S_NOP 0, implicit-def renamable $sgpr0_sgpr1, implicit-def dead renamable $sgpr2_sgpr3, implicit-def $exec143    ; CHECK-NEXT: $vgpr0 = IMPLICIT_DEF144    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr0, 0, $vgpr0, implicit-def $sgpr0_sgpr1, implicit $sgpr0_sgpr1145    ; CHECK-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr1, 1, $vgpr0, implicit $sgpr0_sgpr1146    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0, implicit-def $sgpr0_sgpr1147    ; CHECK-NEXT: $sgpr1 = V_READLANE_B32 $vgpr0, 1148    ; CHECK-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1, implicit-def dead renamable $sgpr2_sgpr3, implicit-def dead renamable $sgpr0_sgpr1149    ; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr0, 0, implicit-def $sgpr0_sgpr1150    ; CHECK-NEXT: $sgpr1 = V_READLANE_B32 $vgpr0, 1151    ; CHECK-NEXT: $exec = S_MOV_B64 killed $sgpr0_sgpr1152    ; CHECK-NEXT: S_SENDMSG 0, implicit $m0, implicit $exec153    S_NOP 0, implicit-def %0:sreg_64, implicit-def %1:sreg_64, implicit-def $exec154    S_NOP 0, implicit %0, implicit-def %3:sreg_64, implicit-def %4:sreg_64155    $exec = COPY %0156    S_SENDMSG 0, implicit $m0, implicit $exec157 158...159