@@ -1138,13 +1138,11 @@ struct PERMUTE_V128
1138
1138
}
1139
1139
1140
1140
// Indices must be endian-swapped
1141
- e.MOV (W0, 0b11 );
1142
- e.DUP (Q1.B16 (), W0);
1141
+ e.MOVI (Q1.B16 (), 0b11 );
1143
1142
e.EOR (indices.B16 (), indices.B16 (), Q1.B16 ());
1144
1143
1145
1144
// Modulo 32 the indices
1146
- e.MOV (W0, 0b0001'1111 );
1147
- e.DUP (Q1.B16 (), W0);
1145
+ e.MOVI (Q1.B16 (), 0b0001'1111 );
1148
1146
e.AND (indices.B16 (), indices.B16 (), Q1.B16 ());
1149
1147
1150
1148
// Table-registers must be sequential indices
@@ -1186,22 +1184,18 @@ struct PERMUTE_V128
1186
1184
}
1187
1185
1188
1186
// Indices must be endian-swapped
1189
- e.MOV (W0, 0b1 );
1190
- e.DUP (Q1.H8 (), W0);
1187
+ e.MOVI (Q1.H8 (), 0b1 );
1191
1188
e.EOR (indices.B16 (), indices.B16 (), Q1.B16 ());
1192
1189
1193
1190
// Modulo-16 the indices
1194
- e.MOV (W0, 0b0000'1111 );
1195
- e.DUP (Q1.H8 (), W0);
1191
+ e.MOVI (Q1.H8 (), 0b0000'1111 );
1196
1192
e.AND (indices.B16 (), indices.B16 (), Q1.B16 ());
1197
1193
1198
1194
// Convert int16 indices into int8
1199
- e.MOV (W0, 0x02'02 );
1200
- e.DUP (Q1.H8 (), W0);
1195
+ e.MOVI (Q1.H8 (), 0x02'02 );
1201
1196
e.MUL (indices.H8 (), indices.H8 (), Q1.H8 ());
1202
1197
1203
- e.MOV (W0, 0x01'00 );
1204
- e.DUP (Q1.H8 (), W0);
1198
+ e.MOVI (Q1.H8 (), 0x01'00 );
1205
1199
e.ADD (indices.H8 (), indices.H8 (), Q1.H8 ());
1206
1200
1207
1201
// Table-registers must be sequential indices
0 commit comments