@@ -1138,13 +1138,11 @@ struct PERMUTE_V128
11381138 }
11391139
11401140 // Indices must be endian-swapped
1141- e.MOV (W0, 0b11 );
1142- e.DUP (Q1.B16 (), W0);
1141+ e.MOVI (Q1.B16 (), 0b11 );
11431142 e.EOR (indices.B16 (), indices.B16 (), Q1.B16 ());
11441143
11451144 // Modulo 32 the indices
1146- e.MOV (W0, 0b0001'1111 );
1147- e.DUP (Q1.B16 (), W0);
1145+ e.MOVI (Q1.B16 (), 0b0001'1111 );
11481146 e.AND (indices.B16 (), indices.B16 (), Q1.B16 ());
11491147
11501148 // Table-registers must be sequential indices
@@ -1186,22 +1184,18 @@ struct PERMUTE_V128
11861184 }
11871185
11881186 // Indices must be endian-swapped
1189- e.MOV (W0, 0b1 );
1190- e.DUP (Q1.H8 (), W0);
1187+ e.MOVI (Q1.H8 (), 0b1 );
11911188 e.EOR (indices.B16 (), indices.B16 (), Q1.B16 ());
11921189
11931190 // Modulo-16 the indices
1194- e.MOV (W0, 0b0000'1111 );
1195- e.DUP (Q1.H8 (), W0);
1191+ e.MOVI (Q1.H8 (), 0b0000'1111 );
11961192 e.AND (indices.B16 (), indices.B16 (), Q1.B16 ());
11971193
11981194 // Convert int16 indices into int8
1199- e.MOV (W0, 0x02'02 );
1200- e.DUP (Q1.H8 (), W0);
1195+ e.MOVI (Q1.B16 (), 0x02 );
12011196 e.MUL (indices.H8 (), indices.H8 (), Q1.H8 ());
12021197
1203- e.MOV (W0, 0x01'00 );
1204- e.DUP (Q1.H8 (), W0);
1198+ e.MOVI (Q1.H8 (), 0x01 , LSL, 8 );
12051199 e.ADD (indices.H8 (), indices.H8 (), Q1.H8 ());
12061200
12071201 // Table-registers must be sequential indices
0 commit comments