@@ -58,6 +58,12 @@ def llc(args, cmd_args, ir):
58
58
r'.Lfunc_end[0-9]+:\n' ,
59
59
flags = (re .M | re .S ))
60
60
61
+ ASM_FUNCTION_RISCV_RE = re .compile (
62
+ r'^_?(?P<func>[^:]+):[ \t]*#+[ \t]*@(?P=func)\n[^:]*?'
63
+ r'(?P<body>^##?[ \t]+[^:]+:.*?)\s*'
64
+ r'.Lfunc_end[0-9]+:\n' ,
65
+ flags = (re .M | re .S ))
66
+
61
67
ASM_FUNCTION_SYSTEMZ_RE = re .compile (
62
68
r'^_?(?P<func>[^:]+):[ \t]*#+[ \t]*@(?P=func)\n'
63
69
r'[ \t]+.cfi_startproc\n'
@@ -135,6 +141,16 @@ def scrub_asm_powerpc64(asm, args):
135
141
asm = SCRUB_TRAILING_WHITESPACE_RE .sub (r'' , asm )
136
142
return asm
137
143
144
+ def scrub_asm_riscv (asm ):
145
+ # Scrub runs of whitespace out of the assembly, but leave the leading
146
+ # whitespace in place.
147
+ asm = SCRUB_WHITESPACE_RE .sub (r' ' , asm )
148
+ # Expand the tabs used for indentation.
149
+ asm = string .expandtabs (asm , 2 )
150
+ # Strip trailing whitespace.
151
+ asm = SCRUB_TRAILING_WHITESPACE_RE .sub (r'' , asm )
152
+ return asm
153
+
138
154
def scrub_asm_systemz (asm , args ):
139
155
# Scrub runs of whitespace out of the assembly, but leave the leading
140
156
# whitespace in place.
@@ -161,6 +177,8 @@ def build_function_body_dictionary(raw_tool_output, triple, prefixes, func_dict,
161
177
'armeb-eabi' : (scrub_asm_arm_eabi , ASM_FUNCTION_ARM_RE ),
162
178
'powerpc64' : (scrub_asm_powerpc64 , ASM_FUNCTION_PPC_RE ),
163
179
'powerpc64le' : (scrub_asm_powerpc64 , ASM_FUNCTION_PPC_RE ),
180
+ 'riscv32' : (scrub_asm_riscv , ASM_FUNCTION_RISCV_RE ),
181
+ 'riscv64' : (scrub_asm_riscv , ASM_FUNCTION_RISCV_RE ),
164
182
's390x' : (scrub_asm_systemz , ASM_FUNCTION_SYSTEMZ_RE ),
165
183
}
166
184
handlers = None
0 commit comments