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