Convert riscv to llvm
convert_riscv_to_llvm
RiscvToLLVMPattern
dataclass
Bases: RewritePattern
Source code in xdsl/transforms/convert_riscv_to_llvm.py
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | |
xlen: int
instance-attribute
__init__(xlen: int) -> None
match_and_rewrite(op: RISCVInstruction, rewriter: PatternRewriter)
Source code in xdsl/transforms/convert_riscv_to_llvm.py
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | |
ConvertRiscvToLLVMPass
dataclass
Bases: ModulePass
Convert RISC-V instructions to LLVM inline assembly. This allows for the use of an LLVM backend instead of direct RISC-V assembly generation. Additionally, custom ops are implemented using .insn directives, to avoid the need for a custom LLVM backend.
Only integer register types are supported. Specify register width through the xlen pass argument.
Due to the nature of inline assembly operations, this behaviour is very flaky for code that has been register allocated, and will most likely break for all non-trivial register allocated code.
This pass handles register allocated operations by discarding allocated registers. This breaks as soon as the riscv dialect code has non-SSA def-use chains (e.g. through get_register ops).
Source code in xdsl/transforms/convert_riscv_to_llvm.py
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | |
name = 'convert-riscv-to-llvm'
class-attribute
instance-attribute
xlen: int = 32
class-attribute
instance-attribute
apply(ctx: Context, op: builtin.ModuleOp) -> None
Source code in xdsl/transforms/convert_riscv_to_llvm.py
155 156 | |