brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.9 KiB · 38c04e2 Raw
391 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -mtriple aarch64 -aarch64-enable-atomic-cfg-tidy=0 -stop-after=irtranslator -global-isel -verify-machineinstrs -disable-cgp-delete-phis %s -o - 2>&1 | FileCheck %s3 4define i32 @test_bittest(i16 %p) {5  ; CHECK-LABEL: name: test_bittest6  ; CHECK: bb.1 (%ir-block.0):7  ; CHECK-NEXT:   successors: %bb.4(0x1b6db6db), %bb.5(0x64924925)8  ; CHECK-NEXT:   liveins: $w09  ; CHECK-NEXT: {{  $}}10  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w011  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)12  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 11413  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 4214  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 015  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)16  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 017  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s32) = G_SUB [[ZEXT]], [[C3]]18  ; CHECK-NEXT:   [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[SUB]](s32)19  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 5920  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[SUB]](s32), [[C4]]21  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.422  ; CHECK-NEXT:   G_BR %bb.523  ; CHECK-NEXT: {{  $}}24  ; CHECK-NEXT: bb.4 (%ir-block.0):25  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)26  ; CHECK-NEXT: {{  $}}27  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[ZEXT]](s32), [[C]]28  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.329  ; CHECK-NEXT:   G_BR %bb.230  ; CHECK-NEXT: {{  $}}31  ; CHECK-NEXT: bb.5 (%ir-block.0):32  ; CHECK-NEXT:   successors: %bb.3(0x745d1746), %bb.4(0x0ba2e8ba)33  ; CHECK-NEXT: {{  $}}34  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 135  ; CHECK-NEXT:   [[SHL:%[0-9]+]]:_(s64) = G_SHL [[C5]], [[ZEXT1]](s64)36  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 86623924082704384037  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C6]]38  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 039  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s64), [[C7]]40  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.341  ; CHECK-NEXT:   G_BR %bb.442  ; CHECK-NEXT: {{  $}}43  ; CHECK-NEXT: bb.2.sw.epilog:44  ; CHECK-NEXT:   $w0 = COPY [[C2]](s32)45  ; CHECK-NEXT:   RET_ReallyLR implicit $w046  ; CHECK-NEXT: {{  $}}47  ; CHECK-NEXT: bb.3.cb1:48  ; CHECK-NEXT:   $w0 = COPY [[C1]](s32)49  ; CHECK-NEXT:   RET_ReallyLR implicit $w050  switch i16 %p, label %sw.epilog [51    i16 58, label %cb152    i16 59, label %cb153    i16 47, label %cb154    i16 48, label %cb155    i16 50, label %cb156    i16 114, label %cb157  ]58sw.epilog:59  ret i32 060 61cb1:62  ret i32 4263}64 65 66declare void @callee()67 68define void @test_bittest_2_bt(i32 %p) {69  ; CHECK-LABEL: name: test_bittest_2_bt70  ; CHECK: bb.1.entry:71  ; CHECK-NEXT:   successors: %bb.5(0x345d1746), %bb.6(0x4ba2e8ba)72  ; CHECK-NEXT:   liveins: $w073  ; CHECK-NEXT: {{  $}}74  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w075  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 17676  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C]]77  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1578  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[SUB]](s32), [[C1]]79  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.580  ; CHECK-NEXT:   G_BR %bb.681  ; CHECK-NEXT: {{  $}}82  ; CHECK-NEXT: bb.5.entry:83  ; CHECK-NEXT:   successors: %bb.4(0x0ccccccd), %bb.7(0x73333333)84  ; CHECK-NEXT: {{  $}}85  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 086  ; CHECK-NEXT:   [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[C2]]87  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[SUB1]](s32)88  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 3889  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[SUB1]](s32), [[C3]]90  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.491  ; CHECK-NEXT:   G_BR %bb.792  ; CHECK-NEXT: {{  $}}93  ; CHECK-NEXT: bb.6.entry:94  ; CHECK-NEXT:   successors: %bb.2(0x76276276), %bb.5(0x09d89d8a)95  ; CHECK-NEXT: {{  $}}96  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 197  ; CHECK-NEXT:   [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C4]], [[SUB]](s32)98  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 5735199  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C5]]100  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 0101  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C6]]102  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.2103  ; CHECK-NEXT:   G_BR %bb.5104  ; CHECK-NEXT: {{  $}}105  ; CHECK-NEXT: bb.7.entry:106  ; CHECK-NEXT:   successors: %bb.3(0x71c71c72), %bb.4(0x0e38e38e)107  ; CHECK-NEXT: {{  $}}108  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 1109  ; CHECK-NEXT:   [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[C7]], [[ZEXT]](s64)110  ; CHECK-NEXT:   [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 365072220160111  ; CHECK-NEXT:   [[AND1:%[0-9]+]]:_(s64) = G_AND [[SHL1]], [[C8]]112  ; CHECK-NEXT:   [[C9:%[0-9]+]]:_(s64) = G_CONSTANT i64 0113  ; CHECK-NEXT:   [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND1]](s64), [[C9]]114  ; CHECK-NEXT:   G_BRCOND [[ICMP3]](s1), %bb.3115  ; CHECK-NEXT:   G_BR %bb.4116  ; CHECK-NEXT: {{  $}}117  ; CHECK-NEXT: bb.2.sw.bb37:118  ; CHECK-NEXT:   TCRETURNdi @callee, 0, csr_aarch64_aapcs, implicit $sp119  ; CHECK-NEXT: {{  $}}120  ; CHECK-NEXT: bb.3.sw.bb55:121  ; CHECK-NEXT:   TCRETURNdi @callee, 0, csr_aarch64_aapcs, implicit $sp122  ; CHECK-NEXT: {{  $}}123  ; CHECK-NEXT: bb.4.sw.default:124  ; CHECK-NEXT:   RET_ReallyLR125entry:126  switch i32 %p, label %sw.default [127    i32 32, label %sw.bb55128    i32 34, label %sw.bb55129    i32 36, label %sw.bb55130    i32 191, label %sw.bb37131    i32 190, label %sw.bb37132    i32 189, label %sw.bb37133    i32 178, label %sw.bb37134    i32 177, label %sw.bb37135    i32 176, label %sw.bb37136    i32 38, label %sw.bb55137  ]138 139sw.bb37:                                          ; preds = %entry, %entry, %entry, %entry, %entry, %entry140  tail call void @callee()141  ret void142 143sw.bb55:                                          ; preds = %entry, %entry, %entry, %entry144  tail call void @callee()145  ret void146 147sw.default:                                       ; preds = %entry148  ret void149}150 151define i32 @test_bittest_single_bt_only_with_fallthrough(i16 %p) {152  ; CHECK-LABEL: name: test_bittest_single_bt_only_with_fallthrough153  ; CHECK: bb.1 (%ir-block.0):154  ; CHECK-NEXT:   successors: %bb.2(0x0aaaaaab), %bb.4(0x75555555)155  ; CHECK-NEXT:   liveins: $w0156  ; CHECK-NEXT: {{  $}}157  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s32) = COPY $w0158  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)159  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 42160  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0161  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s16)162  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0163  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s32) = G_SUB [[ZEXT]], [[C2]]164  ; CHECK-NEXT:   [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[SUB]](s32)165  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 59166  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[SUB]](s32), [[C3]]167  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.2168  ; CHECK-NEXT: {{  $}}169  ; CHECK-NEXT: bb.4 (%ir-block.0):170  ; CHECK-NEXT:   successors: %bb.3(0x745d1746), %bb.2(0x0ba2e8ba)171  ; CHECK-NEXT: {{  $}}172  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 1173  ; CHECK-NEXT:   [[SHL:%[0-9]+]]:_(s64) = G_SHL [[C4]], [[ZEXT1]](s64)174  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 866239240827043840175  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C5]]176  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 0177  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s64), [[C6]]178  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.3179  ; CHECK-NEXT: {{  $}}180  ; CHECK-NEXT: bb.2.sw.epilog:181  ; CHECK-NEXT:   $w0 = COPY [[C1]](s32)182  ; CHECK-NEXT:   RET_ReallyLR implicit $w0183  ; CHECK-NEXT: {{  $}}184  ; CHECK-NEXT: bb.3.cb1:185  ; CHECK-NEXT:   $w0 = COPY [[C]](s32)186  ; CHECK-NEXT:   RET_ReallyLR implicit $w0187  switch i16 %p, label %sw.epilog [188    i16 58, label %cb1189    i16 59, label %cb1190    i16 47, label %cb1191    i16 48, label %cb1192    i16 50, label %cb1193  ]194sw.epilog:195  ret i32 0196 197cb1:198  ret i32 42199}200 201define void @bit_test_block_incomplete_phi() {202  ; CHECK-LABEL: name: bit_test_block_incomplete_phi203  ; CHECK: bb.1.entry:204  ; CHECK-NEXT:   successors: %bb.5(0x80000000)205  ; CHECK-NEXT: {{  $}}206  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF207  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:_(p0) = G_IMPLICIT_DEF208  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 false209  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s1) = G_CONSTANT i1 true210  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0211  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s32) = G_SUB [[DEF]], [[C2]]212  ; CHECK-NEXT: {{  $}}213  ; CHECK-NEXT: bb.5.entry:214  ; CHECK-NEXT:   successors: %bb.3(0x51745d17), %bb.4(0x2e8ba2e9)215  ; CHECK-NEXT: {{  $}}216  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 1217  ; CHECK-NEXT:   [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C3]], [[SUB]](s32)218  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s32) = G_CONSTANT i32 491219  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C4]]220  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 0221  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C5]]222  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.3223  ; CHECK-NEXT:   G_BR %bb.4224  ; CHECK-NEXT: {{  $}}225  ; CHECK-NEXT: bb.6.entry:226  ; CHECK-NEXT:   successors:227  ; CHECK: bb.2.sw.epilog.i:228  ; CHECK-NEXT:   successors:229  ; CHECK: bb.3.if.end:230  ; CHECK-NEXT:   successors: %bb.4(0x80000000)231  ; CHECK-NEXT: {{  $}}232  ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[DEF1]](p0) :: (load (p0) from `ptr undef`)233  ; CHECK-NEXT: {{  $}}234  ; CHECK-NEXT: bb.4.return:235  ; CHECK-NEXT:   [[PHI:%[0-9]+]]:_(s1) = G_PHI [[C]](s1), %bb.3, [[C1]](s1), %bb.5236  ; CHECK-NEXT:   RET_ReallyLR237entry:238  switch i32 undef, label %sw.epilog.i [239    i32 4, label %return240    i32 2, label %return241    i32 10, label %return242    i32 9, label %return243    i32 1, label %if.end244    i32 3, label %if.end245    i32 5, label %if.end246    i32 0, label %if.end247    i32 6, label %if.end248    i32 7, label %if.end249    i32 8, label %if.end250  ]251 252sw.epilog.i:                                      ; preds = %entry253  unreachable254 255if.end:                                           ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry256  %0 = load ptr, ptr undef, align 8257  br label %return258 259return:                                           ; preds = %if.end, %entry, %entry, %entry, %entry260  %retval.0 = phi i1 [ false, %if.end ], [ true, %entry ], [ true, %entry ], [ true, %entry ], [ true, %entry ]261  ret void262}263 264define i32 @test_odd_type(i328 %p) {265  ; CHECK-LABEL: name: test_odd_type266  ; CHECK: bb.1 (%ir-block.0):267  ; CHECK-NEXT:   successors: %bb.4(0x1b6db6db), %bb.5(0x64924925)268  ; CHECK-NEXT:   liveins: $x0, $x1, $x2, $x3, $x4, $x5269  ; CHECK-NEXT: {{  $}}270  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x0271  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x1272  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x2273  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s64) = COPY $x3274  ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:_(s64) = COPY $x4275  ; CHECK-NEXT:   [[COPY5:%[0-9]+]]:_(s64) = COPY $x5276  ; CHECK-NEXT:   [[MV:%[0-9]+]]:_(s384) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64), [[COPY4]](s64), [[COPY5]](s64)277  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s328) = G_TRUNC [[MV]](s384)278  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s328) = G_CONSTANT i328 114279  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 42280  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0281  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s328) = G_CONSTANT i328 0282  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s328) = G_SUB [[TRUNC]], [[C3]]283  ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[SUB]](s328)284  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s328) = G_CONSTANT i328 59285  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[SUB]](s328), [[C4]]286  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.4287  ; CHECK-NEXT:   G_BR %bb.5288  ; CHECK-NEXT: {{  $}}289  ; CHECK-NEXT: bb.4 (%ir-block.0):290  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)291  ; CHECK-NEXT: {{  $}}292  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[TRUNC]](s328), [[C]]293  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.3294  ; CHECK-NEXT:   G_BR %bb.2295  ; CHECK-NEXT: {{  $}}296  ; CHECK-NEXT: bb.5 (%ir-block.0):297  ; CHECK-NEXT:   successors: %bb.3(0x745d1746), %bb.4(0x0ba2e8ba)298  ; CHECK-NEXT: {{  $}}299  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1300  ; CHECK-NEXT:   [[SHL:%[0-9]+]]:_(s64) = G_SHL [[C5]], [[TRUNC1]](s64)301  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 866239240827043840302  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C6]]303  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 0304  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s64), [[C7]]305  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.3306  ; CHECK-NEXT:   G_BR %bb.4307  ; CHECK-NEXT: {{  $}}308  ; CHECK-NEXT: bb.2.sw.epilog:309  ; CHECK-NEXT:   $w0 = COPY [[C2]](s32)310  ; CHECK-NEXT:   RET_ReallyLR implicit $w0311  ; CHECK-NEXT: {{  $}}312  ; CHECK-NEXT: bb.3.cb1:313  ; CHECK-NEXT:   $w0 = COPY [[C1]](s32)314  ; CHECK-NEXT:   RET_ReallyLR implicit $w0315  switch i328 %p, label %sw.epilog [316    i328 58, label %cb1317    i328 59, label %cb1318    i328 47, label %cb1319    i328 48, label %cb1320    i328 50, label %cb1321    i328 114, label %cb1322  ]323sw.epilog:324  ret i32 0325cb1:326  ret i32 42327}328 329define i32 @test_large_pow2_type(i256 %p) {330  ; CHECK-LABEL: name: test_large_pow2_type331  ; CHECK: bb.1 (%ir-block.0):332  ; CHECK-NEXT:   successors: %bb.4(0x1b6db6db), %bb.5(0x64924925)333  ; CHECK-NEXT:   liveins: $x0, $x1, $x2, $x3334  ; CHECK-NEXT: {{  $}}335  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x0336  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:_(s64) = COPY $x1337  ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:_(s64) = COPY $x2338  ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:_(s64) = COPY $x3339  ; CHECK-NEXT:   [[MV:%[0-9]+]]:_(s256) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64), [[COPY2]](s64), [[COPY3]](s64)340  ; CHECK-NEXT:   [[C:%[0-9]+]]:_(s256) = G_CONSTANT i256 114341  ; CHECK-NEXT:   [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 42342  ; CHECK-NEXT:   [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0343  ; CHECK-NEXT:   [[C3:%[0-9]+]]:_(s256) = G_CONSTANT i256 0344  ; CHECK-NEXT:   [[SUB:%[0-9]+]]:_(s256) = G_SUB [[MV]], [[C3]]345  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[SUB]](s256)346  ; CHECK-NEXT:   [[C4:%[0-9]+]]:_(s256) = G_CONSTANT i256 59347  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[SUB]](s256), [[C4]]348  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.4349  ; CHECK-NEXT:   G_BR %bb.5350  ; CHECK-NEXT: {{  $}}351  ; CHECK-NEXT: bb.4 (%ir-block.0):352  ; CHECK-NEXT:   successors: %bb.3(0x40000000), %bb.2(0x40000000)353  ; CHECK-NEXT: {{  $}}354  ; CHECK-NEXT:   [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[MV]](s256), [[C]]355  ; CHECK-NEXT:   G_BRCOND [[ICMP1]](s1), %bb.3356  ; CHECK-NEXT:   G_BR %bb.2357  ; CHECK-NEXT: {{  $}}358  ; CHECK-NEXT: bb.5 (%ir-block.0):359  ; CHECK-NEXT:   successors: %bb.3(0x745d1746), %bb.4(0x0ba2e8ba)360  ; CHECK-NEXT: {{  $}}361  ; CHECK-NEXT:   [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1362  ; CHECK-NEXT:   [[SHL:%[0-9]+]]:_(s64) = G_SHL [[C5]], [[TRUNC]](s64)363  ; CHECK-NEXT:   [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 866239240827043840364  ; CHECK-NEXT:   [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C6]]365  ; CHECK-NEXT:   [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 0366  ; CHECK-NEXT:   [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[AND]](s64), [[C7]]367  ; CHECK-NEXT:   G_BRCOND [[ICMP2]](s1), %bb.3368  ; CHECK-NEXT:   G_BR %bb.4369  ; CHECK-NEXT: {{  $}}370  ; CHECK-NEXT: bb.2.sw.epilog:371  ; CHECK-NEXT:   $w0 = COPY [[C2]](s32)372  ; CHECK-NEXT:   RET_ReallyLR implicit $w0373  ; CHECK-NEXT: {{  $}}374  ; CHECK-NEXT: bb.3.cb1:375  ; CHECK-NEXT:   $w0 = COPY [[C1]](s32)376  ; CHECK-NEXT:   RET_ReallyLR implicit $w0377  switch i256 %p, label %sw.epilog [378    i256 58, label %cb1379    i256 59, label %cb1380    i256 47, label %cb1381    i256 48, label %cb1382    i256 50, label %cb1383    i256 114, label %cb1384  ]385sw.epilog:386  ret i32 0387cb1:388  ret i32 42389}390 391