Skip to content

Commit 5c715c3

Browse files
committed
[a64] Replace instances of MOV+DUP-splats to MOVI`
These `MOV`->`DUP` splats can just be a singular `MOVI` instruction
1 parent 54790a4 commit 5c715c3

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

src/xenia/cpu/backend/a64/a64_seq_vector.cc

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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.H8(), 0x02'02);
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'00);
12051199
e.ADD(indices.H8(), indices.H8(), Q1.H8());
12061200

12071201
// Table-registers must be sequential indices

0 commit comments

Comments
 (0)