brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · cd957c8 Raw
217 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass="amdgpu-regbankselect,amdgpu-regbanklegalize" %s -o - | FileCheck %s3 4---5name: brcond_vcc_cond6legalized: true7body:             |8  ; CHECK-LABEL: name: brcond_vcc_cond9  ; CHECK: bb.0.entry:10  ; CHECK-NEXT:   successors: %bb.1(0x80000000)11  ; CHECK-NEXT:   liveins: $vgpr0, $vgpr112  ; CHECK-NEXT: {{  $}}13  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr014  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr115  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]16  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.117  ; CHECK-NEXT: {{  $}}18  ; CHECK-NEXT: bb.1:19  bb.0.entry:20    successors: %bb.121    liveins: $vgpr0, $vgpr122    %0:_(s32) = COPY $vgpr023    %1:_(s32) = COPY $vgpr124    %2:_(s1) = G_ICMP intpred(ne), %0, %125    G_BRCOND %2, %bb.126 27  bb.1:28...29 30---31name: brcond_scc_cond32legalized: true33body:             |34  ; CHECK-LABEL: name: brcond_scc_cond35  ; CHECK: bb.0.entry:36  ; CHECK-NEXT:   successors: %bb.1(0x80000000)37  ; CHECK-NEXT:   liveins: $sgpr0, $sgpr138  ; CHECK-NEXT: {{  $}}39  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr040  ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr141  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]]42  ; CHECK-NEXT:   [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 143  ; CHECK-NEXT:   [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]44  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.145  ; CHECK-NEXT: {{  $}}46  ; CHECK-NEXT: bb.1:47  bb.0.entry:48    successors: %bb.149    liveins: $sgpr0, $sgpr150    %0:_(s32) = COPY $sgpr051    %1:_(s32) = COPY $sgpr152    %2:_(s1) = G_ICMP intpred(ne), %0, %153    G_BRCOND %2, %bb.154 55  bb.1:56...57 58---59name: brcond_sgpr_cond60legalized: true61body:             |62  ; CHECK-LABEL: name: brcond_sgpr_cond63  ; CHECK: bb.0.entry:64  ; CHECK-NEXT:   successors: %bb.1(0x80000000)65  ; CHECK-NEXT:   liveins: $sgpr066  ; CHECK-NEXT: {{  $}}67  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr068  ; CHECK-NEXT:   [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 169  ; CHECK-NEXT:   [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]70  ; CHECK-NEXT:   G_BRCOND [[AND]](s32), %bb.171  ; CHECK-NEXT: {{  $}}72  ; CHECK-NEXT: bb.1:73  bb.0.entry:74    successors: %bb.175    liveins: $sgpr076    %0:_(s32) = COPY $sgpr077    %1:_(s1) = G_TRUNC %078    G_BRCOND %1, %bb.179 80  bb.1:81...82 83---84name: brcond_vgpr_cond85legalized: true86body:             |87  ; CHECK-LABEL: name: brcond_vgpr_cond88  ; CHECK: bb.0.entry:89  ; CHECK-NEXT:   successors: %bb.1(0x80000000)90  ; CHECK-NEXT:   liveins: $vgpr091  ; CHECK-NEXT: {{  $}}92  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr093  ; CHECK-NEXT:   [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 194  ; CHECK-NEXT:   [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]95  ; CHECK-NEXT:   [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 096  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]97  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.198  ; CHECK-NEXT: {{  $}}99  ; CHECK-NEXT: bb.1:100  bb.0.entry:101    successors: %bb.1102    liveins: $vgpr0103    %0:_(s32) = COPY $vgpr0104    %1:_(s1) = G_TRUNC %0105    G_BRCOND %1, %bb.1106 107  bb.1:108...109 110 111# The terminator that needs handling is the only instruction in the112# block.113 114---115name: empty_block_vgpr_brcond116legalized: true117body:             |118  ; CHECK-LABEL: name: empty_block_vgpr_brcond119  ; CHECK: bb.0.entry:120  ; CHECK-NEXT:   successors: %bb.1(0x80000000)121  ; CHECK-NEXT:   liveins: $vgpr0122  ; CHECK-NEXT: {{  $}}123  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0124  ; CHECK-NEXT:   [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1125  ; CHECK-NEXT:   [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]126  ; CHECK-NEXT:   [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0127  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]128  ; CHECK-NEXT: {{  $}}129  ; CHECK-NEXT: bb.1:130  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)131  ; CHECK-NEXT: {{  $}}132  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.1133  ; CHECK-NEXT: {{  $}}134  ; CHECK-NEXT: bb.2:135  bb.0.entry:136    successors: %bb.1137    liveins: $vgpr0138    %0:_(s32) = COPY $vgpr0139    %1:_(s1) = G_TRUNC %0140 141  bb.1:142    G_BRCOND %1, %bb.1143 144  bb.2:145...146 147 148# Make sure the first instruction in the block isn't skipped.149---150name: copy_first_inst_brcond151legalized: true152body:             |153  ; CHECK-LABEL: name: copy_first_inst_brcond154  ; CHECK: bb.0.entry:155  ; CHECK-NEXT:   successors: %bb.1(0x80000000)156  ; CHECK-NEXT:   liveins: $vgpr0157  ; CHECK-NEXT: {{  $}}158  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0159  ; CHECK-NEXT: {{  $}}160  ; CHECK-NEXT: bb.1:161  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)162  ; CHECK-NEXT: {{  $}}163  ; CHECK-NEXT:   [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1164  ; CHECK-NEXT:   [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]165  ; CHECK-NEXT:   [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0166  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]167  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.1168  ; CHECK-NEXT: {{  $}}169  ; CHECK-NEXT: bb.2:170  bb.0.entry:171    successors: %bb.1172    liveins: $vgpr0173    %0:_(s32) = COPY $vgpr0174 175  bb.1:176    %1:_(s1) = G_TRUNC %0177    G_BRCOND %1, %bb.1178 179  bb.2:180...181 182# Extra instruction separates brcond from the condition def183---184name: copy_middle_inst_brcond185legalized: true186body:             |187  ; CHECK-LABEL: name: copy_middle_inst_brcond188  ; CHECK: bb.0.entry:189  ; CHECK-NEXT:   successors: %bb.1(0x80000000)190  ; CHECK-NEXT:   liveins: $vgpr0191  ; CHECK-NEXT: {{  $}}192  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0193  ; CHECK-NEXT: {{  $}}194  ; CHECK-NEXT: bb.1:195  ; CHECK-NEXT:   successors: %bb.1(0x40000000), %bb.2(0x40000000)196  ; CHECK-NEXT: {{  $}}197  ; CHECK-NEXT:   [[C:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1198  ; CHECK-NEXT:   [[AND:%[0-9]+]]:vgpr(s32) = G_AND [[COPY]], [[C]]199  ; CHECK-NEXT:   [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0200  ; CHECK-NEXT:   [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[AND]](s32), [[C1]]201  ; CHECK-NEXT:   S_NOP 0202  ; CHECK-NEXT:   G_BRCOND [[ICMP]](s1), %bb.1203  ; CHECK-NEXT: {{  $}}204  ; CHECK-NEXT: bb.2:205  bb.0.entry:206    successors: %bb.1207    liveins: $vgpr0208    %0:_(s32) = COPY $vgpr0209 210  bb.1:211    %1:_(s1) = G_TRUNC %0212    S_NOP 0213    G_BRCOND %1, %bb.1214 215  bb.2:216...217