@@ -9,14 +9,15 @@ define i64 @t1(i32 %a, i32 %b, i64 %c) {
9
9
; O1-LABEL: t1(
10
10
; O1: {
11
11
; O1-NEXT: .reg .b32 %r<3>;
12
- ; O1-NEXT: .reg .b64 %rd<3 >;
12
+ ; O1-NEXT: .reg .b64 %rd<4 >;
13
13
; O1-EMPTY:
14
14
; O1-NEXT: // %bb.0:
15
15
; O1-NEXT: ld.param.b32 %r1, [t1_param_0];
16
16
; O1-NEXT: ld.param.b32 %r2, [t1_param_1];
17
- ; O1-NEXT: ld.param.b64 %rd1, [t1_param_2];
18
- ; O1-NEXT: mad.wide.s32 %rd2, %r1, %r2, %rd1;
19
- ; O1-NEXT: st.param.b64 [func_retval0], %rd2;
17
+ ; O1-NEXT: mul.wide.s32 %rd1, %r1, %r2;
18
+ ; O1-NEXT: ld.param.b64 %rd2, [t1_param_2];
19
+ ; O1-NEXT: add.s64 %rd3, %rd2, %rd1;
20
+ ; O1-NEXT: st.param.b64 [func_retval0], %rd3;
20
21
; O1-NEXT: ret;
21
22
;
22
23
; O0-LABEL: t1(
@@ -44,14 +45,15 @@ define i64 @t2(i32 %a, i32 %b, i64 %c) {
44
45
; O1-LABEL: t2(
45
46
; O1: {
46
47
; O1-NEXT: .reg .b32 %r<3>;
47
- ; O1-NEXT: .reg .b64 %rd<3 >;
48
+ ; O1-NEXT: .reg .b64 %rd<4 >;
48
49
; O1-EMPTY:
49
50
; O1-NEXT: // %bb.0:
50
51
; O1-NEXT: ld.param.b32 %r1, [t2_param_0];
51
52
; O1-NEXT: ld.param.b32 %r2, [t2_param_1];
52
- ; O1-NEXT: ld.param.b64 %rd1, [t2_param_2];
53
- ; O1-NEXT: mad.wide.s32 %rd2, %r1, %r2, %rd1;
54
- ; O1-NEXT: st.param.b64 [func_retval0], %rd2;
53
+ ; O1-NEXT: mul.wide.s32 %rd1, %r1, %r2;
54
+ ; O1-NEXT: ld.param.b64 %rd2, [t2_param_2];
55
+ ; O1-NEXT: add.s64 %rd3, %rd1, %rd2;
56
+ ; O1-NEXT: st.param.b64 [func_retval0], %rd3;
55
57
; O1-NEXT: ret;
56
58
;
57
59
; O0-LABEL: t2(
@@ -79,13 +81,14 @@ define i64 @t3(i32 %a, i32 %b) {
79
81
; O1-LABEL: t3(
80
82
; O1: {
81
83
; O1-NEXT: .reg .b32 %r<3>;
82
- ; O1-NEXT: .reg .b64 %rd<2 >;
84
+ ; O1-NEXT: .reg .b64 %rd<3 >;
83
85
; O1-EMPTY:
84
86
; O1-NEXT: // %bb.0:
85
87
; O1-NEXT: ld.param.b32 %r1, [t3_param_0];
86
88
; O1-NEXT: ld.param.b32 %r2, [t3_param_1];
87
- ; O1-NEXT: mad.wide.s32 %rd1, %r1, %r2, 1;
88
- ; O1-NEXT: st.param.b64 [func_retval0], %rd1;
89
+ ; O1-NEXT: mul.wide.s32 %rd1, %r1, %r2;
90
+ ; O1-NEXT: add.s64 %rd2, %rd1, 1;
91
+ ; O1-NEXT: st.param.b64 [func_retval0], %rd2;
89
92
; O1-NEXT: ret;
90
93
;
91
94
; O0-LABEL: t3(
@@ -112,13 +115,14 @@ define i64 @t4(i32 %a, i64 %c) {
112
115
; O1-LABEL: t4(
113
116
; O1: {
114
117
; O1-NEXT: .reg .b32 %r<2>;
115
- ; O1-NEXT: .reg .b64 %rd<3 >;
118
+ ; O1-NEXT: .reg .b64 %rd<4 >;
116
119
; O1-EMPTY:
117
120
; O1-NEXT: // %bb.0:
118
121
; O1-NEXT: ld.param.b32 %r1, [t4_param_0];
119
122
; O1-NEXT: ld.param.b64 %rd1, [t4_param_1];
120
- ; O1-NEXT: mad.wide.s32 %rd2, %r1, 3, %rd1;
121
- ; O1-NEXT: st.param.b64 [func_retval0], %rd2;
123
+ ; O1-NEXT: mul.wide.s32 %rd2, %r1, 3;
124
+ ; O1-NEXT: add.s64 %rd3, %rd1, %rd2;
125
+ ; O1-NEXT: st.param.b64 [func_retval0], %rd3;
122
126
; O1-NEXT: ret;
123
127
;
124
128
; O0-LABEL: t4(
@@ -145,12 +149,13 @@ define i64 @t4_1(i32 %a, i64 %c) {
145
149
; O1-LABEL: t4_1(
146
150
; O1: {
147
151
; O1-NEXT: .reg .b32 %r<2>;
148
- ; O1-NEXT: .reg .b64 %rd<2 >;
152
+ ; O1-NEXT: .reg .b64 %rd<3 >;
149
153
; O1-EMPTY:
150
154
; O1-NEXT: // %bb.0:
151
155
; O1-NEXT: ld.param.b32 %r1, [t4_1_param_0];
152
- ; O1-NEXT: mad.wide.s32 %rd1, %r1, 3, 5;
153
- ; O1-NEXT: st.param.b64 [func_retval0], %rd1;
156
+ ; O1-NEXT: mul.wide.s32 %rd1, %r1, 3;
157
+ ; O1-NEXT: add.s64 %rd2, %rd1, 5;
158
+ ; O1-NEXT: st.param.b64 [func_retval0], %rd2;
154
159
; O1-NEXT: ret;
155
160
;
156
161
; O0-LABEL: t4_1(
@@ -176,14 +181,15 @@ define i64 @t5(i32 %a, i32 %b, i64 %c) {
176
181
; O1-LABEL: t5(
177
182
; O1: {
178
183
; O1-NEXT: .reg .b32 %r<3>;
179
- ; O1-NEXT: .reg .b64 %rd<3 >;
184
+ ; O1-NEXT: .reg .b64 %rd<4 >;
180
185
; O1-EMPTY:
181
186
; O1-NEXT: // %bb.0:
182
187
; O1-NEXT: ld.param.b32 %r1, [t5_param_0];
183
188
; O1-NEXT: ld.param.b32 %r2, [t5_param_1];
184
- ; O1-NEXT: ld.param.b64 %rd1, [t5_param_2];
185
- ; O1-NEXT: mad.wide.u32 %rd2, %r1, %r2, %rd1;
186
- ; O1-NEXT: st.param.b64 [func_retval0], %rd2;
189
+ ; O1-NEXT: mul.wide.u32 %rd1, %r1, %r2;
190
+ ; O1-NEXT: ld.param.b64 %rd2, [t5_param_2];
191
+ ; O1-NEXT: add.s64 %rd3, %rd2, %rd1;
192
+ ; O1-NEXT: st.param.b64 [func_retval0], %rd3;
187
193
; O1-NEXT: ret;
188
194
;
189
195
; O0-LABEL: t5(
@@ -211,14 +217,15 @@ define i64 @t6(i32 %a, i32 %b, i64 %c) {
211
217
; O1-LABEL: t6(
212
218
; O1: {
213
219
; O1-NEXT: .reg .b32 %r<3>;
214
- ; O1-NEXT: .reg .b64 %rd<3 >;
220
+ ; O1-NEXT: .reg .b64 %rd<4 >;
215
221
; O1-EMPTY:
216
222
; O1-NEXT: // %bb.0:
217
223
; O1-NEXT: ld.param.b32 %r1, [t6_param_0];
218
224
; O1-NEXT: ld.param.b32 %r2, [t6_param_1];
219
- ; O1-NEXT: ld.param.b64 %rd1, [t6_param_2];
220
- ; O1-NEXT: mad.wide.u32 %rd2, %r1, %r2, %rd1;
221
- ; O1-NEXT: st.param.b64 [func_retval0], %rd2;
225
+ ; O1-NEXT: mul.wide.u32 %rd1, %r1, %r2;
226
+ ; O1-NEXT: ld.param.b64 %rd2, [t6_param_2];
227
+ ; O1-NEXT: add.s64 %rd3, %rd1, %rd2;
228
+ ; O1-NEXT: st.param.b64 [func_retval0], %rd3;
222
229
; O1-NEXT: ret;
223
230
;
224
231
; O0-LABEL: t6(
@@ -932,14 +939,15 @@ define i32 @t32(i16 %a, i16 %b, i32 %c) {
932
939
; O1-LABEL: t32(
933
940
; O1: {
934
941
; O1-NEXT: .reg .b16 %rs<3>;
935
- ; O1-NEXT: .reg .b32 %r<3 >;
942
+ ; O1-NEXT: .reg .b32 %r<4 >;
936
943
; O1-EMPTY:
937
944
; O1-NEXT: // %bb.0:
938
945
; O1-NEXT: ld.param.b16 %rs1, [t32_param_0];
939
946
; O1-NEXT: ld.param.b16 %rs2, [t32_param_1];
940
- ; O1-NEXT: ld.param.b32 %r1, [t32_param_2];
941
- ; O1-NEXT: mad.wide.s16 %r2, %rs1, %rs2, %r1;
942
- ; O1-NEXT: st.param.b32 [func_retval0], %r2;
947
+ ; O1-NEXT: mul.wide.s16 %r1, %rs1, %rs2;
948
+ ; O1-NEXT: ld.param.b32 %r2, [t32_param_2];
949
+ ; O1-NEXT: add.s32 %r3, %r2, %r1;
950
+ ; O1-NEXT: st.param.b32 [func_retval0], %r3;
943
951
; O1-NEXT: ret;
944
952
;
945
953
; O0-LABEL: t32(
@@ -967,14 +975,15 @@ define i32 @t33(i16 %a, i16 %b, i32 %c) {
967
975
; O1-LABEL: t33(
968
976
; O1: {
969
977
; O1-NEXT: .reg .b16 %rs<3>;
970
- ; O1-NEXT: .reg .b32 %r<3 >;
978
+ ; O1-NEXT: .reg .b32 %r<4 >;
971
979
; O1-EMPTY:
972
980
; O1-NEXT: // %bb.0:
973
981
; O1-NEXT: ld.param.b16 %rs1, [t33_param_0];
974
982
; O1-NEXT: ld.param.b16 %rs2, [t33_param_1];
975
- ; O1-NEXT: ld.param.b32 %r1, [t33_param_2];
976
- ; O1-NEXT: mad.wide.s16 %r2, %rs1, %rs2, %r1;
977
- ; O1-NEXT: st.param.b32 [func_retval0], %r2;
983
+ ; O1-NEXT: mul.wide.s16 %r1, %rs1, %rs2;
984
+ ; O1-NEXT: ld.param.b32 %r2, [t33_param_2];
985
+ ; O1-NEXT: add.s32 %r3, %r2, %r1;
986
+ ; O1-NEXT: st.param.b32 [func_retval0], %r3;
978
987
; O1-NEXT: ret;
979
988
;
980
989
; O0-LABEL: t33(
@@ -1002,13 +1011,14 @@ define i32 @t34(i16 %a, i16 %b) {
1002
1011
; O1-LABEL: t34(
1003
1012
; O1: {
1004
1013
; O1-NEXT: .reg .b16 %rs<3>;
1005
- ; O1-NEXT: .reg .b32 %r<2 >;
1014
+ ; O1-NEXT: .reg .b32 %r<3 >;
1006
1015
; O1-EMPTY:
1007
1016
; O1-NEXT: // %bb.0:
1008
1017
; O1-NEXT: ld.param.b16 %rs1, [t34_param_0];
1009
1018
; O1-NEXT: ld.param.b16 %rs2, [t34_param_1];
1010
- ; O1-NEXT: mad.wide.s16 %r1, %rs1, %rs2, 1;
1011
- ; O1-NEXT: st.param.b32 [func_retval0], %r1;
1019
+ ; O1-NEXT: mul.wide.s16 %r1, %rs1, %rs2;
1020
+ ; O1-NEXT: add.s32 %r2, %r1, 1;
1021
+ ; O1-NEXT: st.param.b32 [func_retval0], %r2;
1012
1022
; O1-NEXT: ret;
1013
1023
;
1014
1024
; O0-LABEL: t34(
@@ -1035,13 +1045,14 @@ define i32 @t35(i16 %a, i32 %c) {
1035
1045
; O1-LABEL: t35(
1036
1046
; O1: {
1037
1047
; O1-NEXT: .reg .b16 %rs<2>;
1038
- ; O1-NEXT: .reg .b32 %r<3 >;
1048
+ ; O1-NEXT: .reg .b32 %r<4 >;
1039
1049
; O1-EMPTY:
1040
1050
; O1-NEXT: // %bb.0:
1041
1051
; O1-NEXT: ld.param.b16 %rs1, [t35_param_0];
1042
1052
; O1-NEXT: ld.param.b32 %r1, [t35_param_1];
1043
- ; O1-NEXT: mad.wide.s16 %r2, %rs1, 3, %r1;
1044
- ; O1-NEXT: st.param.b32 [func_retval0], %r2;
1053
+ ; O1-NEXT: mul.wide.s16 %r2, %rs1, 3;
1054
+ ; O1-NEXT: add.s32 %r3, %r1, %r2;
1055
+ ; O1-NEXT: st.param.b32 [func_retval0], %r3;
1045
1056
; O1-NEXT: ret;
1046
1057
;
1047
1058
; O0-LABEL: t35(
@@ -1068,12 +1079,13 @@ define i32 @t36(i16 %a, i32 %c) {
1068
1079
; O1-LABEL: t36(
1069
1080
; O1: {
1070
1081
; O1-NEXT: .reg .b16 %rs<2>;
1071
- ; O1-NEXT: .reg .b32 %r<2 >;
1082
+ ; O1-NEXT: .reg .b32 %r<3 >;
1072
1083
; O1-EMPTY:
1073
1084
; O1-NEXT: // %bb.0:
1074
1085
; O1-NEXT: ld.param.b16 %rs1, [t36_param_0];
1075
- ; O1-NEXT: mad.wide.s16 %r1, %rs1, 3, 5;
1076
- ; O1-NEXT: st.param.b32 [func_retval0], %r1;
1086
+ ; O1-NEXT: mul.wide.s16 %r1, %rs1, 3;
1087
+ ; O1-NEXT: add.s32 %r2, %r1, 5;
1088
+ ; O1-NEXT: st.param.b32 [func_retval0], %r2;
1077
1089
; O1-NEXT: ret;
1078
1090
;
1079
1091
; O0-LABEL: t36(
@@ -1099,14 +1111,15 @@ define i32 @t37(i16 %a, i16 %b, i32 %c) {
1099
1111
; O1-LABEL: t37(
1100
1112
; O1: {
1101
1113
; O1-NEXT: .reg .b16 %rs<3>;
1102
- ; O1-NEXT: .reg .b32 %r<3 >;
1114
+ ; O1-NEXT: .reg .b32 %r<4 >;
1103
1115
; O1-EMPTY:
1104
1116
; O1-NEXT: // %bb.0:
1105
1117
; O1-NEXT: ld.param.b16 %rs1, [t37_param_0];
1106
1118
; O1-NEXT: ld.param.b16 %rs2, [t37_param_1];
1107
- ; O1-NEXT: ld.param.b32 %r1, [t37_param_2];
1108
- ; O1-NEXT: mad.wide.u16 %r2, %rs1, %rs2, %r1;
1109
- ; O1-NEXT: st.param.b32 [func_retval0], %r2;
1119
+ ; O1-NEXT: mul.wide.u16 %r1, %rs1, %rs2;
1120
+ ; O1-NEXT: ld.param.b32 %r2, [t37_param_2];
1121
+ ; O1-NEXT: add.s32 %r3, %r2, %r1;
1122
+ ; O1-NEXT: st.param.b32 [func_retval0], %r3;
1110
1123
; O1-NEXT: ret;
1111
1124
;
1112
1125
; O0-LABEL: t37(
@@ -1134,14 +1147,15 @@ define i32 @t38(i16 %a, i16 %b, i32 %c) {
1134
1147
; O1-LABEL: t38(
1135
1148
; O1: {
1136
1149
; O1-NEXT: .reg .b16 %rs<3>;
1137
- ; O1-NEXT: .reg .b32 %r<3 >;
1150
+ ; O1-NEXT: .reg .b32 %r<4 >;
1138
1151
; O1-EMPTY:
1139
1152
; O1-NEXT: // %bb.0:
1140
1153
; O1-NEXT: ld.param.b16 %rs1, [t38_param_0];
1141
1154
; O1-NEXT: ld.param.b16 %rs2, [t38_param_1];
1142
- ; O1-NEXT: ld.param.b32 %r1, [t38_param_2];
1143
- ; O1-NEXT: mad.wide.u16 %r2, %rs1, %rs2, %r1;
1144
- ; O1-NEXT: st.param.b32 [func_retval0], %r2;
1155
+ ; O1-NEXT: mul.wide.u16 %r1, %rs1, %rs2;
1156
+ ; O1-NEXT: ld.param.b32 %r2, [t38_param_2];
1157
+ ; O1-NEXT: add.s32 %r3, %r1, %r2;
1158
+ ; O1-NEXT: st.param.b32 [func_retval0], %r3;
1145
1159
; O1-NEXT: ret;
1146
1160
;
1147
1161
; O0-LABEL: t38(
0 commit comments