@@ -1497,6 +1497,52 @@ define void @call_fn_v_i1z_i1s_i37z_i37s(i1 %a, i1 %b, i37 %c, i37 %d) {
14971497 ret void
14981498}
14991499
1500+ define void @call_fn_v_i1z_i1s_i37z_i37s_const () {
1501+ ; X64-LABEL: <call_fn_v_i1z_i1s_i37z_i37s_const>:
1502+ ; X64: push rbp
1503+ ; X64-NEXT: mov rbp, rsp
1504+ ; X64-NEXT: sub rsp, 0x30
1505+ ; X64-NEXT: xor edi, edi
1506+ ; X64-NEXT: and edi, 0x1
1507+ ; X64-NEXT: mov esi, 0x1
1508+ ; X64-NEXT: shl rsi, 0x3f
1509+ ; X64-NEXT: sar rsi, 0x3f
1510+ ; X64-NEXT: movabs rdx, 0x1fffffff85
1511+ ; X64-NEXT: movabs rax, 0x1fffffffff
1512+ ; X64-NEXT: and rdx, rax
1513+ ; X64-NEXT: movabs rcx, 0x1fffffff85
1514+ ; X64-NEXT: shl rcx, 0x1b
1515+ ; X64-NEXT: sar rcx, 0x1b
1516+ ; X64-NEXT: <L0>:
1517+ ; X64-NEXT: call <L0>
1518+ ; X64-NEXT: R_X86_64_PLT32 fn_v_i1z_i1s_i37z_i37s-0x4
1519+ ; X64-NEXT: add rsp, 0x30
1520+ ; X64-NEXT: pop rbp
1521+ ; X64-NEXT: ret
1522+ ;
1523+ ; ARM64-LABEL: <call_fn_v_i1z_i1s_i37z_i37s_const>:
1524+ ; ARM64: stp x29, x30, [sp, #-0xa0]!
1525+ ; ARM64-NEXT: mov x29, sp
1526+ ; ARM64-NEXT: mov w0, #0x0 // =0
1527+ ; ARM64-NEXT: ubfx x0, x0, #0, #1
1528+ ; ARM64-NEXT: mov x1, #0x1 // =1
1529+ ; ARM64-NEXT: sbfx x1, x1, #0, #1
1530+ ; ARM64-NEXT: mov x2, #0xff85 // =65413
1531+ ; ARM64-NEXT: movk x2, #0xffff, lsl #16
1532+ ; ARM64-NEXT: movk x2, #0x1f, lsl #32
1533+ ; ARM64-NEXT: ubfx x2, x2, #0, #37
1534+ ; ARM64-NEXT: mov x3, #0xff85 // =65413
1535+ ; ARM64-NEXT: movk x3, #0xffff, lsl #16
1536+ ; ARM64-NEXT: movk x3, #0x1f, lsl #32
1537+ ; ARM64-NEXT: sbfx x3, x3, #0, #37
1538+ ; ARM64-NEXT: bl 0x838 <call_fn_v_i1z_i1s_i37z_i37s_const+0x38>
1539+ ; ARM64-NEXT: R_AARCH64_CALL26 fn_v_i1z_i1s_i37z_i37s
1540+ ; ARM64-NEXT: ldp x29, x30, [sp], #0xa0
1541+ ; ARM64-NEXT: ret
1542+ call void @fn_v_i1z_i1s_i37z_i37s (i1 false , i1 true , i37 -123 , i37 -123 )
1543+ ret void
1544+ }
1545+
15001546declare void @fn_v_stack_i1z_i1s_i37z_i37s ([8 x i64 ], i1 zeroext , i1 signext , i37 zeroext , i37 signext )
15011547define void @call_fn_v_stack_i1z_i1s_i37z_i37s (i1 %a , i1 %b , i37 %c , i37 %d ) {
15021548; X64-LABEL: <call_fn_v_stack_i1z_i1s_i37z_i37s>:
@@ -1569,7 +1615,7 @@ define void @call_fn_v_stack_i1z_i1s_i37z_i37s(i1 %a, i1 %b, i37 %c, i37 %d) {
15691615; ARM64-NEXT: ldr x8, [x29, #0xb0]
15701616; ARM64-NEXT: sbfx x8, x8, #0, #37
15711617; ARM64-NEXT: str x8, [sp, #0x18]
1572- ; ARM64-NEXT: bl 0x86c <call_fn_v_stack_i1z_i1s_i37z_i37s+0x6c>
1618+ ; ARM64-NEXT: bl 0x8bc <call_fn_v_stack_i1z_i1s_i37z_i37s+0x6c>
15731619; ARM64-NEXT: R_AARCH64_CALL26 fn_v_stack_i1z_i1s_i37z_i37s
15741620; ARM64-NEXT: add sp, sp, #0x20
15751621; ARM64-NEXT: ldp x29, x30, [sp], #0xc0
@@ -1596,7 +1642,7 @@ define void @call_fn_a2s0_s0_s1s0_i32() {
15961642; ARM64: stp x29, x30, [sp, #-0xa0]!
15971643; ARM64-NEXT: mov x29, sp
15981644; ARM64-NEXT: mov x0, #0x1 // =1
1599- ; ARM64-NEXT: bl 0x88c <call_fn_a2s0_s0_s1s0_i32+0xc>
1645+ ; ARM64-NEXT: bl 0x8dc <call_fn_a2s0_s0_s1s0_i32+0xc>
16001646; ARM64-NEXT: R_AARCH64_CALL26 fn_a2s0_s0_s1s0_i32
16011647; ARM64-NEXT: ldp x29, x30, [sp], #0xa0
16021648; ARM64-NEXT: ret
@@ -1626,7 +1672,7 @@ define void @call_vararg_ind(i64 %a) {
16261672; ARM64: stp x29, x30, [sp, #-0xb0]!
16271673; ARM64-NEXT: mov x29, sp
16281674; ARM64-NEXT: str x0, [x29, #0xa0]
1629- ; ARM64-NEXT: bl 0x8ac <call_vararg_ind+0xc>
1675+ ; ARM64-NEXT: bl 0x8fc <call_vararg_ind+0xc>
16301676; ARM64-NEXT: R_AARCH64_CALL26 fn_ptr
16311677; ARM64-NEXT: str x0, [x29, #0xa8]
16321678; ARM64-NEXT: ldr x0, [x29, #0xa0]
0 commit comments