brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.8 KiB · 34e2971 Raw
443 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -mtriple=riscv32 -global-isel -stop-after=irtranslator -verify-machineinstrs < %s \3; RUN:   | FileCheck -check-prefix=RV32I %s4; RUN: llc -mtriple=riscv64 -global-isel -stop-after=irtranslator -verify-machineinstrs < %s \5; RUN:   | FileCheck -check-prefix=RV64I %s6 7declare void @void_noargs()8 9define void @test_call_void_noargs() {10 11  ; RV32I-LABEL: name: test_call_void_noargs12  ; RV32I: bb.1.entry:13  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x214  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @void_noargs, csr_ilp32_lp64, implicit-def $x115  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x216  ; RV32I-NEXT:   PseudoRET17  ;18  ; RV64I-LABEL: name: test_call_void_noargs19  ; RV64I: bb.1.entry:20  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x221  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @void_noargs, csr_ilp32_lp64, implicit-def $x122  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x223  ; RV64I-NEXT:   PseudoRET24entry:25  call void @void_noargs()26  ret void27}28 29declare void @void_args_i8(i8, i8)30 31define void @test_call_void_args_i8() {32 33  ; RV32I-LABEL: name: test_call_void_args_i834  ; RV32I: bb.1.entry:35  ; RV32I-NEXT:   [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 036  ; RV32I-NEXT:   [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 137  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x238  ; RV32I-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[C]](s8)39  ; RV32I-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[C1]](s8)40  ; RV32I-NEXT:   $x10 = COPY [[ANYEXT]](s32)41  ; RV32I-NEXT:   $x11 = COPY [[ANYEXT1]](s32)42  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i8, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x1143  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x244  ; RV32I-NEXT:   PseudoRET45  ;46  ; RV64I-LABEL: name: test_call_void_args_i847  ; RV64I: bb.1.entry:48  ; RV64I-NEXT:   [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 049  ; RV64I-NEXT:   [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 150  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x251  ; RV64I-NEXT:   [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[C]](s8)52  ; RV64I-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C1]](s8)53  ; RV64I-NEXT:   $x10 = COPY [[ANYEXT]](s64)54  ; RV64I-NEXT:   $x11 = COPY [[ANYEXT1]](s64)55  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i8, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x1156  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x257  ; RV64I-NEXT:   PseudoRET58entry:59  call void @void_args_i8(i8 0, i8 1)60  ret void61}62 63declare void @void_args_i8_zext(i8 zeroext, i8 zeroext)64 65define void @test_call_void_args_i8_zext() {66 67  ; RV32I-LABEL: name: test_call_void_args_i8_zext68  ; RV32I: bb.1.entry:69  ; RV32I-NEXT:   [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 070  ; RV32I-NEXT:   [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 171  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x272  ; RV32I-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[C]](s8)73  ; RV32I-NEXT:   [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[C1]](s8)74  ; RV32I-NEXT:   $x10 = COPY [[ZEXT]](s32)75  ; RV32I-NEXT:   $x11 = COPY [[ZEXT1]](s32)76  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i8_zext, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x1177  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x278  ; RV32I-NEXT:   PseudoRET79  ;80  ; RV64I-LABEL: name: test_call_void_args_i8_zext81  ; RV64I: bb.1.entry:82  ; RV64I-NEXT:   [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 083  ; RV64I-NEXT:   [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 184  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x285  ; RV64I-NEXT:   [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[C]](s8)86  ; RV64I-NEXT:   [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[C1]](s8)87  ; RV64I-NEXT:   $x10 = COPY [[ZEXT]](s64)88  ; RV64I-NEXT:   $x11 = COPY [[ZEXT1]](s64)89  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i8_zext, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x1190  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x291  ; RV64I-NEXT:   PseudoRET92entry:93  call void @void_args_i8_zext(i8 zeroext 0, i8 zeroext 1)94  ret void95}96 97declare void @void_args_i16_sext(i16 signext, i16 signext)98 99define void @test_call_void_args_i16_sext() {100 101  ; RV32I-LABEL: name: test_call_void_args_i16_sext102  ; RV32I: bb.1.entry:103  ; RV32I-NEXT:   [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0104  ; RV32I-NEXT:   [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 1105  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2106  ; RV32I-NEXT:   [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[C]](s16)107  ; RV32I-NEXT:   [[SEXT1:%[0-9]+]]:_(s32) = G_SEXT [[C1]](s16)108  ; RV32I-NEXT:   $x10 = COPY [[SEXT]](s32)109  ; RV32I-NEXT:   $x11 = COPY [[SEXT1]](s32)110  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i16_sext, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11111  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2112  ; RV32I-NEXT:   PseudoRET113  ;114  ; RV64I-LABEL: name: test_call_void_args_i16_sext115  ; RV64I: bb.1.entry:116  ; RV64I-NEXT:   [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0117  ; RV64I-NEXT:   [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 1118  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2119  ; RV64I-NEXT:   [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[C]](s16)120  ; RV64I-NEXT:   [[SEXT1:%[0-9]+]]:_(s64) = G_SEXT [[C1]](s16)121  ; RV64I-NEXT:   $x10 = COPY [[SEXT]](s64)122  ; RV64I-NEXT:   $x11 = COPY [[SEXT1]](s64)123  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i16_sext, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11124  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2125  ; RV64I-NEXT:   PseudoRET126entry:127  call void @void_args_i16_sext(i16 signext 0, i16 signext 1)128  ret void129}130 131declare void @void_args_i32(i32, i32)132 133define void @test_call_void_args_i32() {134 135  ; RV32I-LABEL: name: test_call_void_args_i32136  ; RV32I: bb.1.entry:137  ; RV32I-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0138  ; RV32I-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1139  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2140  ; RV32I-NEXT:   $x10 = COPY [[C]](s32)141  ; RV32I-NEXT:   $x11 = COPY [[C1]](s32)142  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i32, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11143  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2144  ; RV32I-NEXT:   PseudoRET145  ;146  ; RV64I-LABEL: name: test_call_void_args_i32147  ; RV64I: bb.1.entry:148  ; RV64I-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0149  ; RV64I-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1150  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2151  ; RV64I-NEXT:   [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[C]](s32)152  ; RV64I-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[C1]](s32)153  ; RV64I-NEXT:   $x10 = COPY [[ANYEXT]](s64)154  ; RV64I-NEXT:   $x11 = COPY [[ANYEXT1]](s64)155  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i32, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11156  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2157  ; RV64I-NEXT:   PseudoRET158entry:159  call void @void_args_i32(i32 0, i32 1)160  ret void161}162 163declare void @void_args_i64(i64, i64)164 165define void @test_call_void_args_i64() {166 167  ; RV32I-LABEL: name: test_call_void_args_i64168  ; RV32I: bb.1.entry:169  ; RV32I-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0170  ; RV32I-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1171  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2172  ; RV32I-NEXT:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[C]](s64)173  ; RV32I-NEXT:   [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[C1]](s64)174  ; RV32I-NEXT:   $x10 = COPY [[UV]](s32)175  ; RV32I-NEXT:   $x11 = COPY [[UV1]](s32)176  ; RV32I-NEXT:   $x12 = COPY [[UV2]](s32)177  ; RV32I-NEXT:   $x13 = COPY [[UV3]](s32)178  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i64, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13179  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2180  ; RV32I-NEXT:   PseudoRET181  ;182  ; RV64I-LABEL: name: test_call_void_args_i64183  ; RV64I: bb.1.entry:184  ; RV64I-NEXT:   [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0185  ; RV64I-NEXT:   [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1186  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2187  ; RV64I-NEXT:   $x10 = COPY [[C]](s64)188  ; RV64I-NEXT:   $x11 = COPY [[C1]](s64)189  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @void_args_i64, csr_ilp32_lp64, implicit-def $x1, implicit $x10, implicit $x11190  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2191  ; RV64I-NEXT:   PseudoRET192entry:193  call void @void_args_i64(i64 0, i64 1)194  ret void195}196 197declare i8 @i8_noargs()198 199define void @test_call_i8_noargs() {200 201  ; RV32I-LABEL: name: test_call_i8_noargs202  ; RV32I: bb.1.entry:203  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2204  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @i8_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10205  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2206  ; RV32I-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $x10207  ; RV32I-NEXT:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)208  ; RV32I-NEXT:   PseudoRET209  ;210  ; RV64I-LABEL: name: test_call_i8_noargs211  ; RV64I: bb.1.entry:212  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2213  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @i8_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10214  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2215  ; RV64I-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10216  ; RV64I-NEXT:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s64)217  ; RV64I-NEXT:   PseudoRET218entry:219  %a = call i8 @i8_noargs()220  ret void221}222 223declare i16 @i16_noargs()224 225define void @test_call_i16_noargs() {226 227  ; RV32I-LABEL: name: test_call_i16_noargs228  ; RV32I: bb.1.entry:229  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2230  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @i16_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10231  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2232  ; RV32I-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $x10233  ; RV32I-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)234  ; RV32I-NEXT:   PseudoRET235  ;236  ; RV64I-LABEL: name: test_call_i16_noargs237  ; RV64I: bb.1.entry:238  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2239  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @i16_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10240  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2241  ; RV64I-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10242  ; RV64I-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s64)243  ; RV64I-NEXT:   PseudoRET244entry:245  %a = call i16 @i16_noargs()246  ret void247}248 249declare i32 @i32_noargs()250 251define void @test_call_i32_noargs() {252 253  ; RV32I-LABEL: name: test_call_i32_noargs254  ; RV32I: bb.1.entry:255  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2256  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @i32_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10257  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2258  ; RV32I-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $x10259  ; RV32I-NEXT:   PseudoRET260  ;261  ; RV64I-LABEL: name: test_call_i32_noargs262  ; RV64I: bb.1.entry:263  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2264  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @i32_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10265  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2266  ; RV64I-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10267  ; RV64I-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)268  ; RV64I-NEXT:   PseudoRET269entry:270  %a = call i32 @i32_noargs()271  ret void272}273 274declare i64 @i64_noargs()275 276define void @test_call_i64_noargs() {277 278  ; RV32I-LABEL: name: test_call_i64_noargs279  ; RV32I: bb.1.entry:280  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2281  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @i64_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10, implicit-def $x11282  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2283  ; RV32I-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $x10284  ; RV32I-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $x11285  ; RV32I-NEXT:   [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)286  ; RV32I-NEXT:   PseudoRET287  ;288  ; RV64I-LABEL: name: test_call_i64_noargs289  ; RV64I: bb.1.entry:290  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2291  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @i64_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10292  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2293  ; RV64I-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10294  ; RV64I-NEXT:   PseudoRET295entry:296  %a = call i64 @i64_noargs()297  ret void298}299 300declare ptr @ptr_noargs()301 302define void @test_call_ptr_noargs() {303  ; RV32I-LABEL: name: test_call_ptr_noargs304  ; RV32I: bb.1.entry:305  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2306  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @ptr_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10307  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2308  ; RV32I-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x10309  ; RV32I-NEXT:   PseudoRET310  ;311  ; RV64I-LABEL: name: test_call_ptr_noargs312  ; RV64I: bb.1.entry:313  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2314  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @ptr_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10315  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2316  ; RV64I-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x10317  ; RV64I-NEXT:   PseudoRET318entry:319  %a = call ptr @ptr_noargs()320  ret void321}322 323declare [2 x i32] @i32x2_noargs()324 325define void @test_call_i32x2_noargs() {326  ; RV32I-LABEL: name: test_call_i32x2_noargs327  ; RV32I: bb.1.entry:328  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2329  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @i32x2_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10, implicit-def $x11330  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2331  ; RV32I-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $x10332  ; RV32I-NEXT:   [[COPY1:%[0-9]+]]:_(s32) = COPY $x11333  ; RV32I-NEXT:   PseudoRET334  ;335  ; RV64I-LABEL: name: test_call_i32x2_noargs336  ; RV64I: bb.1.entry:337  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2338  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @i32x2_noargs, csr_ilp32_lp64, implicit-def $x1, implicit-def $x10, implicit-def $x11339  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2340  ; RV64I-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x10341  ; RV64I-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)342  ; RV64I-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x11343  ; RV64I-NEXT:   [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)344  ; RV64I-NEXT:   PseudoRET345entry:346  %a = call [2 x i32] @i32x2_noargs()347  ret void348}349 350%struct.Foo = type { i32, i32, i32, i16, i8 }351@foo = global %struct.Foo { i32 1, i32 2, i32 3, i16 4, i8 5 }, align 4352 353declare void @void_sret_args(ptr sret(%struct.Foo) %f)354 355define void @test_void_sret_args() {356  ; RV32I-LABEL: name: test_void_sret_args357  ; RV32I: bb.1.entry:358  ; RV32I-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @foo359  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2360  ; RV32I-NEXT:   $x10 = COPY [[GV]](p0)361  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @void_sret_args, csr_ilp32_lp64, implicit-def $x1, implicit $x10362  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2363  ; RV32I-NEXT:   PseudoRET364  ;365  ; RV64I-LABEL: name: test_void_sret_args366  ; RV64I: bb.1.entry:367  ; RV64I-NEXT:   [[GV:%[0-9]+]]:_(p0) = G_GLOBAL_VALUE @foo368  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2369  ; RV64I-NEXT:   $x10 = COPY [[GV]](p0)370  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @void_sret_args, csr_ilp32_lp64, implicit-def $x1, implicit $x10371  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2372  ; RV64I-NEXT:   PseudoRET373entry:374  call void @void_sret_args(ptr sret(%struct.Foo) @foo)375  ret void376}377 378declare external void @external_function()379 380define void @test_call_external() {381  ; RV32I-LABEL: name: test_call_external382  ; RV32I: bb.1.entry:383  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2384  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @external_function, csr_ilp32_lp64, implicit-def $x1385  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2386  ; RV32I-NEXT:   PseudoRET387  ;388  ; RV64I-LABEL: name: test_call_external389  ; RV64I: bb.1.entry:390  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2391  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @external_function, csr_ilp32_lp64, implicit-def $x1392  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2393  ; RV64I-NEXT:   PseudoRET394entry:395  call void @external_function()396  ret void397}398 399declare dso_local void @dso_local_function()400 401define void @test_call_local() {402  ; RV32I-LABEL: name: test_call_local403  ; RV32I: bb.1.entry:404  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2405  ; RV32I-NEXT:   PseudoCALL target-flags(riscv-call) @dso_local_function, csr_ilp32_lp64, implicit-def $x1406  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2407  ; RV32I-NEXT:   PseudoRET408  ;409  ; RV64I-LABEL: name: test_call_local410  ; RV64I: bb.1.entry:411  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2412  ; RV64I-NEXT:   PseudoCALL target-flags(riscv-call) @dso_local_function, csr_ilp32_lp64, implicit-def $x1413  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2414  ; RV64I-NEXT:   PseudoRET415entry:416  call void @dso_local_function()417  ret void418}419 420define void @test_indirect_call(ptr %func) {421  ; RV32I-LABEL: name: test_indirect_call422  ; RV32I: bb.1 (%ir-block.0):423  ; RV32I-NEXT:   liveins: $x10424  ; RV32I-NEXT: {{  $}}425  ; RV32I-NEXT:   [[COPY:%[0-9]+]]:gprjalr(p0) = COPY $x10426  ; RV32I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2427  ; RV32I-NEXT:   PseudoCALLIndirect [[COPY]](p0), csr_ilp32_lp64, implicit-def $x1428  ; RV32I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2429  ; RV32I-NEXT:   PseudoRET430  ;431  ; RV64I-LABEL: name: test_indirect_call432  ; RV64I: bb.1 (%ir-block.0):433  ; RV64I-NEXT:   liveins: $x10434  ; RV64I-NEXT: {{  $}}435  ; RV64I-NEXT:   [[COPY:%[0-9]+]]:gprjalr(p0) = COPY $x10436  ; RV64I-NEXT:   ADJCALLSTACKDOWN 0, 0, implicit-def $x2, implicit $x2437  ; RV64I-NEXT:   PseudoCALLIndirect [[COPY]](p0), csr_ilp32_lp64, implicit-def $x1438  ; RV64I-NEXT:   ADJCALLSTACKUP 0, 0, implicit-def $x2, implicit $x2439  ; RV64I-NEXT:   PseudoRET440  call void %func()441  ret void442}443