[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / CodeGen / RISCV / GlobalISel / regbankselect / jump-table-brjt-rv64.mir
blob56cac99a2b411fe25edab39e11643b8ff7e6e3c9
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=riscv64 -run-pass=regbankselect \
3 # RUN:   -simplify-mir -verify-machineinstrs %s \
4 # RUN:   -o - | FileCheck -check-prefix=RV64I %s
6 --- |
7   define i32 @jt_test(i32 signext %in) {
8   entry:
9     %0 = sext i32 %in to i64
10     switch i64 %0, label %default [
11       i64 1, label %bb1
12       i64 2, label %bb2
13       i64 3, label %bb3
14       i64 4, label %bb4
15       i64 5, label %bb5
16       i64 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 legalized:       true
45 tracksRegLiveness: true
46 jumpTable:
47   kind:            custom32
48   entries:
49     - id:              0
50       blocks:          [ '%bb.2', '%bb.3', '%bb.4', '%bb.5', '%bb.6', '%bb.7' ]
51 body:             |
52   ; RV64I-LABEL: name: jt_test
53   ; RV64I: bb.0.entry:
54   ; RV64I-NEXT:   liveins: $x10
55   ; RV64I-NEXT: {{  $}}
56   ; RV64I-NEXT:   [[COPY:%[0-9]+]]:gprb(s64) = COPY $x10
57   ; RV64I-NEXT:   [[ASSERT_SEXT:%[0-9]+]]:gprb(s64) = G_ASSERT_SEXT [[COPY]], 32
58   ; RV64I-NEXT:   [[C:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 5
59   ; RV64I-NEXT:   [[SEXT_INREG:%[0-9]+]]:gprb(s64) = G_SEXT_INREG [[ASSERT_SEXT]], 32
60   ; RV64I-NEXT:   [[C1:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1
61   ; RV64I-NEXT:   [[SUB:%[0-9]+]]:gprb(s64) = G_SUB [[SEXT_INREG]], [[C1]]
62   ; RV64I-NEXT:   [[ICMP:%[0-9]+]]:gprb(s64) = G_ICMP intpred(ugt), [[SUB]](s64), [[C]]
63   ; RV64I-NEXT:   G_BRCOND [[ICMP]](s64), %bb.8
64   ; RV64I-NEXT: {{  $}}
65   ; RV64I-NEXT: bb.1.entry:
66   ; RV64I-NEXT:   successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.6, %bb.7
67   ; RV64I-NEXT: {{  $}}
68   ; RV64I-NEXT:   [[JUMP_TABLE:%[0-9]+]]:gprb(p0) = G_JUMP_TABLE %jump-table.0
69   ; RV64I-NEXT:   G_BRJT [[JUMP_TABLE]](p0), %jump-table.0, [[SUB]](s64)
70   ; RV64I-NEXT: {{  $}}
71   ; RV64I-NEXT: bb.2.bb1:
72   ; RV64I-NEXT:   [[C2:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 4
73   ; RV64I-NEXT:   $x10 = COPY [[C2]](s64)
74   ; RV64I-NEXT:   PseudoRET implicit $x10
75   ; RV64I-NEXT: {{  $}}
76   ; RV64I-NEXT: bb.3.bb2:
77   ; RV64I-NEXT:   [[C3:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 3
78   ; RV64I-NEXT:   $x10 = COPY [[C3]](s64)
79   ; RV64I-NEXT:   PseudoRET implicit $x10
80   ; RV64I-NEXT: {{  $}}
81   ; RV64I-NEXT: bb.4.bb3:
82   ; RV64I-NEXT:   [[C4:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 2
83   ; RV64I-NEXT:   $x10 = COPY [[C4]](s64)
84   ; RV64I-NEXT:   PseudoRET implicit $x10
85   ; RV64I-NEXT: {{  $}}
86   ; RV64I-NEXT: bb.5.bb4:
87   ; RV64I-NEXT:   [[C5:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1
88   ; RV64I-NEXT:   $x10 = COPY [[C5]](s64)
89   ; RV64I-NEXT:   PseudoRET implicit $x10
90   ; RV64I-NEXT: {{  $}}
91   ; RV64I-NEXT: bb.6.bb5:
92   ; RV64I-NEXT:   [[C6:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 100
93   ; RV64I-NEXT:   $x10 = COPY [[C6]](s64)
94   ; RV64I-NEXT:   PseudoRET implicit $x10
95   ; RV64I-NEXT: {{  $}}
96   ; RV64I-NEXT: bb.7.bb6:
97   ; RV64I-NEXT:   [[C7:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 200
98   ; RV64I-NEXT:   $x10 = COPY [[C7]](s64)
99   ; RV64I-NEXT:   PseudoRET implicit $x10
100   ; RV64I-NEXT: {{  $}}
101   ; RV64I-NEXT: bb.8.default:
102   ; RV64I-NEXT:   [[C8:%[0-9]+]]:gprb(s64) = G_CONSTANT i64 1000
103   ; RV64I-NEXT:   $x10 = COPY [[C8]](s64)
104   ; RV64I-NEXT:   PseudoRET implicit $x10
105   bb.1.entry:
106     successors: %bb.8, %bb.9
107     liveins: $x10
109     %1:_(s64) = COPY $x10
110     %2:_(s64) = G_ASSERT_SEXT %1, 32
111     %7:_(s64) = G_CONSTANT i64 5
112     %3:_(s64) = G_SEXT_INREG %2, 32
113     %4:_(s64) = G_CONSTANT i64 1
114     %5:_(s64) = G_SUB %3, %4
115     %26:_(s64) = G_ICMP intpred(ugt), %5(s64), %7
116     G_BRCOND %26(s64), %bb.8
118   bb.9.entry:
119     successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.6, %bb.7
121     %10:_(p0) = G_JUMP_TABLE %jump-table.0
122     G_BRJT %10(p0), %jump-table.0, %5(s64)
124   bb.2.bb1:
125     %22:_(s64) = G_CONSTANT i64 4
126     $x10 = COPY %22(s64)
127     PseudoRET implicit $x10
129   bb.3.bb2:
130     %20:_(s64) = G_CONSTANT i64 3
131     $x10 = COPY %20(s64)
132     PseudoRET implicit $x10
134   bb.4.bb3:
135     %18:_(s64) = G_CONSTANT i64 2
136     $x10 = COPY %18(s64)
137     PseudoRET implicit $x10
139   bb.5.bb4:
140     %16:_(s64) = G_CONSTANT i64 1
141     $x10 = COPY %16(s64)
142     PseudoRET implicit $x10
144   bb.6.bb5:
145     %14:_(s64) = G_CONSTANT i64 100
146     $x10 = COPY %14(s64)
147     PseudoRET implicit $x10
149   bb.7.bb6:
150     %12:_(s64) = G_CONSTANT i64 200
151     $x10 = COPY %12(s64)
152     PseudoRET implicit $x10
154   bb.8.default:
155     %24:_(s64) = G_CONSTANT i64 1000
156     $x10 = COPY %24(s64)
157     PseudoRET implicit $x10