[ORC] Fix bug in source file name finding in DebuggerSupportPlugin.
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / legalizer / legalize-jump-table-brjt-rv32.mir
blob97e2badb3ed0ed67df6040fc1ad157c0dd73352c
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \
3 # RUN:   -code-model=small | FileCheck %s
4 # RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \
5 # RUN:   -code-model=medium | FileCheck %s
7 --- |
8   define i32 @jt_test(i32 signext %in) {
9   entry:
10     switch i32 %in, label %default [
11       i32 1, label %bb1
12       i32 2, label %bb2
13       i32 3, label %bb3
14       i32 4, label %bb4
15       i32 5, label %bb5
16       i32 6, label %bb6
17     ]
19   bb1:                                              ; preds = %entry
20     ret i32 4
22   bb2:                                              ; preds = %entry
23     ret i32 3
25   bb3:                                              ; preds = %entry
26     ret i32 2
28   bb4:                                              ; preds = %entry
29     ret i32 1
31   bb5:                                              ; preds = %entry
32     ret i32 100
34   bb6:                                              ; preds = %entry
35     ret i32 200
37   default:                                          ; preds = %entry
38     ret i32 1000
39   }
41 ...
42 ---
43 name:            jt_test
44 tracksRegLiveness: true
45 jumpTable:
46   kind:            block-address
47   entries:
48     - id:              0
49       blocks:          [ '%bb.2', '%bb.3', '%bb.4', '%bb.5', '%bb.6', '%bb.7' ]
50 body:             |
51   ; CHECK-LABEL: name: jt_test
52   ; CHECK: bb.0.entry:
53   ; CHECK-NEXT:   successors: %bb.8(0x40000000), %bb.1(0x40000000)
54   ; CHECK-NEXT:   liveins: $x10
55   ; CHECK-NEXT: {{  $}}
56   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $x10
57   ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 5
58   ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 200
59   ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 100
60   ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
61   ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
62   ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
63   ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 4
64   ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 1000
65   ; CHECK-NEXT:   [[C8:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
66   ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C8]]
67   ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[SUB]](s32), [[C]]
68   ; CHECK-NEXT:   G_BRCOND [[ICMP]](s32), %bb.8
69   ; CHECK-NEXT: {{  $}}
70   ; CHECK-NEXT: bb.1.entry:
71   ; CHECK-NEXT:   successors: %bb.2(0x15555555), %bb.3(0x15555555), %bb.4(0x15555555), %bb.5(0x15555555), %bb.6(0x15555555), %bb.7(0x15555555)
72   ; CHECK-NEXT: {{  $}}
73   ; CHECK-NEXT:   [[JUMP_TABLE:%[0-9]+]]:_(p0) = G_JUMP_TABLE %jump-table.0
74   ; CHECK-NEXT:   [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
75   ; CHECK-NEXT:   [[SHL:%[0-9]+]]:_(s32) = G_SHL [[SUB]], [[C9]](s32)
76   ; CHECK-NEXT:   [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[JUMP_TABLE]], [[SHL]](s32)
77   ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[PTR_ADD]](p0) :: (load (s32) from jump-table)
78   ; CHECK-NEXT:   G_BRINDIRECT [[LOAD]](p0)
79   ; CHECK-NEXT: {{  $}}
80   ; CHECK-NEXT: bb.2.bb1:
81   ; CHECK-NEXT:   $x10 = COPY [[C6]](s32)
82   ; CHECK-NEXT:   PseudoRET implicit $x10
83   ; CHECK-NEXT: {{  $}}
84   ; CHECK-NEXT: bb.3.bb2:
85   ; CHECK-NEXT:   $x10 = COPY [[C5]](s32)
86   ; CHECK-NEXT:   PseudoRET implicit $x10
87   ; CHECK-NEXT: {{  $}}
88   ; CHECK-NEXT: bb.4.bb3:
89   ; CHECK-NEXT:   $x10 = COPY [[C4]](s32)
90   ; CHECK-NEXT:   PseudoRET implicit $x10
91   ; CHECK-NEXT: {{  $}}
92   ; CHECK-NEXT: bb.5.bb4:
93   ; CHECK-NEXT:   $x10 = COPY [[C3]](s32)
94   ; CHECK-NEXT:   PseudoRET implicit $x10
95   ; CHECK-NEXT: {{  $}}
96   ; CHECK-NEXT: bb.6.bb5:
97   ; CHECK-NEXT:   $x10 = COPY [[C2]](s32)
98   ; CHECK-NEXT:   PseudoRET implicit $x10
99   ; CHECK-NEXT: {{  $}}
100   ; CHECK-NEXT: bb.7.bb6:
101   ; CHECK-NEXT:   $x10 = COPY [[C1]](s32)
102   ; CHECK-NEXT:   PseudoRET implicit $x10
103   ; CHECK-NEXT: {{  $}}
104   ; CHECK-NEXT: bb.8.default:
105   ; CHECK-NEXT:   $x10 = COPY [[C7]](s32)
106   ; CHECK-NEXT:   PseudoRET implicit $x10
107   bb.1.entry:
108     successors: %bb.8, %bb.9
109     liveins: $x10
111     %0:_(s32) = COPY $x10
112     %4:_(s32) = G_CONSTANT i32 5
113     %8:_(s32) = G_CONSTANT i32 200
114     %9:_(s32) = G_CONSTANT i32 100
115     %10:_(s32) = G_CONSTANT i32 1
116     %11:_(s32) = G_CONSTANT i32 2
117     %12:_(s32) = G_CONSTANT i32 3
118     %13:_(s32) = G_CONSTANT i32 4
119     %14:_(s32) = G_CONSTANT i32 1000
120     %1:_(s32) = G_CONSTANT i32 1
121     %2:_(s32) = G_SUB %0, %1
122     %6:_(s1) = G_ICMP intpred(ugt), %2(s32), %4
123     G_BRCOND %6(s1), %bb.8
125   bb.9.entry:
126     successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.6, %bb.7
128     %7:_(p0) = G_JUMP_TABLE %jump-table.0
129     G_BRJT %7(p0), %jump-table.0, %2(s32)
131   bb.2.bb1:
132     $x10 = COPY %13(s32)
133     PseudoRET implicit $x10
135   bb.3.bb2:
136     $x10 = COPY %12(s32)
137     PseudoRET implicit $x10
139   bb.4.bb3:
140     $x10 = COPY %11(s32)
141     PseudoRET implicit $x10
143   bb.5.bb4:
144     $x10 = COPY %10(s32)
145     PseudoRET implicit $x10
147   bb.6.bb5:
148     $x10 = COPY %9(s32)
149     PseudoRET implicit $x10
151   bb.7.bb6:
152     $x10 = COPY %8(s32)
153     PseudoRET implicit $x10
155   bb.8.default:
156     $x10 = COPY %14(s32)
157     PseudoRET implicit $x10