107 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=machine-scheduler -o - %s | FileCheck %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -passes=machine-scheduler -o - %s | FileCheck %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=machine-scheduler -o - %s | FileCheck %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -passes=machine-scheduler -o - %s | FileCheck %s6# Make sure FP mode is not a hard scheduling boundary7 8---9name: denorm_mode_not_barrier10tracksRegLiveness: true11body: |12 bb.0:13 liveins: $vgpr0_vgpr114 15 ; CHECK-LABEL: name: denorm_mode_not_barrier16 ; CHECK: liveins: $vgpr0_vgpr117 ; CHECK-NEXT: {{ $}}18 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr119 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))20 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))21 ; CHECK-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[GLOBAL_LOAD_DWORD1]], implicit $exec22 ; CHECK-NEXT: S_DENORM_MODE 0, implicit-def $mode, implicit $mode23 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_ADD_U32_e32_]]24 %0:vreg_64 = COPY $vgpr0_vgpr125 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))26 S_DENORM_MODE 0, implicit-def $mode, implicit $mode27 %2:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))28 %3:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec29 S_ENDPGM 0, implicit %330...31 32---33name: round_mode_not_barrier34tracksRegLiveness: true35body: |36 bb.0:37 liveins: $vgpr0_vgpr138 39 ; CHECK-LABEL: name: round_mode_not_barrier40 ; CHECK: liveins: $vgpr0_vgpr141 ; CHECK-NEXT: {{ $}}42 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr143 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))44 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))45 ; CHECK-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[GLOBAL_LOAD_DWORD1]], implicit $exec46 ; CHECK-NEXT: S_ROUND_MODE 0, implicit-def $mode, implicit $mode47 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_ADD_U32_e32_]]48 %0:vreg_64 = COPY $vgpr0_vgpr149 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))50 S_ROUND_MODE 0, implicit-def $mode, implicit $mode51 %2:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))52 %3:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec53 S_ENDPGM 0, implicit %354...55 56---57name: denorm_mode_mode_def_use58tracksRegLiveness: true59body: |60 bb.0:61 liveins: $vgpr0_vgpr162 63 ; CHECK-LABEL: name: denorm_mode_mode_def_use64 ; CHECK: liveins: $vgpr0_vgpr165 ; CHECK-NEXT: {{ $}}66 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr167 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))68 ; CHECK-NEXT: dead [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))69 ; CHECK-NEXT: S_DENORM_MODE 0, implicit-def $mode, implicit $mode70 ; CHECK-NEXT: [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 0, [[GLOBAL_LOAD_DWORD]], implicit $mode, implicit $exec71 ; CHECK-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[V_ADD_F32_e32_]], implicit $exec72 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_ADD_F32_e32_]], implicit [[V_ADD_U32_e32_]]73 %0:vreg_64 = COPY $vgpr0_vgpr174 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))75 S_DENORM_MODE 0, implicit-def $mode, implicit $mode76 %2:vgpr_32 = V_ADD_F32_e32 0, %1, implicit $mode, implicit $exec77 %3:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))78 %4:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec79 S_ENDPGM 0, implicit %2, implicit %480...81 82---83name: round_mode_mode_def_use84tracksRegLiveness: true85body: |86 bb.0:87 liveins: $vgpr0_vgpr188 89 ; CHECK-LABEL: name: round_mode_mode_def_use90 ; CHECK: liveins: $vgpr0_vgpr191 ; CHECK-NEXT: {{ $}}92 ; CHECK-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr193 ; CHECK-NEXT: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, implicit $exec :: (load (s32))94 ; CHECK-NEXT: dead [[GLOBAL_LOAD_DWORD1:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 4, 0, implicit $exec :: (load (s32))95 ; CHECK-NEXT: S_ROUND_MODE 0, implicit-def $mode, implicit $mode96 ; CHECK-NEXT: [[V_ADD_F32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_F32_e32 0, [[GLOBAL_LOAD_DWORD]], implicit $mode, implicit $exec97 ; CHECK-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 [[GLOBAL_LOAD_DWORD]], [[V_ADD_F32_e32_]], implicit $exec98 ; CHECK-NEXT: S_ENDPGM 0, implicit [[V_ADD_F32_e32_]], implicit [[V_ADD_U32_e32_]]99 %0:vreg_64 = COPY $vgpr0_vgpr1100 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32))101 S_ROUND_MODE 0, implicit-def $mode, implicit $mode102 %2:vgpr_32 = V_ADD_F32_e32 0, %1, implicit $mode, implicit $exec103 %3:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32))104 %4:vgpr_32 = V_ADD_U32_e32 %1, %2, implicit $exec105 S_ENDPGM 0, implicit %2, implicit %4106...107