-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ARM64 encodings for group IF_SVE_CT_3A #98085
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsAdds support for encoding
Contributing towards #94549.
|
@a74nh @kunalspathak @dotnet/arm64-contrib |
src/coreclr/jit/emitarm64.cpp
Outdated
@@ -1102,6 +1102,12 @@ void emitter::emitInsSanityCheck(instrDesc* id) | |||
assert(isPredicateRegister(id->idReg3())); // MMMM | |||
break; | |||
|
|||
case IF_SVE_CT_3A: // ................ ...gggnnnnnddddd -- SVE reverse doublewords | |||
assert(isVectorRegister(id->idReg3())); // ddddd |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have these in order of reg1, reg2 and reg3
@@ -4754,6 +4754,12 @@ void CodeGen::genArm64EmitterUnitTestsSve() | |||
theEmitter->emitIns_R_R_R(INS_sve_clastb, EA_8BYTE, REG_R3, REG_P6, REG_V9, | |||
INS_OPTS_SCALABLE_D); // CLASTB <R><dn>, <Pg>, <R><dn>, <Zm>.<T> | |||
|
|||
// IF_SVE_CT_3A | |||
theEmitter->emitIns_R_R_R(INS_sve_revd, EA_SCALABLE, REG_V1, REG_P0, REG_V6); // REVD <Zd>.Q, <Pg>/M, <Zn>.Q |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
since all the tests are identical, 1 or 2 cases should be sufficient enough.
src/coreclr/jit/emitarm64.cpp
Outdated
@@ -1102,6 +1102,12 @@ void emitter::emitInsSanityCheck(instrDesc* id) | |||
assert(isPredicateRegister(id->idReg3())); // MMMM | |||
break; | |||
|
|||
case IF_SVE_CT_3A: // ................ ...gggnnnnnddddd -- SVE reverse doublewords | |||
assert(isVectorRegister(id->idReg3())); // ddddd | |||
assert(isPredicateRegister(id->idReg2())); // ggg |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert(isPredicateRegister(id->idReg2())); // ggg | |
assert(isLowPredicateRegister(id->idReg2())); // ggg |
src/coreclr/jit/emitarm64.cpp
Outdated
@@ -10017,6 +10023,13 @@ void emitter::emitIns_R_R_R(instruction ins, | |||
} | |||
break; | |||
|
|||
case INS_sve_revd: | |||
assert(isVectorRegister(reg1)); // ddddd | |||
assert(isPredicateRegister(reg2)); // ggg |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert(isPredicateRegister(reg2)); // ggg | |
assert(isLowPredicateRegister(reg2)); // ggg |
Diff results for #98085Throughput diffsThroughput diffs for linux/arm64 ran on linux/x64MinOpts (-0.00% to +0.01%)
Throughput diffs for windows/arm64 ran on linux/x64MinOpts (-0.00% to +0.01%)
Details here |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thanks!
Diff results for #98085Throughput diffsThroughput diffs for linux/arm64 ran on windows/x64MinOpts (-0.00% to +0.01%)
Throughput diffs for windows/arm64 ran on windows/x64MinOpts (-0.00% to +0.01%)
Details here |
Adds support for encoding
revd
. Matching capstone:Contributing towards #94549.