@@ -260,25 +260,29 @@ body: |
260260 ; MUBUFW64-NEXT: {{ $}}
261261 ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
262262 ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
263+ ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr8
263264 ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
264265 ;
265266 ; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_offset0
266267 ; MUBUFW32: liveins: $sgpr8
267268 ; MUBUFW32-NEXT: {{ $}}
268269 ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
269270 ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
271+ ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr8
270272 ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
271273 ;
272274 ; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_offset0
273275 ; FLATSCRW64: liveins: $sgpr8
274276 ; FLATSCRW64-NEXT: {{ $}}
275277 ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
278+ ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY $sgpr8
276279 ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
277280 ;
278281 ; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_offset0
279282 ; FLATSCRW32: liveins: $sgpr8
280283 ; FLATSCRW32-NEXT: {{ $}}
281284 ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
285+ ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY $sgpr8
282286 ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
283287 renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
284288 SI_RETURN implicit $sgpr7
@@ -302,25 +306,29 @@ body: |
302306 ; MUBUFW64-NEXT: {{ $}}
303307 ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
304308 ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
309+ ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr8
305310 ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
306311 ;
307312 ; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__sgpr
308313 ; MUBUFW32: liveins: $sgpr8
309314 ; MUBUFW32-NEXT: {{ $}}
310315 ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
311316 ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
317+ ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr8
312318 ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
313319 ;
314320 ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__sgpr
315321 ; FLATSCRW64: liveins: $sgpr8
316322 ; FLATSCRW64-NEXT: {{ $}}
317323 ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
324+ ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY $sgpr8
318325 ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
319326 ;
320327 ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__sgpr
321328 ; FLATSCRW32: liveins: $sgpr8
322329 ; FLATSCRW32-NEXT: {{ $}}
323330 ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
331+ ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY $sgpr8
324332 ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
325333 renamable $sgpr7 = S_ADD_I32 %stack.0, $sgpr8, implicit-def dead $scc
326334 SI_RETURN implicit $sgpr7
@@ -928,3 +936,207 @@ body: |
928936 SI_RETURN implicit $sgpr7, implicit $scc
929937
930938 ...
939+
940+ ---
941+ name : s_add_i32__0__fi_offset0
942+ tracksRegLiveness : true
943+ stack :
944+ - { id: 0, size: 32, alignment: 16 }
945+ machineFunctionInfo :
946+ scratchRSrcReg : ' $sgpr0_sgpr1_sgpr2_sgpr3'
947+ frameOffsetReg : ' $sgpr33'
948+ stackPtrOffsetReg : ' $sgpr32'
949+ body : |
950+ bb.0:
951+ ; MUBUFW64-LABEL: name: s_add_i32__0__fi_offset0
952+ ; MUBUFW64: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
953+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_MOV_B32 0
954+ ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
955+ ;
956+ ; MUBUFW32-LABEL: name: s_add_i32__0__fi_offset0
957+ ; MUBUFW32: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
958+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_MOV_B32 0
959+ ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
960+ ;
961+ ; FLATSCRW64-LABEL: name: s_add_i32__0__fi_offset0
962+ ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 $sgpr32, 0, implicit-def dead $scc
963+ ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
964+ ;
965+ ; FLATSCRW32-LABEL: name: s_add_i32__0__fi_offset0
966+ ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 $sgpr32, 0, implicit-def dead $scc
967+ ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
968+ renamable $sgpr7 = S_ADD_I32 0, %stack.0, implicit-def dead $scc
969+ SI_RETURN implicit $sgpr7
970+
971+ ...
972+
973+ ---
974+ name : s_add_i32__fi_offset0__0
975+ tracksRegLiveness : true
976+ stack :
977+ - { id: 0, size: 32, alignment: 16 }
978+ machineFunctionInfo :
979+ scratchRSrcReg : ' $sgpr0_sgpr1_sgpr2_sgpr3'
980+ frameOffsetReg : ' $sgpr33'
981+ stackPtrOffsetReg : ' $sgpr32'
982+ body : |
983+ bb.0:
984+ ; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__0
985+ ; MUBUFW64: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
986+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_MOV_B32 0
987+ ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
988+ ;
989+ ; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__0
990+ ; MUBUFW32: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
991+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_MOV_B32 0
992+ ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
993+ ;
994+ ; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__0
995+ ; FLATSCRW64: renamable $sgpr7 = S_ADD_I32 0, $sgpr32, implicit-def dead $scc
996+ ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
997+ ;
998+ ; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__0
999+ ; FLATSCRW32: renamable $sgpr7 = S_ADD_I32 0, $sgpr32, implicit-def dead $scc
1000+ ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
1001+ renamable $sgpr7 = S_ADD_I32 %stack.0, 0, implicit-def dead $scc
1002+ SI_RETURN implicit $sgpr7
1003+
1004+ ...
1005+
1006+ ---
1007+ name : s_add_i32__same_sgpr__fi_offset0
1008+ tracksRegLiveness : true
1009+ stack :
1010+ - { id: 0, size: 32, alignment: 16 }
1011+ machineFunctionInfo :
1012+ scratchRSrcReg : ' $sgpr0_sgpr1_sgpr2_sgpr3'
1013+ frameOffsetReg : ' $sgpr33'
1014+ stackPtrOffsetReg : ' $sgpr32'
1015+ body : |
1016+ bb.0:
1017+ liveins: $sgpr7
1018+ ; MUBUFW64-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1019+ ; MUBUFW64: liveins: $sgpr7
1020+ ; MUBUFW64-NEXT: {{ $}}
1021+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1022+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr7, implicit-def dead $scc
1023+ ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr7
1024+ ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
1025+ ;
1026+ ; MUBUFW32-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1027+ ; MUBUFW32: liveins: $sgpr7
1028+ ; MUBUFW32-NEXT: {{ $}}
1029+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1030+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr7, implicit-def dead $scc
1031+ ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr7
1032+ ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
1033+ ;
1034+ ; FLATSCRW64-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1035+ ; FLATSCRW64: liveins: $sgpr7
1036+ ; FLATSCRW64-NEXT: {{ $}}
1037+ ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr7, implicit-def dead $scc
1038+ ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY $sgpr7
1039+ ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
1040+ ;
1041+ ; FLATSCRW32-LABEL: name: s_add_i32__same_sgpr__fi_offset0
1042+ ; FLATSCRW32: liveins: $sgpr7
1043+ ; FLATSCRW32-NEXT: {{ $}}
1044+ ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr7, implicit-def dead $scc
1045+ ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY $sgpr7
1046+ ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
1047+ renamable $sgpr7 = S_ADD_I32 $sgpr7, %stack.0, implicit-def dead $scc
1048+ SI_RETURN implicit $sgpr7
1049+
1050+ ...
1051+
1052+ ---
1053+ name : s_add_i32__different_sgpr__fi_offset0
1054+ tracksRegLiveness : true
1055+ stack :
1056+ - { id: 0, size: 32, alignment: 16 }
1057+ machineFunctionInfo :
1058+ scratchRSrcReg : ' $sgpr0_sgpr1_sgpr2_sgpr3'
1059+ frameOffsetReg : ' $sgpr33'
1060+ stackPtrOffsetReg : ' $sgpr32'
1061+ body : |
1062+ bb.0:
1063+ liveins: $sgpr8
1064+ ; MUBUFW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1065+ ; MUBUFW64: liveins: $sgpr8
1066+ ; MUBUFW64-NEXT: {{ $}}
1067+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1068+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
1069+ ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr8
1070+ ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
1071+ ;
1072+ ; MUBUFW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1073+ ; MUBUFW32: liveins: $sgpr8
1074+ ; MUBUFW32-NEXT: {{ $}}
1075+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1076+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
1077+ ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr8
1078+ ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
1079+ ;
1080+ ; FLATSCRW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1081+ ; FLATSCRW64: liveins: $sgpr8
1082+ ; FLATSCRW64-NEXT: {{ $}}
1083+ ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1084+ ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY $sgpr8
1085+ ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
1086+ ;
1087+ ; FLATSCRW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0
1088+ ; FLATSCRW32: liveins: $sgpr8
1089+ ; FLATSCRW32-NEXT: {{ $}}
1090+ ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1091+ ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY $sgpr8
1092+ ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
1093+ renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1094+ SI_RETURN implicit $sgpr7
1095+
1096+ ...
1097+
1098+ ---
1099+ name : s_add_i32__different_sgpr__fi_offset0_live_after
1100+ tracksRegLiveness : true
1101+ stack :
1102+ - { id: 0, size: 32, alignment: 16 }
1103+ machineFunctionInfo :
1104+ scratchRSrcReg : ' $sgpr0_sgpr1_sgpr2_sgpr3'
1105+ frameOffsetReg : ' $sgpr33'
1106+ stackPtrOffsetReg : ' $sgpr32'
1107+ body : |
1108+ bb.0:
1109+ liveins: $sgpr8
1110+ ; MUBUFW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1111+ ; MUBUFW64: liveins: $sgpr8
1112+ ; MUBUFW64-NEXT: {{ $}}
1113+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1114+ ; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
1115+ ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr8
1116+ ; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1117+ ;
1118+ ; MUBUFW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1119+ ; MUBUFW32: liveins: $sgpr8
1120+ ; MUBUFW32-NEXT: {{ $}}
1121+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1122+ ; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
1123+ ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr8
1124+ ; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1125+ ;
1126+ ; FLATSCRW64-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1127+ ; FLATSCRW64: liveins: $sgpr8
1128+ ; FLATSCRW64-NEXT: {{ $}}
1129+ ; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1130+ ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY $sgpr8
1131+ ; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1132+ ;
1133+ ; FLATSCRW32-LABEL: name: s_add_i32__different_sgpr__fi_offset0_live_after
1134+ ; FLATSCRW32: liveins: $sgpr8
1135+ ; FLATSCRW32-NEXT: {{ $}}
1136+ ; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1137+ ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY $sgpr8
1138+ ; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7, implicit $sgpr8
1139+ renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1140+ SI_RETURN implicit $sgpr7, implicit $sgpr8
1141+
1142+ ...
0 commit comments