xref: /llvm-project/llvm/test/CodeGen/CSKY/switch.ll (revision 157ba33007fe2fd0609c87b7e9c8615ba427740f)
18ddc8169SZi Xuan Wu; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
28ddc8169SZi Xuan Wu; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+2e3 | FileCheck %s
38ddc8169SZi Xuan Wu; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -relocation-model=pic -code-model=small -mattr=+2e3 | FileCheck %s --check-prefix=CHECK-PIC-SMALL
48ddc8169SZi Xuan Wu; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -relocation-model=pic -code-model=large -mattr=+2e3 | FileCheck %s --check-prefix=CHECK-PIC-LARGE
58ddc8169SZi Xuan Wu
68ddc8169SZi Xuan Wudefine i32 @f(i32 %val) {
78ddc8169SZi Xuan Wu; CHECK-LABEL: f:
88ddc8169SZi Xuan Wu; CHECK:       # %bb.0: # %entry
98ddc8169SZi Xuan Wu; CHECK-NEXT:    movi16 a1, 4
108ddc8169SZi Xuan Wu; CHECK-NEXT:    cmphs16 a1, a0
11*157ba330SFangrui Song; CHECK-NEXT:    bf32 .LBB0_7
128ddc8169SZi Xuan Wu; CHECK-NEXT:  # %bb.1: # %entry
138ddc8169SZi Xuan Wu; CHECK-NEXT:    lrw32 a1, [.LCPI0_0]
148ddc8169SZi Xuan Wu; CHECK-NEXT:    ldr32.w a0, (a1, a0 << 2)
158ddc8169SZi Xuan Wu; CHECK-NEXT:    jmp32 a0
16065e0324SZi Xuan Wu; CHECK-NEXT:  .LBB0_2: # %onzero
178ddc8169SZi Xuan Wu; CHECK-NEXT:    movi16 a0, 0
188ddc8169SZi Xuan Wu; CHECK-NEXT:    rts16
19*157ba330SFangrui Song; CHECK-NEXT:  .LBB0_3: # %onthree
20*157ba330SFangrui Song; CHECK-NEXT:    movi16 a0, 3
21*157ba330SFangrui Song; CHECK-NEXT:    rts16
22*157ba330SFangrui Song; CHECK-NEXT:  .LBB0_4: # %ontwo
23*157ba330SFangrui Song; CHECK-NEXT:    movi16 a0, 2
24*157ba330SFangrui Song; CHECK-NEXT:    rts16
25*157ba330SFangrui Song; CHECK-NEXT:  .LBB0_5: # %onfour
26*157ba330SFangrui Song; CHECK-NEXT:    movi16 a0, 4
27*157ba330SFangrui Song; CHECK-NEXT:    rts16
28*157ba330SFangrui Song; CHECK-NEXT:  .LBB0_6: # %onone
29*157ba330SFangrui Song; CHECK-NEXT:    movi16 a0, 1
30*157ba330SFangrui Song; CHECK-NEXT:    rts16
31*157ba330SFangrui Song; CHECK-NEXT:  .LBB0_7: # %otherwise
328ddc8169SZi Xuan Wu; CHECK-NEXT:    movih32 a0, 65535
338ddc8169SZi Xuan Wu; CHECK-NEXT:    ori32 a0, a0, 65535
348ddc8169SZi Xuan Wu; CHECK-NEXT:    rts16
35065e0324SZi Xuan Wu; CHECK-NEXT:    .p2align 1
36065e0324SZi Xuan Wu; CHECK-NEXT:  # %bb.8:
37*157ba330SFangrui Song; CHECK-NEXT:    .p2align 2, 0x0
38065e0324SZi Xuan Wu; CHECK-NEXT:  .LCPI0_0:
39065e0324SZi Xuan Wu; CHECK-NEXT:    .long .LJTI0_0
408ddc8169SZi Xuan Wu;
418ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-LABEL: f:
428ddc8169SZi Xuan Wu; CHECK-PIC-SMALL:       # %bb.0: # %entry
438ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    subi16 sp, sp, 4
448ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    .cfi_def_cfa_offset 4
458ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    st32.w rgb, (sp, 0) # 4-byte Folded Spill
468ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    .cfi_offset rgb, -4
478ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    .cfi_def_cfa_offset 4
488ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    lrw32 rgb, [.LCPI0_0]
498ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    movi16 a1, 4
508ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    cmphs16 a1, a0
51*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:    bf32 .LBB0_7
528ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:  # %bb.1: # %entry
538ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    lrw32 a1, [.LCPI0_1]
548ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    addu32 a1, rgb, a1
558ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    ldr32.w a0, (a1, a0 << 2)
568ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    addu16 a0, a1
578ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    jmp32 a0
58065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:  .LBB0_2: # %onzero
598ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    movi16 a0, 0
60065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    br32 .LBB0_8
61*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:  .LBB0_3: # %onthree
62*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:    movi16 a0, 3
63065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    br32 .LBB0_8
64*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:  .LBB0_4: # %ontwo
658ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    movi16 a0, 2
66065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    br32 .LBB0_8
67*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:  .LBB0_5: # %onfour
688ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    movi16 a0, 4
69065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    br32 .LBB0_8
70*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:  .LBB0_6: # %onone
71*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:    movi16 a0, 1
72*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:    br32 .LBB0_8
73*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:  .LBB0_7: # %otherwise
74*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:    movih32 a0, 65535
75*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:    ori32 a0, a0, 65535
76065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:  .LBB0_8: # %onone
778ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    ld32.w rgb, (sp, 0) # 4-byte Folded Reload
788ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    addi16 sp, sp, 4
798ddc8169SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    rts16
80065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    .p2align 1
81065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:  # %bb.9:
82*157ba330SFangrui Song; CHECK-PIC-SMALL-NEXT:    .p2align 2, 0x0
83065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:  .LCPI0_0:
84065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    .long _GLOBAL_OFFSET_TABLE_
85065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:  .LCPI0_1:
86065e0324SZi Xuan Wu; CHECK-PIC-SMALL-NEXT:    .long .LJTI0_0@GOTOFF
878ddc8169SZi Xuan Wu;
888ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-LABEL: f:
898ddc8169SZi Xuan Wu; CHECK-PIC-LARGE:       # %bb.0: # %entry
908ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    subi16 sp, sp, 4
918ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    .cfi_def_cfa_offset 4
928ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    st32.w rgb, (sp, 0) # 4-byte Folded Spill
938ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    .cfi_offset rgb, -4
948ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    .cfi_def_cfa_offset 4
958ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    lrw32 rgb, [.LCPI0_0]
968ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    movi16 a1, 4
978ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    cmphs16 a1, a0
98*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:    bf32 .LBB0_7
998ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:  # %bb.1: # %entry
1008ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    lrw32 a1, [.LCPI0_1]
1018ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    addu32 a1, rgb, a1
1028ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    ldr32.w a0, (a1, a0 << 2)
1038ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    addu16 a0, a1
1048ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    jmp32 a0
105065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:  .LBB0_2: # %onzero
1068ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    movi16 a0, 0
107065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    br32 .LBB0_8
108*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:  .LBB0_3: # %onthree
109*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:    movi16 a0, 3
110065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    br32 .LBB0_8
111*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:  .LBB0_4: # %ontwo
1128ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    movi16 a0, 2
113065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    br32 .LBB0_8
114*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:  .LBB0_5: # %onfour
1158ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    movi16 a0, 4
116065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    br32 .LBB0_8
117*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:  .LBB0_6: # %onone
118*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:    movi16 a0, 1
119*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:    br32 .LBB0_8
120*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:  .LBB0_7: # %otherwise
121*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:    movih32 a0, 65535
122*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:    ori32 a0, a0, 65535
123065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:  .LBB0_8: # %onone
1248ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    ld32.w rgb, (sp, 0) # 4-byte Folded Reload
1258ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    addi16 sp, sp, 4
1268ddc8169SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    rts16
127065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    .p2align 1
128065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:  # %bb.9:
129*157ba330SFangrui Song; CHECK-PIC-LARGE-NEXT:    .p2align 2, 0x0
130065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:  .LCPI0_0:
131065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    .long _GLOBAL_OFFSET_TABLE_
132065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:  .LCPI0_1:
133065e0324SZi Xuan Wu; CHECK-PIC-LARGE-NEXT:    .long .LJTI0_0@GOTOFF
1348ddc8169SZi Xuan Wuentry:
1358ddc8169SZi Xuan Wu  switch i32 %val, label %otherwise [ i32 0, label %onzero
1368ddc8169SZi Xuan Wu                                      i32 1, label %onone
1378ddc8169SZi Xuan Wu                                      i32 3, label %onfour
1388ddc8169SZi Xuan Wu                                      i32 4, label %onthree
1398ddc8169SZi Xuan Wu                                      i32 2, label %ontwo ]
1408ddc8169SZi Xuan Wuonone:
1418ddc8169SZi Xuan Wu  ret i32 1
1428ddc8169SZi Xuan Wuontwo:
1438ddc8169SZi Xuan Wu  ret i32 2
1448ddc8169SZi Xuan Wuonzero:
1458ddc8169SZi Xuan Wu  ret i32 0
1468ddc8169SZi Xuan Wuonfour:
1478ddc8169SZi Xuan Wu  ret i32 4
1488ddc8169SZi Xuan Wuonthree:
1498ddc8169SZi Xuan Wu  ret i32 3
1508ddc8169SZi Xuan Wuotherwise:
1518ddc8169SZi Xuan Wu  ret i32 -1
1528ddc8169SZi Xuan Wu}
153