98 lines · plain
1; RUN: llc < %s -mtriple=avr | FileCheck %s2 3define i8 @read8() {4; CHECK-LABEL: read85; CHECK: in r24, 86 %1 = load i8, ptr inttoptr (i16 40 to ptr)7 ret i8 %18}9 10define i16 @read16() {11; CHECK-LABEL: read1612; CHECK: in r24, 813; CHECK: in r25, 914 %1 = load i16, ptr inttoptr (i16 40 to ptr)15 ret i16 %116}17 18define i32 @read32() {19; CHECK-LABEL: read3220; CHECK: in r22, 821; CHECK: in r23, 922; CHECK: in r24, 1023; CHECK: in r25, 1124 %1 = load i32, ptr inttoptr (i16 40 to ptr)25 ret i32 %126}27 28define i64 @read64() {29; CHECK-LABEL: read6430; CHECK: in r18, 831; CHECK: in r19, 932; CHECK: in r20, 1033; CHECK: in r21, 1134; CHECK: in r22, 1235; CHECK: in r23, 1336; CHECK: in r24, 1437; CHECK: in r25, 1538 %1 = load i64, ptr inttoptr (i16 40 to ptr)39 ret i64 %140}41 42define void @write8() {43; CHECK-LABEL: write844; CHECK: out 845 store i8 22, ptr inttoptr (i16 40 to ptr)46 ret void47}48 49define void @write16() {50; CHECK-LABEL: write1651; CHECK: out 952; CHECK: out 853 store i16 1234, ptr inttoptr (i16 40 to ptr)54 ret void55}56 57define void @write32() {58; CHECK-LABEL: write3259; CHECK: out 1160; CHECK: out 1061; CHECK: out 962; CHECK: out 863 store i32 12345678, ptr inttoptr (i16 40 to ptr)64 ret void65}66 67define void @write64() {68; CHECK-LABEL: write6469; CHECK: out 1570; CHECK: out 1471; CHECK: out 1372; CHECK: out 1273; CHECK: out 1174; CHECK: out 1075; CHECK: out 976; CHECK: out 877 store i64 1234567891234567, ptr inttoptr (i16 40 to ptr)78 ret void79}80 81define void @sbi8() {82; CHECK-LABEL: sbi883; CHECK: sbi 8, 584 %1 = load i8, ptr inttoptr (i16 40 to ptr)85 %or = or i8 %1, 3286 store i8 %or, ptr inttoptr (i16 40 to ptr)87 ret void88}89 90define void @cbi8() {91; CHECK-LABEL: cbi892; CHECK: cbi 8, 593 %1 = load volatile i8, ptr inttoptr (i16 40 to ptr)94 %and = and i8 %1, -3395 store volatile i8 %and, ptr inttoptr (i16 40 to ptr)96 ret void97}98