@@ -260,25 +260,29 @@ body: |
260
260
; MUBUFW64-NEXT: {{ $}}
261
261
; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
262
262
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
263
+ ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr8
263
264
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
264
265
;
265
266
; MUBUFW32-LABEL: name: s_add_i32__sgpr__fi_offset0
266
267
; MUBUFW32: liveins: $sgpr8
267
268
; MUBUFW32-NEXT: {{ $}}
268
269
; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
269
270
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
271
+ ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr8
270
272
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
271
273
;
272
274
; FLATSCRW64-LABEL: name: s_add_i32__sgpr__fi_offset0
273
275
; FLATSCRW64: liveins: $sgpr8
274
276
; FLATSCRW64-NEXT: {{ $}}
275
277
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
278
+ ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY $sgpr8
276
279
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
277
280
;
278
281
; FLATSCRW32-LABEL: name: s_add_i32__sgpr__fi_offset0
279
282
; FLATSCRW32: liveins: $sgpr8
280
283
; FLATSCRW32-NEXT: {{ $}}
281
284
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
285
+ ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY $sgpr8
282
286
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
283
287
renamable $sgpr7 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
284
288
SI_RETURN implicit $sgpr7
@@ -302,25 +306,29 @@ body: |
302
306
; MUBUFW64-NEXT: {{ $}}
303
307
; MUBUFW64-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
304
308
; MUBUFW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
309
+ ; MUBUFW64-NEXT: renamable $sgpr7 = COPY $sgpr8
305
310
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr7
306
311
;
307
312
; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__sgpr
308
313
; MUBUFW32: liveins: $sgpr8
309
314
; MUBUFW32-NEXT: {{ $}}
310
315
; MUBUFW32-NEXT: renamable $sgpr7 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
311
316
; MUBUFW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr7, $sgpr8, implicit-def dead $scc
317
+ ; MUBUFW32-NEXT: renamable $sgpr7 = COPY $sgpr8
312
318
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr7
313
319
;
314
320
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__sgpr
315
321
; FLATSCRW64: liveins: $sgpr8
316
322
; FLATSCRW64-NEXT: {{ $}}
317
323
; FLATSCRW64-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
324
+ ; FLATSCRW64-NEXT: renamable $sgpr7 = COPY $sgpr8
318
325
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr7
319
326
;
320
327
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__sgpr
321
328
; FLATSCRW32: liveins: $sgpr8
322
329
; FLATSCRW32-NEXT: {{ $}}
323
330
; FLATSCRW32-NEXT: renamable $sgpr7 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
331
+ ; FLATSCRW32-NEXT: renamable $sgpr7 = COPY $sgpr8
324
332
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr7
325
333
renamable $sgpr7 = S_ADD_I32 %stack.0, $sgpr8, implicit-def dead $scc
326
334
SI_RETURN implicit $sgpr7
@@ -928,3 +936,207 @@ body: |
928
936
SI_RETURN implicit $sgpr7, implicit $scc
929
937
930
938
...
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