Skip to content

Commit 7c26889

Browse files
committed
[Sparc] Fix instr desc of special register stores
- Those special register stores are STORE and their memory operands are input operands instead of output ones. Reviewers: JDevlieghere, arsenm, yinying-lisa-li, koachan, PeimingLiu, jyknight, aartbik, matthias-springer Reviewed By: arsenm Pull Request: #88971
1 parent efd6055 commit 7c26889

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

llvm/lib/Target/Sparc/SparcInstrInfo.td

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -693,38 +693,38 @@ let DecoderNamespace = "SparcV8", Predicates = [HasNoV9] in {
693693
}
694694

695695
let rd = 0 in {
696-
let Defs = [CPSR] in {
697-
def STCSRrr : F3_1<3, 0b110101, (outs (MEMrr $rs1, $rs2):$addr), (ins),
696+
let mayStore = 1, Uses = [CPSR] in {
697+
def STCSRrr : F3_1<3, 0b110101, (outs), (ins (MEMrr $rs1, $rs2):$addr),
698698
"st %csr, [$addr]", [], IIC_st>;
699-
def STCSRri : F3_2<3, 0b110101, (outs (MEMri $rs1, $simm13):$addr), (ins),
699+
def STCSRri : F3_2<3, 0b110101, (outs), (ins (MEMri $rs1, $simm13):$addr),
700700
"st %csr, [$addr]", [], IIC_st>;
701701
}
702-
let Defs = [CPQ] in {
703-
def STDCQrr : F3_1<3, 0b110110, (outs (MEMrr $rs1, $rs2):$addr), (ins),
702+
let mayStore = 1, Uses = [CPQ] in {
703+
def STDCQrr : F3_1<3, 0b110110, (outs), (ins (MEMrr $rs1, $rs2):$addr),
704704
"std %cq, [$addr]", [], IIC_std>;
705-
def STDCQri : F3_2<3, 0b110110, (outs (MEMri $rs1, $simm13):$addr), (ins),
705+
def STDCQri : F3_2<3, 0b110110, (outs), (ins (MEMri $rs1, $simm13):$addr),
706706
"std %cq, [$addr]", [], IIC_std>;
707707
}
708708
}
709709

710710
let rd = 0 in {
711-
let Defs = [FSR] in {
712-
def STFSRrr : F3_1<3, 0b100101, (outs (MEMrr $rs1, $rs2):$addr), (ins),
711+
let mayStore = 1, Uses = [FSR] in {
712+
def STFSRrr : F3_1<3, 0b100101, (outs), (ins (MEMrr $rs1, $rs2):$addr),
713713
"st %fsr, [$addr]", [], IIC_st>;
714-
def STFSRri : F3_2<3, 0b100101, (outs (MEMri $rs1, $simm13):$addr), (ins),
714+
def STFSRri : F3_2<3, 0b100101, (outs), (ins (MEMri $rs1, $simm13):$addr),
715715
"st %fsr, [$addr]", [], IIC_st>;
716716
}
717-
let Defs = [FQ] in {
718-
def STDFQrr : F3_1<3, 0b100110, (outs (MEMrr $rs1, $rs2):$addr), (ins),
717+
let mayStore = 1, Defs = [FQ] in {
718+
def STDFQrr : F3_1<3, 0b100110, (outs), (ins (MEMrr $rs1, $rs2):$addr),
719719
"std %fq, [$addr]", [], IIC_std>;
720-
def STDFQri : F3_2<3, 0b100110, (outs (MEMri $rs1, $simm13):$addr), (ins),
720+
def STDFQri : F3_2<3, 0b100110, (outs), (ins (MEMri $rs1, $simm13):$addr),
721721
"std %fq, [$addr]", [], IIC_std>;
722722
}
723723
}
724-
let rd = 1, Defs = [FSR] in {
725-
def STXFSRrr : F3_1<3, 0b100101, (outs (MEMrr $rs1, $rs2):$addr), (ins),
724+
let rd = 1, mayStore = 1, Uses = [FSR] in {
725+
def STXFSRrr : F3_1<3, 0b100101, (outs), (ins (MEMrr $rs1, $rs2):$addr),
726726
"stx %fsr, [$addr]", []>, Requires<[HasV9]>;
727-
def STXFSRri : F3_2<3, 0b100101, (outs (MEMri $rs1, $simm13):$addr), (ins),
727+
def STXFSRri : F3_2<3, 0b100101, (outs), (ins (MEMri $rs1, $simm13):$addr),
728728
"stx %fsr, [$addr]", []>, Requires<[HasV9]>;
729729
}
730730

0 commit comments

Comments
 (0)