167 lines · plain
1; RUN: llc < %s -mtriple=msp430 | FileCheck %s2target datalayout = "e-p:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:16:32"3target triple = "msp430-generic-generic"4 5@foo8 = external global i86@bar8 = external global i87 8define i8 @bitbrr(i8 %a, i8 %b) nounwind {9 %t1 = and i8 %a, %b10 %t2 = icmp ne i8 %t1, 011 %t3 = zext i1 %t2 to i812 ret i8 %t313}14; CHECK-LABEL: bitbrr:15; CHECK: bit.b r13, r1216 17define i8 @bitbri(i8 %a) nounwind {18 %t1 = and i8 %a, 1519 %t2 = icmp ne i8 %t1, 020 %t3 = zext i1 %t2 to i821 ret i8 %t322}23; CHECK-LABEL: bitbri:24; CHECK: bit.b #15, r1225 26define i8 @bitbir(i8 %a) nounwind {27 %t1 = and i8 15, %a28 %t2 = icmp ne i8 %t1, 029 %t3 = zext i1 %t2 to i830 ret i8 %t331}32; CHECK-LABEL: bitbir:33; CHECK: bit.b #15, r1234 35define i8 @bitbmi() nounwind {36 %t1 = load i8, ptr @foo837 %t2 = and i8 %t1, 1538 %t3 = icmp ne i8 %t2, 039 %t4 = zext i1 %t3 to i840 ret i8 %t441}42; CHECK-LABEL: bitbmi:43; CHECK: bit.b #15, &foo844 45define i8 @bitbim() nounwind {46 %t1 = load i8, ptr @foo847 %t2 = and i8 15, %t148 %t3 = icmp ne i8 %t2, 049 %t4 = zext i1 %t3 to i850 ret i8 %t451}52; CHECK-LABEL: bitbim:53; CHECK: bit.b #15, &foo854 55define i8 @bitbrm(i8 %a) nounwind {56 %t1 = load i8, ptr @foo857 %t2 = and i8 %a, %t158 %t3 = icmp ne i8 %t2, 059 %t4 = zext i1 %t3 to i860 ret i8 %t461}62; CHECK-LABEL: bitbrm:63; CHECK: bit.b &foo8, r1264 65define i8 @bitbmr(i8 %a) nounwind {66 %t1 = load i8, ptr @foo867 %t2 = and i8 %t1, %a68 %t3 = icmp ne i8 %t2, 069 %t4 = zext i1 %t3 to i870 ret i8 %t471}72; CHECK-LABEL: bitbmr:73; CHECK: bit.b r12, &foo874 75define i8 @bitbmm() nounwind {76 %t1 = load i8, ptr @foo877 %t2 = load i8, ptr @bar878 %t3 = and i8 %t1, %t279 %t4 = icmp ne i8 %t3, 080 %t5 = zext i1 %t4 to i881 ret i8 %t582}83; CHECK-LABEL: bitbmm:84; CHECK: bit.b &bar8, &foo885 86@foo16 = external global i1687@bar16 = external global i1688 89define i16 @bitwrr(i16 %a, i16 %b) nounwind {90 %t1 = and i16 %a, %b91 %t2 = icmp ne i16 %t1, 092 %t3 = zext i1 %t2 to i1693 ret i16 %t394}95; CHECK-LABEL: bitwrr:96; CHECK: bit r13, r1297 98define i16 @bitwri(i16 %a) nounwind {99 %t1 = and i16 %a, 4080100 %t2 = icmp ne i16 %t1, 0101 %t3 = zext i1 %t2 to i16102 ret i16 %t3103}104; CHECK-LABEL: bitwri:105; CHECK: bit #4080, r12106 107define i16 @bitwir(i16 %a) nounwind {108 %t1 = and i16 4080, %a109 %t2 = icmp ne i16 %t1, 0110 %t3 = zext i1 %t2 to i16111 ret i16 %t3112}113; CHECK-LABEL: bitwir:114; CHECK: bit #4080, r12115 116define i16 @bitwmi() nounwind {117 %t1 = load i16, ptr @foo16118 %t2 = and i16 %t1, 4080119 %t3 = icmp ne i16 %t2, 0120 %t4 = zext i1 %t3 to i16121 ret i16 %t4122}123; CHECK-LABEL: bitwmi:124; CHECK: bit #4080, &foo16125 126define i16 @bitwim() nounwind {127 %t1 = load i16, ptr @foo16128 %t2 = and i16 4080, %t1129 %t3 = icmp ne i16 %t2, 0130 %t4 = zext i1 %t3 to i16131 ret i16 %t4132}133; CHECK-LABEL: bitwim:134; CHECK: bit #4080, &foo16135 136define i16 @bitwrm(i16 %a) nounwind {137 %t1 = load i16, ptr @foo16138 %t2 = and i16 %a, %t1139 %t3 = icmp ne i16 %t2, 0140 %t4 = zext i1 %t3 to i16141 ret i16 %t4142}143; CHECK-LABEL: bitwrm:144; CHECK: bit &foo16, r12145 146define i16 @bitwmr(i16 %a) nounwind {147 %t1 = load i16, ptr @foo16148 %t2 = and i16 %t1, %a149 %t3 = icmp ne i16 %t2, 0150 %t4 = zext i1 %t3 to i16151 ret i16 %t4152}153; CHECK-LABEL: bitwmr:154; CHECK: bit r12, &foo16155 156define i16 @bitwmm() nounwind {157 %t1 = load i16, ptr @foo16158 %t2 = load i16, ptr @bar16159 %t3 = and i16 %t1, %t2160 %t4 = icmp ne i16 %t3, 0161 %t5 = zext i1 %t4 to i16162 ret i16 %t5163}164; CHECK-LABEL: bitwmm:165; CHECK: bit &bar16, &foo16166 167