@@ -97,6 +97,10 @@ class RISCVMCCodeEmitter : public MCCodeEmitter {
97
97
SmallVectorImpl<MCFixup> &Fixups,
98
98
const MCSubtargetInfo &STI) const ;
99
99
100
+ uint64_t getImmOpValueZibi (const MCInst &MI, unsigned OpNo,
101
+ SmallVectorImpl<MCFixup> &Fixups,
102
+ const MCSubtargetInfo &STI) const ;
103
+
100
104
uint64_t getImmOpValue (const MCInst &MI, unsigned OpNo,
101
105
SmallVectorImpl<MCFixup> &Fixups,
102
106
const MCSubtargetInfo &STI) const ;
@@ -559,6 +563,19 @@ RISCVMCCodeEmitter::getImmOpValueAsrN(const MCInst &MI, unsigned OpNo,
559
563
return getImmOpValue (MI, OpNo, Fixups, STI);
560
564
}
561
565
566
+ uint64_t
567
+ RISCVMCCodeEmitter::getImmOpValueZibi (const MCInst &MI, unsigned OpNo,
568
+ SmallVectorImpl<MCFixup> &Fixups,
569
+ const MCSubtargetInfo &STI) const {
570
+ const MCOperand &MO = MI.getOperand (OpNo);
571
+ assert (MO.isImm () && " Zibi operand must be an immediate" );
572
+ int64_t Res = MO.getImm ();
573
+ if (Res == -1 )
574
+ return 0 ;
575
+
576
+ return Res;
577
+ }
578
+
562
579
uint64_t RISCVMCCodeEmitter::getImmOpValue (const MCInst &MI, unsigned OpNo,
563
580
SmallVectorImpl<MCFixup> &Fixups,
564
581
const MCSubtargetInfo &STI) const {
0 commit comments