141 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GFX9 %s3# RUN: llc -mtriple=amdgcn -mcpu=fiji -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=VI %s4# RUN: llc -mtriple=amdgcn -mcpu=hawaii -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=CI %s5# RUN: llc -mtriple=amdgcn -mcpu=tahiti -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=SI %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GFX10 %s7# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -verify-machineinstrs -run-pass post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GFX10 %s8 9---10name: m0_gws_init011tracksRegLiveness: true12body: |13 14 bb.0:15 liveins: $vgpr016 ; GFX9-LABEL: name: m0_gws_init017 ; GFX9: liveins: $vgpr018 ; GFX9-NEXT: {{ $}}19 ; GFX9-NEXT: $m0 = S_MOV_B32 -120 ; GFX9-NEXT: S_NOP 021 ; GFX9-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec22 ;23 ; VI-LABEL: name: m0_gws_init024 ; VI: liveins: $vgpr025 ; VI-NEXT: {{ $}}26 ; VI-NEXT: $m0 = S_MOV_B32 -127 ; VI-NEXT: S_NOP 028 ; VI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec29 ;30 ; CI-LABEL: name: m0_gws_init031 ; CI: liveins: $vgpr032 ; CI-NEXT: {{ $}}33 ; CI-NEXT: $m0 = S_MOV_B32 -134 ; CI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec35 ;36 ; SI-LABEL: name: m0_gws_init037 ; SI: liveins: $vgpr038 ; SI-NEXT: {{ $}}39 ; SI-NEXT: $m0 = S_MOV_B32 -140 ; SI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec41 ;42 ; GFX10-LABEL: name: m0_gws_init043 ; GFX10: liveins: $vgpr044 ; GFX10-NEXT: {{ $}}45 ; GFX10-NEXT: $m0 = S_MOV_B32 -146 ; GFX10-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec47 $m0 = S_MOV_B32 -148 DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec49 50...51 52---53name: m0_gws_init154tracksRegLiveness: true55body: |56 57 bb.0:58 ; GFX9-LABEL: name: m0_gws_init159 ; GFX9: $vgpr0 = V_MOV_B32_e32 0, implicit $exec60 ; GFX9-NEXT: $m0 = S_MOV_B32 -161 ; GFX9-NEXT: S_NOP 062 ; GFX9-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec63 ;64 ; VI-LABEL: name: m0_gws_init165 ; VI: $vgpr0 = V_MOV_B32_e32 0, implicit $exec66 ; VI-NEXT: $m0 = S_MOV_B32 -167 ; VI-NEXT: S_NOP 068 ; VI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec69 ;70 ; CI-LABEL: name: m0_gws_init171 ; CI: $vgpr0 = V_MOV_B32_e32 0, implicit $exec72 ; CI-NEXT: $m0 = S_MOV_B32 -173 ; CI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec74 ;75 ; SI-LABEL: name: m0_gws_init176 ; SI: $vgpr0 = V_MOV_B32_e32 0, implicit $exec77 ; SI-NEXT: $m0 = S_MOV_B32 -178 ; SI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec79 ;80 ; GFX10-LABEL: name: m0_gws_init181 ; GFX10: $vgpr0 = V_MOV_B32_e32 0, implicit $exec82 ; GFX10-NEXT: $m0 = S_MOV_B32 -183 ; GFX10-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec84 $vgpr0 = V_MOV_B32_e32 0, implicit $exec85 $m0 = S_MOV_B32 -186 DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec87 88...89 90# Test a typical situation where m0 needs to be set from a VGPR91# through readfirstlane92---93name: m0_gws_readlane94tracksRegLiveness: true95body: |96 97 bb.0:98 liveins: $vgpr0, $vgpr199 100 ; GFX9-LABEL: name: m0_gws_readlane101 ; GFX9: liveins: $vgpr0, $vgpr1102 ; GFX9-NEXT: {{ $}}103 ; GFX9-NEXT: $sgpr0 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec104 ; GFX9-NEXT: $m0 = S_MOV_B32 $sgpr0105 ; GFX9-NEXT: S_NOP 0106 ; GFX9-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec107 ;108 ; VI-LABEL: name: m0_gws_readlane109 ; VI: liveins: $vgpr0, $vgpr1110 ; VI-NEXT: {{ $}}111 ; VI-NEXT: $sgpr0 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec112 ; VI-NEXT: $m0 = S_MOV_B32 $sgpr0113 ; VI-NEXT: S_NOP 0114 ; VI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec115 ;116 ; CI-LABEL: name: m0_gws_readlane117 ; CI: liveins: $vgpr0, $vgpr1118 ; CI-NEXT: {{ $}}119 ; CI-NEXT: $sgpr0 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec120 ; CI-NEXT: $m0 = S_MOV_B32 $sgpr0121 ; CI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec122 ;123 ; SI-LABEL: name: m0_gws_readlane124 ; SI: liveins: $vgpr0, $vgpr1125 ; SI-NEXT: {{ $}}126 ; SI-NEXT: $sgpr0 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec127 ; SI-NEXT: $m0 = S_MOV_B32 $sgpr0128 ; SI-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec129 ;130 ; GFX10-LABEL: name: m0_gws_readlane131 ; GFX10: liveins: $vgpr0, $vgpr1132 ; GFX10-NEXT: {{ $}}133 ; GFX10-NEXT: $sgpr0 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec134 ; GFX10-NEXT: $m0 = S_MOV_B32 $sgpr0135 ; GFX10-NEXT: DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec136 $sgpr0 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec137 $m0 = S_MOV_B32 $sgpr0138 DS_GWS_INIT $vgpr0, 0, implicit $m0, implicit $exec139 140...141