Skip to content
This repository was archived by the owner on Sep 2, 2018. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 18 additions & 19 deletions test/CodeGen/AVR/load.ll
Original file line number Diff line number Diff line change
@@ -1,44 +1,43 @@
; RUN: llc -mattr=sram < %s -march=avr | FileCheck %s
; XFAIL: *

define i8 @load8(i8* %x) {
; CHECK-LABEL: load8:
; CHECK: ld r24, Z
; CHECK: ld r24, {{[XYZ]}}
%1 = load i8, i8* %x
ret i8 %1
}

define i16 @load16(i16* %x) {
; CHECK-LABEL: load16:
; CHECK: ld r24, Z
; CHECK: ldd r25, Z+1
; CHECK: ld r24, {{[YZ]}}
; CHECK: ldd r25, {{[YZ]}}+1
%1 = load i16, i16* %x
ret i16 %1
}

define i8 @load8disp(i8* %x) {
; CHECK-LABEL: load8disp:
; CHECK: ldd r24, Z+63
; CHECK: ldd r24, {{[YZ]}}+63
%1 = getelementptr inbounds i8, i8* %x, i64 63
%2 = load i8, i8* %1
ret i8 %2
}

define i8 @load8nodisp(i8* %x) {
; CHECK-LABEL: load8nodisp:
; CHECK: movw r30, r24
; CHECK: subi r30, 192
; CHECK: sbci r31, 255
; CHECK: ld r24, Z
; CHECK: movw r26, r24
; CHECK: subi r26, 192
; CHECK: sbci r27, 255
; CHECK: ld r24, {{[XYZ]}}
%1 = getelementptr inbounds i8, i8* %x, i64 64
%2 = load i8, i8* %1
ret i8 %2
}

define i16 @load16disp(i16* %x) {
; CHECK-LABEL: load16disp:
; CHECK: ldd r24, Z+62
; CHECK: ldd r25, Z+63
; CHECK: ldd r24, {{[YZ]}}+62
; CHECK: ldd r25, {{[YZ]}}+63
%1 = getelementptr inbounds i16, i16* %x, i64 31
%2 = load i16, i16* %1
ret i16 %2
Expand All @@ -49,16 +48,16 @@ define i16 @load16nodisp(i16* %x) {
; CHECK: movw r30, r24
; CHECK: subi r30, 192
; CHECK: sbci r31, 255
; CHECK: ld r24, Z
; CHECK: ldd r25, Z+1
; CHECK: ld r24, {{[YZ]}}
; CHECK: ldd r25, {{[YZ]}}+1
%1 = getelementptr inbounds i16, i16* %x, i64 32
%2 = load i16, i16* %1
ret i16 %2
}

define i8 @load8postinc(i8* %x, i8 %y) {
; CHECK-LABEL: load8postinc:
; CHECK: ld {{.*}}, Z+
; CHECK: ld {{.*}}, {{[XYZ]}}+
entry:
%tobool6 = icmp eq i8 %y, 0
br i1 %tobool6, label %while.end, label %while.body
Expand All @@ -79,8 +78,8 @@ while.end: ; preds = %while.body, %entry

define i16 @load16postinc(i16* %x, i16 %y) {
; CHECK-LABEL: load16postinc:
; CHECK: ld {{.*}}, X+
; CHECK: ld {{.*}}, X+
; CHECK: ld {{.*}}, {{[XYZ]}}+
; CHECK: ld {{.*}}, {{[XYZ]}}+
entry:
%tobool2 = icmp eq i16 %y, 0
br i1 %tobool2, label %while.end, label %while.body
Expand All @@ -101,7 +100,7 @@ while.end: ; preds = %while.body, %entry

define i8 @load8predec(i8* %x, i8 %y) {
; CHECK-LABEL: load8predec:
; CHECK: ld {{.*}}, -Z
; CHECK: ld {{.*}}, -{{[XYZ]}}
entry:
%tobool6 = icmp eq i8 %y, 0
br i1 %tobool6, label %while.end, label %while.body
Expand All @@ -122,8 +121,8 @@ while.end: ; preds = %while.body, %entry

define i16 @load16predec(i16* %x, i16 %y) {
; CHECK-LABEL: load16predec:
; CHECK: ld {{.*}}, -X
; CHECK: ld {{.*}}, -X
; CHECK: ld {{.*}}, -{{[XYZ]}}
; CHECK: ld {{.*}}, -{{[XYZ]}}
entry:
%tobool2 = icmp eq i16 %y, 0
br i1 %tobool2, label %while.end, label %while.body
Expand Down
37 changes: 18 additions & 19 deletions test/CodeGen/AVR/store.ll
Original file line number Diff line number Diff line change
@@ -1,44 +1,43 @@
; RUN: llc -mattr=sram < %s -march=avr | FileCheck %s
; XFAIL: *

define void @store8(i8* %x, i8 %y) {
; CHECK-LABEL: store8:
; CHECK: st Z, r22
; CHECK: st {{[XYZ]}}, r22
store i8 %y, i8* %x
ret void
}

define void @store16(i16* %x, i16 %y) {
; CHECK-LABEL: store16:
; CHECK: st Z, r22
; CHECK: std Z+1, r23
; CHECK: st {{[YZ]}}, r22
; CHECK: std {{[YZ]}}+1, r23
store i16 %y, i16* %x
ret void
}

define void @store8disp(i8* %x, i8 %y) {
; CHECK-LABEL: store8disp:
; CHECK: std Z+63, r22
; CHECK: std {{[YZ]}}+63, r22
%arrayidx = getelementptr inbounds i8, i8* %x, i16 63
store i8 %y, i8* %arrayidx
ret void
}

define void @store8nodisp(i8* %x, i8 %y) {
; CHECK-LABEL: store8nodisp:
; CHECK: movw r30, r24
; CHECK: subi r30, 192
; CHECK: sbci r31, 255
; CHECK: st Z, r22
; CHECK: movw r26, r24
; CHECK: subi r26, 192
; CHECK: sbci r27, 255
; CHECK: st {{[XYZ]}}, r22
%arrayidx = getelementptr inbounds i8, i8* %x, i16 64
store i8 %y, i8* %arrayidx
ret void
}

define void @store16disp(i16* %x, i16 %y) {
; CHECK-LABEL: store16disp:
; CHECK: std Z+62, r22
; CHECK: std Z+63, r23
; CHECK: std {{[YZ]}}+62, r22
; CHECK: std {{[YZ]}}+63, r23
%arrayidx = getelementptr inbounds i16, i16* %x, i16 31
store i16 %y, i16* %arrayidx
ret void
Expand All @@ -49,16 +48,16 @@ define void @store16nodisp(i16* %x, i16 %y) {
; CHECK: movw r30, r24
; CHECK: subi r30, 192
; CHECK: sbci r31, 255
; CHECK: st Z, r22
; CHECK: std Z+1, r23
; CHECK: st {{[YZ]}}, r22
; CHECK: std {{[YZ]}}+1, r23
%arrayidx = getelementptr inbounds i16, i16* %x, i16 32
store i16 %y, i16* %arrayidx
ret void
}

define void @store8postinc(i8* %x, i8 %y) {
; CHECK-LABEL: store8postinc:
; CHECK: st Z+, {{.*}}
; CHECK: st {{[XYZ]}}+, {{.*}}
entry:
%tobool3 = icmp eq i8 %y, 0
br i1 %tobool3, label %while.end, label %while.body
Expand All @@ -76,8 +75,8 @@ while.end: ; preds = %while.body, %entry

define void @store16postinc(i16* %x, i16 %y) {
; CHECK-LABEL: store16postinc:
; CHECK: st X+, {{.*}}
; CHECK: st X+, {{.*}}
; CHECK: st {{[XYZ]}}+, {{.*}}
; CHECK: st {{[XYZ]}}+, {{.*}}
entry:
%tobool3 = icmp eq i16 %y, 0
br i1 %tobool3, label %while.end, label %while.body
Expand All @@ -95,7 +94,7 @@ while.end: ; preds = %while.body, %entry

define void @store8predec(i8* %x, i8 %y) {
; CHECK-LABEL: store8predec:
; CHECK: st -Z, {{.*}}
; CHECK: st -{{[XYZ]}}, {{.*}}
entry:
%tobool3 = icmp eq i8 %y, 0
br i1 %tobool3, label %while.end, label %while.body
Expand All @@ -113,8 +112,8 @@ while.end: ; preds = %while.body, %entry

define void @store16predec(i16* %x, i16 %y) {
; CHECK-LABEL: store16predec:
; CHECK: st -X, {{.*}}
; CHECK: st -X, {{.*}}
; CHECK: st -{{[XYZ]}}, {{.*}}
; CHECK: st -{{[XYZ]}}, {{.*}}
entry:
%tobool3 = icmp eq i16 %y, 0
br i1 %tobool3, label %while.end, label %while.body
Expand Down