@@ -1104,77 +1104,113 @@ define i64 @add8192(i64 %a) {
1104
1104
}
1105
1105
1106
1106
define signext i32 @addshl32_5_6 (i32 signext %a , i32 signext %b ) {
1107
- ; CHECK-LABEL: addshl32_5_6:
1108
- ; CHECK: # %bb.0:
1109
- ; CHECK-NEXT: slli a0, a0, 5
1110
- ; CHECK-NEXT: slli a1, a1, 6
1111
- ; CHECK-NEXT: addw a0, a0, a1
1112
- ; CHECK-NEXT: ret
1107
+ ; RV64I-LABEL: addshl32_5_6:
1108
+ ; RV64I: # %bb.0:
1109
+ ; RV64I-NEXT: slli a0, a0, 5
1110
+ ; RV64I-NEXT: slli a1, a1, 6
1111
+ ; RV64I-NEXT: addw a0, a0, a1
1112
+ ; RV64I-NEXT: ret
1113
+ ;
1114
+ ; RV64XTHEADBA-LABEL: addshl32_5_6:
1115
+ ; RV64XTHEADBA: # %bb.0:
1116
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 1
1117
+ ; RV64XTHEADBA-NEXT: slliw a0, a0, 5
1118
+ ; RV64XTHEADBA-NEXT: ret
1113
1119
%c = shl i32 %a , 5
1114
1120
%d = shl i32 %b , 6
1115
1121
%e = add i32 %c , %d
1116
1122
ret i32 %e
1117
1123
}
1118
1124
1119
1125
define i64 @addshl64_5_6 (i64 %a , i64 %b ) {
1120
- ; CHECK-LABEL: addshl64_5_6:
1121
- ; CHECK: # %bb.0:
1122
- ; CHECK-NEXT: slli a0, a0, 5
1123
- ; CHECK-NEXT: slli a1, a1, 6
1124
- ; CHECK-NEXT: add a0, a0, a1
1125
- ; CHECK-NEXT: ret
1126
+ ; RV64I-LABEL: addshl64_5_6:
1127
+ ; RV64I: # %bb.0:
1128
+ ; RV64I-NEXT: slli a0, a0, 5
1129
+ ; RV64I-NEXT: slli a1, a1, 6
1130
+ ; RV64I-NEXT: add a0, a0, a1
1131
+ ; RV64I-NEXT: ret
1132
+ ;
1133
+ ; RV64XTHEADBA-LABEL: addshl64_5_6:
1134
+ ; RV64XTHEADBA: # %bb.0:
1135
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 1
1136
+ ; RV64XTHEADBA-NEXT: slli a0, a0, 5
1137
+ ; RV64XTHEADBA-NEXT: ret
1126
1138
%c = shl i64 %a , 5
1127
1139
%d = shl i64 %b , 6
1128
1140
%e = add i64 %c , %d
1129
1141
ret i64 %e
1130
1142
}
1131
1143
1132
1144
define signext i32 @addshl32_5_7 (i32 signext %a , i32 signext %b ) {
1133
- ; CHECK-LABEL: addshl32_5_7:
1134
- ; CHECK: # %bb.0:
1135
- ; CHECK-NEXT: slli a0, a0, 5
1136
- ; CHECK-NEXT: slli a1, a1, 7
1137
- ; CHECK-NEXT: addw a0, a0, a1
1138
- ; CHECK-NEXT: ret
1145
+ ; RV64I-LABEL: addshl32_5_7:
1146
+ ; RV64I: # %bb.0:
1147
+ ; RV64I-NEXT: slli a0, a0, 5
1148
+ ; RV64I-NEXT: slli a1, a1, 7
1149
+ ; RV64I-NEXT: addw a0, a0, a1
1150
+ ; RV64I-NEXT: ret
1151
+ ;
1152
+ ; RV64XTHEADBA-LABEL: addshl32_5_7:
1153
+ ; RV64XTHEADBA: # %bb.0:
1154
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 2
1155
+ ; RV64XTHEADBA-NEXT: slliw a0, a0, 5
1156
+ ; RV64XTHEADBA-NEXT: ret
1139
1157
%c = shl i32 %a , 5
1140
1158
%d = shl i32 %b , 7
1141
1159
%e = add i32 %c , %d
1142
1160
ret i32 %e
1143
1161
}
1144
1162
1145
1163
define i64 @addshl64_5_7 (i64 %a , i64 %b ) {
1146
- ; CHECK-LABEL: addshl64_5_7:
1147
- ; CHECK: # %bb.0:
1148
- ; CHECK-NEXT: slli a0, a0, 5
1149
- ; CHECK-NEXT: slli a1, a1, 7
1150
- ; CHECK-NEXT: add a0, a0, a1
1151
- ; CHECK-NEXT: ret
1164
+ ; RV64I-LABEL: addshl64_5_7:
1165
+ ; RV64I: # %bb.0:
1166
+ ; RV64I-NEXT: slli a0, a0, 5
1167
+ ; RV64I-NEXT: slli a1, a1, 7
1168
+ ; RV64I-NEXT: add a0, a0, a1
1169
+ ; RV64I-NEXT: ret
1170
+ ;
1171
+ ; RV64XTHEADBA-LABEL: addshl64_5_7:
1172
+ ; RV64XTHEADBA: # %bb.0:
1173
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 2
1174
+ ; RV64XTHEADBA-NEXT: slli a0, a0, 5
1175
+ ; RV64XTHEADBA-NEXT: ret
1152
1176
%c = shl i64 %a , 5
1153
1177
%d = shl i64 %b , 7
1154
1178
%e = add i64 %c , %d
1155
1179
ret i64 %e
1156
1180
}
1157
1181
1158
1182
define signext i32 @addshl32_5_8 (i32 signext %a , i32 signext %b ) {
1159
- ; CHECK-LABEL: addshl32_5_8:
1160
- ; CHECK: # %bb.0:
1161
- ; CHECK-NEXT: slli a0, a0, 5
1162
- ; CHECK-NEXT: slli a1, a1, 8
1163
- ; CHECK-NEXT: addw a0, a0, a1
1164
- ; CHECK-NEXT: ret
1183
+ ; RV64I-LABEL: addshl32_5_8:
1184
+ ; RV64I: # %bb.0:
1185
+ ; RV64I-NEXT: slli a0, a0, 5
1186
+ ; RV64I-NEXT: slli a1, a1, 8
1187
+ ; RV64I-NEXT: addw a0, a0, a1
1188
+ ; RV64I-NEXT: ret
1189
+ ;
1190
+ ; RV64XTHEADBA-LABEL: addshl32_5_8:
1191
+ ; RV64XTHEADBA: # %bb.0:
1192
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 3
1193
+ ; RV64XTHEADBA-NEXT: slliw a0, a0, 5
1194
+ ; RV64XTHEADBA-NEXT: ret
1165
1195
%c = shl i32 %a , 5
1166
1196
%d = shl i32 %b , 8
1167
1197
%e = add i32 %c , %d
1168
1198
ret i32 %e
1169
1199
}
1170
1200
1171
1201
define i64 @addshl64_5_8 (i64 %a , i64 %b ) {
1172
- ; CHECK-LABEL: addshl64_5_8:
1173
- ; CHECK: # %bb.0:
1174
- ; CHECK-NEXT: slli a0, a0, 5
1175
- ; CHECK-NEXT: slli a1, a1, 8
1176
- ; CHECK-NEXT: add a0, a0, a1
1177
- ; CHECK-NEXT: ret
1202
+ ; RV64I-LABEL: addshl64_5_8:
1203
+ ; RV64I: # %bb.0:
1204
+ ; RV64I-NEXT: slli a0, a0, 5
1205
+ ; RV64I-NEXT: slli a1, a1, 8
1206
+ ; RV64I-NEXT: add a0, a0, a1
1207
+ ; RV64I-NEXT: ret
1208
+ ;
1209
+ ; RV64XTHEADBA-LABEL: addshl64_5_8:
1210
+ ; RV64XTHEADBA: # %bb.0:
1211
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 3
1212
+ ; RV64XTHEADBA-NEXT: slli a0, a0, 5
1213
+ ; RV64XTHEADBA-NEXT: ret
1178
1214
%c = shl i64 %a , 5
1179
1215
%d = shl i64 %b , 8
1180
1216
%e = add i64 %c , %d
@@ -1192,9 +1228,8 @@ define i64 @sh6_sh3_add1(i64 noundef %x, i64 noundef %y, i64 noundef %z) {
1192
1228
;
1193
1229
; RV64XTHEADBA-LABEL: sh6_sh3_add1:
1194
1230
; RV64XTHEADBA: # %bb.0: # %entry
1195
- ; RV64XTHEADBA-NEXT: slli a1, a1, 6
1196
- ; RV64XTHEADBA-NEXT: th.addsl a1, a1, a2, 3
1197
- ; RV64XTHEADBA-NEXT: add a0, a1, a0
1231
+ ; RV64XTHEADBA-NEXT: th.addsl a1, a2, a1, 3
1232
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 3
1198
1233
; RV64XTHEADBA-NEXT: ret
1199
1234
entry:
1200
1235
%shl = shl i64 %z , 3
@@ -1238,9 +1273,8 @@ define i64 @sh6_sh3_add3(i64 noundef %x, i64 noundef %y, i64 noundef %z) {
1238
1273
;
1239
1274
; RV64XTHEADBA-LABEL: sh6_sh3_add3:
1240
1275
; RV64XTHEADBA: # %bb.0: # %entry
1241
- ; RV64XTHEADBA-NEXT: slli a1, a1, 6
1242
- ; RV64XTHEADBA-NEXT: th.addsl a1, a1, a2, 3
1243
- ; RV64XTHEADBA-NEXT: add a0, a0, a1
1276
+ ; RV64XTHEADBA-NEXT: th.addsl a1, a2, a1, 3
1277
+ ; RV64XTHEADBA-NEXT: th.addsl a0, a0, a1, 3
1244
1278
; RV64XTHEADBA-NEXT: ret
1245
1279
entry:
1246
1280
%shl = shl i64 %z , 3
0 commit comments