155 lines · plain
1# RUN: llc -mtriple=hexagon -run-pass hexagon-bit-simplify -o - %s | FileCheck %s2 3--- |4 @g0 = global i32 0, align 45 6 define i32 @f0() { ret i32 0 }7 define i32 @f1() { ret i32 0 }8 define i32 @f2() { ret i32 0 }9 define i32 @f3() { ret i32 0 }10 define i32 @f4() { ret i32 0 }11 define i32 @f5() { ret i32 0 }12 define i32 @f6() { ret i32 0 }13 define i32 @f7() { ret i32 0 }14...15 16# Case 0: is-zero with known zero register17# CHECK-LABEL: name: f018# CHECK: %[[R00:[0-9]+]]:intregs = A2_tfrsi 119# CHECK: $r0 = COPY %[[R00]]20# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r021 22name: f023tracksRegLiveness: true24body: |25 bb.0:26 %0:intregs = A2_tfrsi 027 %2:intregs = A4_rcmpeqi killed %0, 028 $r0 = COPY %229 PS_jmpret $r31, implicit-def dead $pc, implicit $r030...31 32# Case 1: is-zero with known non-zero register33# CHECK-LABEL: name: f134# CHECK: %[[R10:[0-9]+]]:intregs = A2_tfrsi 035# CHECK: $r0 = COPY %[[R10]]36# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r037 38name: f139tracksRegLiveness: true40body: |41 bb.0:42 %0:intregs = A2_tfrsi 12843 %2:intregs = A4_rcmpeqi killed %0, 044 $r0 = COPY %245 PS_jmpret $r31, implicit-def dead $pc, implicit $r046...47 48# Case 2: is-not-zero with known zero register49# CHECK-LABEL: name: f250# CHECK: %[[R20:[0-9]+]]:intregs = A2_tfrsi 051# CHECK: $r0 = COPY %[[R20]]52# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r053 54name: f255tracksRegLiveness: true56body: |57 bb.0:58 %0:intregs = A2_tfrsi 059 %2:intregs = A4_rcmpneqi killed %0, 060 $r0 = COPY %261 PS_jmpret $r31, implicit-def dead $pc, implicit $r062...63 64# Case 3: is-not-zero with known non-zero register65# CHECK-LABEL: name: f366# CHECK: %[[R30:[0-9]+]]:intregs = A2_tfrsi 167# CHECK: $r0 = COPY %[[R30]]68# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r069 70name: f371tracksRegLiveness: true72body: |73 bb.0:74 %0:intregs = A2_tfrsi 102475 %2:intregs = A4_rcmpneqi killed %0, 076 $r0 = COPY %277 PS_jmpret $r31, implicit-def dead $pc, implicit $r078...79 80 81# Case 4: is-zero with mux(p, 1, 0)82# CHECK-LABEL: name: f483# CHECK: %[[R40:[0-9]+]]:predregs = COPY $p084# CHECK: %[[R41:[0-9]+]]:intregs = C2_muxii %[[R40]], 0, 185# CHECK: $r0 = COPY %[[R41]]86# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r087 88name: f489tracksRegLiveness: true90body: |91 bb.0:92 liveins: $p093 %0:predregs = COPY $p094 %1:intregs = C2_muxii %0, 1, 095 %2:intregs = A4_rcmpeqi killed %1, 096 $r0 = COPY %297 PS_jmpret $r31, implicit-def dead $pc, implicit $r098...99 100# Case 5: is-zero with mux(p, 0, 1)101# CHECK-LABEL: name: f5102# CHECK: %[[R50:[0-9]+]]:predregs = COPY $p0103# CHECK: %[[R51:[0-9]+]]:intregs = C2_muxii %[[R50]], 1, 0104# CHECK: $r0 = COPY %[[R51]]105# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r0106 107name: f5108tracksRegLiveness: true109body: |110 bb.0:111 liveins: $p0112 %0:predregs = COPY $p0113 %1:intregs = C2_muxii %0, 0, 1114 %2:intregs = A4_rcmpeqi killed %1, 0115 $r0 = COPY %2116 PS_jmpret $r31, implicit-def dead $pc, implicit $r0117...118 119# Case 6: is-not-zero with mux(p, 1, 2)120# CHECK-LABEL: name: f6121# CHECK: %[[R60:[0-9]+]]:intregs = A2_tfrsi 1122# CHECK: $r0 = COPY %[[R60]]123# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r0124 125name: f6126tracksRegLiveness: true127body: |128 bb.0:129 liveins: $p0130 %0:predregs = COPY $p0131 %1:intregs = C2_muxii %0, 1, 2132 %2:intregs = A4_rcmpneqi killed %1, 0133 $r0 = COPY %2134 PS_jmpret $r31, implicit-def dead $pc, implicit $r0135...136 137# Case 7: is-not-zero with mux(p, @g0, 2)138# CHECK-LABEL: name: f7139# CHECK: %[[R70:[0-9]+]]:intregs = A2_tfrsi 1140# CHECK: $r0 = COPY %[[R70]]141# CHECK: PS_jmpret $r31, implicit-def dead $pc, implicit $r0142 143name: f7144tracksRegLiveness: true145body: |146 bb.0:147 liveins: $p0148 %0:predregs = COPY $p0149 %1:intregs = C2_muxii %0, @g0, 2150 %2:intregs = A4_rcmpneqi killed %1, 0151 $r0 = COPY %2152 PS_jmpret $r31, implicit-def dead $pc, implicit $r0153...154 155