| Commit-Queue | +1 |
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Code-Review | +1 |
InstructionOperand temp = g.TempSimd128Register();
Emit(kArm64S128MoveReg, temp, g.UseRegister(input0));So I could be wrong because I get confused by UseRegister vs UseUniqueRegister every few months, but I don't think that you are guaranteed that `temp` and `g.UseRegister(input0)` don't alias. And if that happens, the `DCHECK_NE(dst, src);` you added in the code generator will trigger. I think that you need `UseUniqueRegister(input0)` instead of `UseRegister(input0)` (also in the next Emit maybe).
Emit(kArm64S128MoveLane | LaneSizeField::encode(32),
g.DefineSameAsFirst(node), temp, g.UseRegister(input0),
g.UseImmediate(from), g.UseImmediate(to));Is this covered by some tests? There is a `DCHECK_EQ(dst, i.InputSimd128Register(0).Format(f));` in the codegen when processing kArm64S128MoveLane and I think that this would require `temp` and `g.DefineSameAsFirst(node)` to alias, and I don't see how you're guaranteeing this. Please add a test.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
InstructionOperand temp = g.TempSimd128Register();
Emit(kArm64S128MoveReg, temp, g.UseRegister(input0));So I could be wrong because I get confused by UseRegister vs UseUniqueRegister every few months, but I don't think that you are guaranteed that `temp` and `g.UseRegister(input0)` don't alias. And if that happens, the `DCHECK_NE(dst, src);` you added in the code generator will trigger. I think that you need `UseUniqueRegister(input0)` instead of `UseRegister(input0)` (also in the next Emit maybe).
Ah, interesting. I do feel like the instruction selector is much harder to work with than it should be! I will try to remember this in the future, thanks.
Emit(kArm64S128MoveLane | LaneSizeField::encode(32),
g.DefineSameAsFirst(node), temp, g.UseRegister(input0),
g.UseImmediate(from), g.UseImmediate(to));Is this covered by some tests? There is a `DCHECK_EQ(dst, i.InputSimd128Register(0).Format(f));` in the codegen when processing kArm64S128MoveLane and I think that this would require `temp` and `g.DefineSameAsFirst(node)` to alias, and I don't see how you're guaranteeing this. Please add a test.
Sorry, I guess I misunderstand how `DefineSameAsFirst` works then, I thought the whole purpose of it would be to use `temp`? I hope it's guaranteed..? Anyway, a test was indeed missing.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Code-Review | +1 |
InstructionOperand temp = g.TempSimd128Register();
Emit(kArm64S128MoveReg, temp, g.UseRegister(input0));Sam Parker-HaynesSo I could be wrong because I get confused by UseRegister vs UseUniqueRegister every few months, but I don't think that you are guaranteed that `temp` and `g.UseRegister(input0)` don't alias. And if that happens, the `DCHECK_NE(dst, src);` you added in the code generator will trigger. I think that you need `UseUniqueRegister(input0)` instead of `UseRegister(input0)` (also in the next Emit maybe).
Ah, interesting. I do feel like the instruction selector is much harder to work with than it should be! I will try to remember this in the future, thanks.
I do feel like the instruction selector is much harder to work with than it should be
Welcome to the club :p
Emit(kArm64S128MoveLane | LaneSizeField::encode(32),
g.DefineSameAsFirst(node), temp, g.UseRegister(input0),
g.UseImmediate(from), g.UseImmediate(to));Sam Parker-HaynesIs this covered by some tests? There is a `DCHECK_EQ(dst, i.InputSimd128Register(0).Format(f));` in the codegen when processing kArm64S128MoveLane and I think that this would require `temp` and `g.DefineSameAsFirst(node)` to alias, and I don't see how you're guaranteeing this. Please add a test.
Sorry, I guess I misunderstand how `DefineSameAsFirst` works then, I thought the whole purpose of it would be to use `temp`? I hope it's guaranteed..? Anyway, a test was indeed missing.
Ah right, sorry I'm the one who got confused; I thought that `DefineSameAsFirst` referred to the Turboshaft input of `node` but it does indeed refer to the input of the Instruction, so you're good, nevermind :)
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Hi Matthias, could you review my simd shuffle fix please?
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Code-Review | +1 |
LGTM
Hi Matthias, could you review my simd shuffle fix please?
Sorry, it's my first day after an extended leave, still trying to catch up with my inbox. 😊
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
| Commit-Queue | +2 |
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
Matthias LiedtkeHi Matthias, could you review my simd shuffle fix please?
Sorry, it's my first day after an extended leave, still trying to catch up with my inbox. 😊
No problem, I only added you ten minutes before :) Welcome back!
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |
[compiler][arm64] Remove OneLaneSwizzle
Introduce S128MoveReg and use that, along with MoveLane, to implement
the same functionality in isel.
| Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. |