Details
- Reviewers
craig.topper benshi001
Diff Detail
Unit Tests
Event Timeline
llvm/lib/Target/RISCV/RISCVInstrInfoZb.td | ||
---|---|---|
654 | We need not such aliases, since there is real zext.h instruction. |
llvm/lib/Target/RISCV/RISCVInstrInfoZb.td | ||
---|---|---|
654 | We need not two zext.h, maybe just one is OK, when ZBB is invalid. |
The correct fix is to change the predicate here to include Zbkb
let Predicates = [HasStdExtZbbOrZbp, IsRV32] in { def ZEXT_H_RV32 : RVBUnary<0b0000100, 0b00000, 0b100, OPC_OP, "zext.h">, Sched<[WriteIALU, ReadIALU]>; } // Predicates = [HasStdExtZbbOrZbp, IsRV32] let Predicates = [HasStdExtZbbOrZbp, IsRV64] in { def ZEXT_H_RV64 : RVBUnary<0b0000100, 0b00000, 0b100, OPC_OP_32, "zext.h">, Sched<[WriteIALU, ReadIALU]>; } // Predicates = [HasStdExtZbbOrZbp, IsRV64]
llvm/lib/Target/RISCV/RISCVInstrInfoZb.td | ||
---|---|---|
654 | real MI is PACK and PACKW,so just need Predicates = HasStdExtZbpOrZbkb |
Can you send me the Bitmap manual you read, I read the riscv-crypto-spec-scalar-v1.0.1.pdf , and zext.h does not belong to zbkb
zbkb Instruction:
The zext.h encoding is a subset of the pack encodings. We need to have consistent behavior in when we use the two instruction representations. Otherwise disassembling with Zbb and Zbkb both enabled becomes ambiguous.
We need not such aliases, since there is real zext.h instruction.