@@ -1065,18 +1065,13 @@ define <8 x i16> @test_aligned_v8i16_1(i16* %Ptr) {
1065
1065
;
1066
1066
; P8-LABEL: test_aligned_v8i16_1:
1067
1067
; P8: # %bb.0: # %entry
1068
- ; P8-NEXT: lhzx r3, 0, r3
1069
- ; P8-NEXT: mtvsrwz v2, r3
1070
- ; P8-NEXT: vsplth v2, v2, 3
1068
+ ; P8-NEXT: lvx v2, 0, r3
1069
+ ; P8-NEXT: vsplth v2, v2, 7
1071
1070
; P8-NEXT: blr
1072
1071
;
1073
1072
; P7-LABEL: test_aligned_v8i16_1:
1074
1073
; P7: # %bb.0: # %entry
1075
- ; P7-NEXT: li r4, 1
1076
1074
; P7-NEXT: lvx v2, 0, r3
1077
- ; P7-NEXT: lvsl v4, 0, r3
1078
- ; P7-NEXT: lvx v3, r4, r3
1079
- ; P7-NEXT: vperm v2, v2, v3, v4
1080
1075
; P7-NEXT: vsplth v2, v2, 0
1081
1076
; P7-NEXT: blr
1082
1077
;
@@ -1088,18 +1083,13 @@ define <8 x i16> @test_aligned_v8i16_1(i16* %Ptr) {
1088
1083
;
1089
1084
; P8-AIX32-LABEL: test_aligned_v8i16_1:
1090
1085
; P8-AIX32: # %bb.0: # %entry
1091
- ; P8-AIX32-NEXT: lhzx r3, 0, r3
1092
- ; P8-AIX32-NEXT: mtvsrwz v2, r3
1093
- ; P8-AIX32-NEXT: vsplth v2, v2, 3
1086
+ ; P8-AIX32-NEXT: lvx v2, 0, r3
1087
+ ; P8-AIX32-NEXT: vsplth v2, v2, 0
1094
1088
; P8-AIX32-NEXT: blr
1095
1089
;
1096
1090
; P7-AIX32-LABEL: test_aligned_v8i16_1:
1097
1091
; P7-AIX32: # %bb.0: # %entry
1098
- ; P7-AIX32-NEXT: li r4, 1
1099
1092
; P7-AIX32-NEXT: lvx v2, 0, r3
1100
- ; P7-AIX32-NEXT: lvsl v4, 0, r3
1101
- ; P7-AIX32-NEXT: lvx v3, r4, r3
1102
- ; P7-AIX32-NEXT: vperm v2, v2, v3, v4
1103
1093
; P7-AIX32-NEXT: vsplth v2, v2, 0
1104
1094
; P7-AIX32-NEXT: blr
1105
1095
entry:
@@ -1119,19 +1109,15 @@ define <8 x i16> @test_aligned_v8i16_2(i16* %Ptr) {
1119
1109
;
1120
1110
; P8-LABEL: test_aligned_v8i16_2:
1121
1111
; P8: # %bb.0: # %entry
1122
- ; P8-NEXT: lhz r3, 32(r3)
1123
- ; P8-NEXT: mtvsrwz v2, r3
1124
- ; P8-NEXT: vsplth v2, v2, 3
1112
+ ; P8-NEXT: addi r3, r3, 32
1113
+ ; P8-NEXT: lvx v2, 0 , r3
1114
+ ; P8-NEXT: vsplth v2, v2, 7
1125
1115
; P8-NEXT: blr
1126
1116
;
1127
1117
; P7-LABEL: test_aligned_v8i16_2:
1128
1118
; P7: # %bb.0: # %entry
1129
- ; P7-NEXT: li r4, 1
1130
1119
; P7-NEXT: addi r3, r3, 32
1131
1120
; P7-NEXT: lvx v2, 0, r3
1132
- ; P7-NEXT: lvx v3, r4, r3
1133
- ; P7-NEXT: lvsl v4, 0, r3
1134
- ; P7-NEXT: vperm v2, v2, v3, v4
1135
1121
; P7-NEXT: vsplth v2, v2, 0
1136
1122
; P7-NEXT: blr
1137
1123
;
@@ -1144,19 +1130,15 @@ define <8 x i16> @test_aligned_v8i16_2(i16* %Ptr) {
1144
1130
;
1145
1131
; P8-AIX32-LABEL: test_aligned_v8i16_2:
1146
1132
; P8-AIX32: # %bb.0: # %entry
1147
- ; P8-AIX32-NEXT: lhz r3, 32(r3)
1148
- ; P8-AIX32-NEXT: mtvsrwz v2, r3
1149
- ; P8-AIX32-NEXT: vsplth v2, v2, 3
1133
+ ; P8-AIX32-NEXT: addi r3, r3, 32
1134
+ ; P8-AIX32-NEXT: lvx v2, 0 , r3
1135
+ ; P8-AIX32-NEXT: vsplth v2, v2, 0
1150
1136
; P8-AIX32-NEXT: blr
1151
1137
;
1152
1138
; P7-AIX32-LABEL: test_aligned_v8i16_2:
1153
1139
; P7-AIX32: # %bb.0: # %entry
1154
- ; P7-AIX32-NEXT: li r4, 1
1155
1140
; P7-AIX32-NEXT: addi r3, r3, 32
1156
1141
; P7-AIX32-NEXT: lvx v2, 0, r3
1157
- ; P7-AIX32-NEXT: lvx v3, r4, r3
1158
- ; P7-AIX32-NEXT: lvsl v4, 0, r3
1159
- ; P7-AIX32-NEXT: vperm v2, v2, v3, v4
1160
1142
; P7-AIX32-NEXT: vsplth v2, v2, 0
1161
1143
; P7-AIX32-NEXT: blr
1162
1144
entry:
@@ -1176,16 +1158,13 @@ define <16 x i8> @test_aligned_v16i8_1(i8* %Ptr) {
1176
1158
;
1177
1159
; P8-LABEL: test_aligned_v16i8_1:
1178
1160
; P8: # %bb.0: # %entry
1179
- ; P8-NEXT: lbzx r3, 0, r3
1180
- ; P8-NEXT: mtvsrwz v2, r3
1181
- ; P8-NEXT: vspltb v2, v2, 7
1161
+ ; P8-NEXT: lvx v2, 0, r3
1162
+ ; P8-NEXT: vspltb v2, v2, 15
1182
1163
; P8-NEXT: blr
1183
1164
;
1184
1165
; P7-LABEL: test_aligned_v16i8_1:
1185
1166
; P7: # %bb.0: # %entry
1186
- ; P7-NEXT: lvsl v2, 0, r3
1187
- ; P7-NEXT: lvx v3, 0, r3
1188
- ; P7-NEXT: vperm v2, v3, v3, v2
1167
+ ; P7-NEXT: lvx v2, 0, r3
1189
1168
; P7-NEXT: vspltb v2, v2, 0
1190
1169
; P7-NEXT: blr
1191
1170
;
@@ -1197,16 +1176,13 @@ define <16 x i8> @test_aligned_v16i8_1(i8* %Ptr) {
1197
1176
;
1198
1177
; P8-AIX32-LABEL: test_aligned_v16i8_1:
1199
1178
; P8-AIX32: # %bb.0: # %entry
1200
- ; P8-AIX32-NEXT: lbzx r3, 0, r3
1201
- ; P8-AIX32-NEXT: mtvsrwz v2, r3
1202
- ; P8-AIX32-NEXT: vspltb v2, v2, 7
1179
+ ; P8-AIX32-NEXT: lvx v2, 0, r3
1180
+ ; P8-AIX32-NEXT: vspltb v2, v2, 0
1203
1181
; P8-AIX32-NEXT: blr
1204
1182
;
1205
1183
; P7-AIX32-LABEL: test_aligned_v16i8_1:
1206
1184
; P7-AIX32: # %bb.0: # %entry
1207
- ; P7-AIX32-NEXT: lvsl v2, 0, r3
1208
- ; P7-AIX32-NEXT: lvx v3, 0, r3
1209
- ; P7-AIX32-NEXT: vperm v2, v3, v3, v2
1185
+ ; P7-AIX32-NEXT: lvx v2, 0, r3
1210
1186
; P7-AIX32-NEXT: vspltb v2, v2, 0
1211
1187
; P7-AIX32-NEXT: blr
1212
1188
entry:
@@ -1226,17 +1202,15 @@ define <16 x i8> @test_aligned_v16i8_2(i8* %Ptr) {
1226
1202
;
1227
1203
; P8-LABEL: test_aligned_v16i8_2:
1228
1204
; P8: # %bb.0: # %entry
1229
- ; P8-NEXT: lbz r3, 16(r3)
1230
- ; P8-NEXT: mtvsrwz v2, r3
1231
- ; P8-NEXT: vspltb v2, v2, 7
1205
+ ; P8-NEXT: addi r3, r3, 16
1206
+ ; P8-NEXT: lvx v2, 0 , r3
1207
+ ; P8-NEXT: vspltb v2, v2, 15
1232
1208
; P8-NEXT: blr
1233
1209
;
1234
1210
; P7-LABEL: test_aligned_v16i8_2:
1235
1211
; P7: # %bb.0: # %entry
1236
1212
; P7-NEXT: addi r3, r3, 16
1237
- ; P7-NEXT: lvsl v2, 0, r3
1238
- ; P7-NEXT: lvx v3, 0, r3
1239
- ; P7-NEXT: vperm v2, v3, v3, v2
1213
+ ; P7-NEXT: lvx v2, 0, r3
1240
1214
; P7-NEXT: vspltb v2, v2, 0
1241
1215
; P7-NEXT: blr
1242
1216
;
@@ -1249,17 +1223,15 @@ define <16 x i8> @test_aligned_v16i8_2(i8* %Ptr) {
1249
1223
;
1250
1224
; P8-AIX32-LABEL: test_aligned_v16i8_2:
1251
1225
; P8-AIX32: # %bb.0: # %entry
1252
- ; P8-AIX32-NEXT: lbz r3, 16(r3)
1253
- ; P8-AIX32-NEXT: mtvsrwz v2, r3
1254
- ; P8-AIX32-NEXT: vspltb v2, v2, 7
1226
+ ; P8-AIX32-NEXT: addi r3, r3, 16
1227
+ ; P8-AIX32-NEXT: lvx v2, 0 , r3
1228
+ ; P8-AIX32-NEXT: vspltb v2, v2, 0
1255
1229
; P8-AIX32-NEXT: blr
1256
1230
;
1257
1231
; P7-AIX32-LABEL: test_aligned_v16i8_2:
1258
1232
; P7-AIX32: # %bb.0: # %entry
1259
1233
; P7-AIX32-NEXT: addi r3, r3, 16
1260
- ; P7-AIX32-NEXT: lvsl v2, 0, r3
1261
- ; P7-AIX32-NEXT: lvx v3, 0, r3
1262
- ; P7-AIX32-NEXT: vperm v2, v3, v3, v2
1234
+ ; P7-AIX32-NEXT: lvx v2, 0, r3
1263
1235
; P7-AIX32-NEXT: vspltb v2, v2, 0
1264
1236
; P7-AIX32-NEXT: blr
1265
1237
entry:
0 commit comments