; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky | FileCheck %s
-; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -relocation-model=pic -code-model=small | FileCheck %s --check-prefix=CHECK-PIC-SMALL
-; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -relocation-model=pic -code-model=large | FileCheck %s --check-prefix=CHECK-PIC-LARGE
@p_fun = global void (i32, i32)* @bar, align 8
; CHECK-NEXT: .LCPI0_0:
; CHECK-NEXT: .long bar
;
-; CHECK-PIC-SMALL-LABEL: foo:
-; CHECK-PIC-SMALL: # %bb.0: # %entry
-; CHECK-PIC-SMALL-NEXT: subi16 sp, sp, 8
-; CHECK-PIC-SMALL-NEXT: .cfi_def_cfa_offset 8
-; CHECK-PIC-SMALL-NEXT: st32.w rgb, (sp, 4) # 4-byte Folded Spill
-; CHECK-PIC-SMALL-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill
-; CHECK-PIC-SMALL-NEXT: .cfi_offset rgb, -4
-; CHECK-PIC-SMALL-NEXT: .cfi_offset lr, -8
-; CHECK-PIC-SMALL-NEXT: subi16 sp, sp, 4
-; CHECK-PIC-SMALL-NEXT: .cfi_def_cfa_offset 12
-; CHECK-PIC-SMALL-NEXT: lrw32 rgb, [.LCPI0_0]
-; CHECK-PIC-SMALL-NEXT: mov32 a2, rgb
-; CHECK-PIC-SMALL-NEXT: ld16.w a1, (a1, 0)
-; CHECK-PIC-SMALL-NEXT: lrw32 a3, [.LCPI0_1]
-; CHECK-PIC-SMALL-NEXT: addu16 a2, a2, a3
-; CHECK-PIC-SMALL-NEXT: ld16.w a2, (a2, 0)
-; CHECK-PIC-SMALL-NEXT: jsr16 a2
-; CHECK-PIC-SMALL-NEXT: addi16 sp, sp, 4
-; CHECK-PIC-SMALL-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload
-; CHECK-PIC-SMALL-NEXT: ld32.w rgb, (sp, 4) # 4-byte Folded Reload
-; CHECK-PIC-SMALL-NEXT: addi16 sp, sp, 8
-; CHECK-PIC-SMALL-NEXT: rts16
-; CHECK-PIC-SMALL-NEXT: .p2align 1
-; CHECK-PIC-SMALL-NEXT: # %bb.1:
-; CHECK-PIC-SMALL-NEXT: .p2align 2
-; CHECK-PIC-SMALL-NEXT: .LCPI0_0:
-; CHECK-PIC-SMALL-NEXT: .long _GLOBAL_OFFSET_TABLE_
-; CHECK-PIC-SMALL-NEXT: .LCPI0_1:
-; CHECK-PIC-SMALL-NEXT: .long bar@PLT
-;
-; CHECK-PIC-LARGE-LABEL: foo:
-; CHECK-PIC-LARGE: # %bb.0: # %entry
-; CHECK-PIC-LARGE-NEXT: subi16 sp, sp, 8
-; CHECK-PIC-LARGE-NEXT: .cfi_def_cfa_offset 8
-; CHECK-PIC-LARGE-NEXT: st32.w rgb, (sp, 4) # 4-byte Folded Spill
-; CHECK-PIC-LARGE-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill
-; CHECK-PIC-LARGE-NEXT: .cfi_offset rgb, -4
-; CHECK-PIC-LARGE-NEXT: .cfi_offset lr, -8
-; CHECK-PIC-LARGE-NEXT: subi16 sp, sp, 4
-; CHECK-PIC-LARGE-NEXT: .cfi_def_cfa_offset 12
-; CHECK-PIC-LARGE-NEXT: lrw32 rgb, [.LCPI0_0]
-; CHECK-PIC-LARGE-NEXT: mov32 a2, rgb
-; CHECK-PIC-LARGE-NEXT: ld16.w a1, (a1, 0)
-; CHECK-PIC-LARGE-NEXT: lrw32 a3, [.LCPI0_1]
-; CHECK-PIC-LARGE-NEXT: addu16 a2, a2, a3
-; CHECK-PIC-LARGE-NEXT: ld16.w a2, (a2, 0)
-; CHECK-PIC-LARGE-NEXT: jsr16 a2
-; CHECK-PIC-LARGE-NEXT: addi16 sp, sp, 4
-; CHECK-PIC-LARGE-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload
-; CHECK-PIC-LARGE-NEXT: ld32.w rgb, (sp, 4) # 4-byte Folded Reload
-; CHECK-PIC-LARGE-NEXT: addi16 sp, sp, 8
-; CHECK-PIC-LARGE-NEXT: rts16
-; CHECK-PIC-LARGE-NEXT: .p2align 1
-; CHECK-PIC-LARGE-NEXT: # %bb.1:
-; CHECK-PIC-LARGE-NEXT: .p2align 2
-; CHECK-PIC-LARGE-NEXT: .LCPI0_0:
-; CHECK-PIC-LARGE-NEXT: .long _GLOBAL_OFFSET_TABLE_
-; CHECK-PIC-LARGE-NEXT: .LCPI0_1:
-; CHECK-PIC-LARGE-NEXT: .long bar@PLT
-; CHECK-PIC-LABEL: foo:
-; CHECK-PIC: # %bb.0: # %entry
-; CHECK-PIC-NEXT: ld32.w a1, a1, 0
-; CHECK-PIC-NEXT: br32 bar
entry:
%0 = load i32, i32* %ptr
tail call void (i32, i32) @bar(i32 %a, i32 %0)
; CHECK-NEXT: .LCPI1_0:
; CHECK-NEXT: .long p_fun
;
-; CHECK-PIC-SMALL-LABEL: foo_indirect:
-; CHECK-PIC-SMALL: # %bb.0: # %entry
-; CHECK-PIC-SMALL-NEXT: subi16 sp, sp, 8
-; CHECK-PIC-SMALL-NEXT: .cfi_def_cfa_offset 8
-; CHECK-PIC-SMALL-NEXT: st32.w rgb, (sp, 4) # 4-byte Folded Spill
-; CHECK-PIC-SMALL-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill
-; CHECK-PIC-SMALL-NEXT: .cfi_offset rgb, -4
-; CHECK-PIC-SMALL-NEXT: .cfi_offset lr, -8
-; CHECK-PIC-SMALL-NEXT: subi16 sp, sp, 4
-; CHECK-PIC-SMALL-NEXT: .cfi_def_cfa_offset 12
-; CHECK-PIC-SMALL-NEXT: lrw32 rgb, [.LCPI1_0]
-; CHECK-PIC-SMALL-NEXT: mov32 a2, rgb
-; CHECK-PIC-SMALL-NEXT: lrw32 a3, [.LCPI1_1]
-; CHECK-PIC-SMALL-NEXT: addu16 a2, a2, a3
-; CHECK-PIC-SMALL-NEXT: ld16.w a2, (a2, 0)
-; CHECK-PIC-SMALL-NEXT: ld16.w a2, (a2, 0)
-; CHECK-PIC-SMALL-NEXT: ld16.w a1, (a1, 0)
-; CHECK-PIC-SMALL-NEXT: jsr16 a2
-; CHECK-PIC-SMALL-NEXT: addi16 sp, sp, 4
-; CHECK-PIC-SMALL-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload
-; CHECK-PIC-SMALL-NEXT: ld32.w rgb, (sp, 4) # 4-byte Folded Reload
-; CHECK-PIC-SMALL-NEXT: addi16 sp, sp, 8
-; CHECK-PIC-SMALL-NEXT: rts16
-; CHECK-PIC-SMALL-NEXT: .p2align 1
-; CHECK-PIC-SMALL-NEXT: # %bb.1:
-; CHECK-PIC-SMALL-NEXT: .p2align 2
-; CHECK-PIC-SMALL-NEXT: .LCPI1_0:
-; CHECK-PIC-SMALL-NEXT: .long _GLOBAL_OFFSET_TABLE_
-; CHECK-PIC-SMALL-NEXT: .LCPI1_1:
-; CHECK-PIC-SMALL-NEXT: .long p_fun@GOT
-;
-; CHECK-PIC-LARGE-LABEL: foo_indirect:
-; CHECK-PIC-LARGE: # %bb.0: # %entry
-; CHECK-PIC-LARGE-NEXT: subi16 sp, sp, 8
-; CHECK-PIC-LARGE-NEXT: .cfi_def_cfa_offset 8
-; CHECK-PIC-LARGE-NEXT: st32.w rgb, (sp, 4) # 4-byte Folded Spill
-; CHECK-PIC-LARGE-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill
-; CHECK-PIC-LARGE-NEXT: .cfi_offset rgb, -4
-; CHECK-PIC-LARGE-NEXT: .cfi_offset lr, -8
-; CHECK-PIC-LARGE-NEXT: subi16 sp, sp, 4
-; CHECK-PIC-LARGE-NEXT: .cfi_def_cfa_offset 12
-; CHECK-PIC-LARGE-NEXT: lrw32 rgb, [.LCPI1_0]
-; CHECK-PIC-LARGE-NEXT: mov32 a2, rgb
-; CHECK-PIC-LARGE-NEXT: lrw32 a3, [.LCPI1_1]
-; CHECK-PIC-LARGE-NEXT: addu16 a2, a2, a3
-; CHECK-PIC-LARGE-NEXT: ld16.w a2, (a2, 0)
-; CHECK-PIC-LARGE-NEXT: ld16.w a2, (a2, 0)
-; CHECK-PIC-LARGE-NEXT: ld16.w a1, (a1, 0)
-; CHECK-PIC-LARGE-NEXT: jsr16 a2
-; CHECK-PIC-LARGE-NEXT: addi16 sp, sp, 4
-; CHECK-PIC-LARGE-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload
-; CHECK-PIC-LARGE-NEXT: ld32.w rgb, (sp, 4) # 4-byte Folded Reload
-; CHECK-PIC-LARGE-NEXT: addi16 sp, sp, 8
-; CHECK-PIC-LARGE-NEXT: rts16
-; CHECK-PIC-LARGE-NEXT: .p2align 1
-; CHECK-PIC-LARGE-NEXT: # %bb.1:
-; CHECK-PIC-LARGE-NEXT: .p2align 2
-; CHECK-PIC-LARGE-NEXT: .LCPI1_0:
-; CHECK-PIC-LARGE-NEXT: .long _GLOBAL_OFFSET_TABLE_
-; CHECK-PIC-LARGE-NEXT: .LCPI1_1:
-; CHECK-PIC-LARGE-NEXT: .long p_fun@GOT
-; CHECK-PIC-LABEL: foo_indirect:
-; CHECK-PIC: # %bb.0: # %entry
-; CHECK-PIC-NEXT: movi32 a2, p_fun
-; CHECK-PIC-NEXT: movih32 a3, p_fun
-; CHECK-PIC-NEXT: or32 a2, a3, a2
-; CHECK-PIC-NEXT: ld32.w a2, a2, 0
-; CHECK-PIC-NEXT: ld32.w a1, a1, 0
-; CHECK-PIC-NEXT: jmp32 a2
entry:
%0 = load void (i32, i32)*, void (i32, i32)** @p_fun, align 8
%1 = load i32, i32* %ptr
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -mtriple=csky -verify-machineinstrs -csky-no-aliases -no-integrated-as < %s \
+; RUN: llc -mtriple=csky -verify-machineinstrs -csky-no-aliases -no-integrated-as -mattr=+e2 < %s \
; RUN: | FileCheck -check-prefix=CSKY %s
; These test that we can use both the architectural names (r*) and the ABI names
define i32 @explicit_register_r0(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r0:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a0, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r0}"(i32 %a)
ret i32 %1
define i32 @explicit_register_a0(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_a0:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a0, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{a0}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r1(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r1:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 a1, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a1, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r1}"(i32 %a)
ret i32 %1
define i32 @explicit_register_a1(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_a1:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 a1, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a1, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{a1}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r2(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r2:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 a2, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a2, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r2}"(i32 %a)
ret i32 %1
define i32 @explicit_register_a2(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_a2:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 a2, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a2, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{a2}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r3(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r3:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 a3, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a3, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r3}"(i32 %a)
ret i32 %1
define i32 @explicit_register_a3(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_a3:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 a3, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, a3, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{a3}"(i32 %a)
ret i32 %1
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l0, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l0, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l0, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l0, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l1, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l1, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l1, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l1, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l1, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l1, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l1, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l1, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l2, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l2, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l2, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l2, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l2, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l2, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l2, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l2, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l3, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l3, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l3, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l3, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st16.w l3, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l3, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l3, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld16.w l3, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l4, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l4, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l4, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l4, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l5, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l5, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l5, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l5, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l5, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l5, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l5, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l5, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l6, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l6, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l6, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l6, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l6, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l6, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l6, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l6, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l7, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l7, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l7, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l7, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l7, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 l7, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l7, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l7, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
define i32 @explicit_register_r12(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r12:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 t0, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t0, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r12}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t0(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t0:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 t0, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t0, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t0}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r13(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r13:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 t1, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t1, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r13}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t1(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t1:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 t1, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t1, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t1}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r14(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r14:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 sp, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, sp, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r14}"(i32 %a)
ret i32 %1
define i32 @explicit_register_sp(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_sp:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 sp, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, sp, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{sp}"(i32 %a)
ret i32 %1
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 lr, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, lr, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w lr, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov16 lr, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, lr, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w lr, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l8, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 l8, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l8, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l8, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l8, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 l8, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l8, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l8, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l9, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 l9, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l9, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l9, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w l9, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 l9, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, l9, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w l9, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
define i32 @explicit_register_r18(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r18:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t2, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t2, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r18}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t2(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t2:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t2, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t2, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t2}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r19(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r19:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t3, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t3, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r19}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t3(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t3:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t3, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t3, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t3}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r20(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r20:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t4, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t4, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r20}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t4(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t4:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t4, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t4, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t4}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r21(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r21:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t5, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t5, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r21}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t5(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t5:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t5, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t5, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t5}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r22(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r22:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t6, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t6, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r22}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t6(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t6:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t6, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t6, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t6}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r23(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r23:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t7, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t7, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r23}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t7(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t7:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t7, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t7, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t7}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r24(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r24:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t8, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t8, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r24}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t8(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t8:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t8, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t8, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t8}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r25(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r25:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t9, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t9, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r25}"(i32 %a)
ret i32 %1
define i32 @explicit_register_t9(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_t9:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 t9, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, t9, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{t9}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r26(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r26:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 r26, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, r26, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r26}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r27(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r27:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 r27, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, r27, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r27}"(i32 %a)
ret i32 %1
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w rgb, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 rgb, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, rgb, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w rgb, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
; CSKY: # %bb.0:
; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: st32.w rgb, (sp, 0) # 4-byte Folded Spill
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 rgb, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, rgb, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: ld32.w rgb, (sp, 0) # 4-byte Folded Reload
; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
define i32 @explicit_register_r29(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r29:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 rtb, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, rtb, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r29}"(i32 %a)
ret i32 %1
define i32 @explicit_register_rtb(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_rtb:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 rtb, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, rtb, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{rtb}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r30(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r30:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 svbr, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, svbr, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r30}"(i32 %a)
ret i32 %1
define i32 @explicit_register_svbr(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_svbr:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 svbr, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, svbr, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{svbr}"(i32 %a)
ret i32 %1
define i32 @explicit_register_r31(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_r31:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 tls, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, tls, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{r31}"(i32 %a)
ret i32 %1
define i32 @explicit_register_tls(i32 %a) nounwind {
; CSKY-LABEL: explicit_register_tls:
; CSKY: # %bb.0:
-; CSKY-NEXT: subi16 sp, sp, 4
; CSKY-NEXT: mov32 tls, a0
; CSKY-NEXT: #APP
; CSKY-NEXT: addi a0, tls, 1
; CSKY-NEXT: #NO_APP
-; CSKY-NEXT: addi16 sp, sp, 4
; CSKY-NEXT: rts16
%1 = tail call i32 asm "addi $0, $1, 1", "=r,{tls}"(i32 %a)
ret i32 %1