Skip to content

Invalid patterns for Sign/Zero-Extend instructions #47

@PhilippvK

Description

@PhilippvK

Input:

        CV_EXTHS {
            encoding: 7'b0110000 :: 5'b00000 :: rs1[4:0] :: 3'b011 :: rd[4:0] :: 7'b0101011;
            assembly: "{name(rd)}, {name(rs1)}";
            behavior: {
                if (rd != 0) {
                    X[rd] = (signed)X[rs1][15:0];
                }
            }
        }
        CV_EXTHZ {
            encoding: 7'b0110001 :: 5'b00000 :: rs1[4:0] :: 3'b011 :: rd[4:0] :: 7'b0101011;
            assembly: "{name(rd)}, {name(rs1)}";
            behavior: {
                if (rd != 0) {
                    X[rd] = (unsigned)X[rs1][15:0];
                }
            }
        }
        CV_EXTBS {
            encoding: 7'b0110010 :: 5'b00000 :: rs1[4:0] :: 3'b011 :: rd[4:0] :: 7'b0101011;
            assembly: "{name(rd)}, {name(rs1)}";
            behavior: {
                if (rd != 0) {
                    X[rd] = (signed)X[rs1][7:0];
                }
            }
        }
        CV_EXTBZ {
            encoding: 7'b0110011 :: 5'b00000 :: rs1[4:0] :: 3'b011 :: rd[4:0] :: 7'b0101011;
            assembly: "{name(rd)}, {name(rs1)}";
            behavior: {
                if (rd != 0) {
                    X[rd] = (unsigned)X[rs1][7:0];
                }
            }
        }

Output:

Pattern for CV_EXTHS: GPR:$rs1
Pattern for CV_EXTHZ: GPR:$rs1
Pattern for CV_EXTBS: GPR:$rs1
Pattern for CV_EXTBZ: GPR:$rs1

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions