; RUN: llc < %s -mtriple=avr -mattr=movw,lpmx | FileCheck %s
; XFAIL: *

# Wide LPM is currently unimplemented in the pseudo expansion pass.

; Tests the extended LPM instructions (LPMW, LPM Rd, Z+).

define i8 @test8(ptr addrspace(1) %p) {
; CHECK-LABEL: test8:
; CHECK: movw r30, r24
; CHECK: lpm r24, Z
  %1 = load i8, ptr addrspace(1) %p
  ret i8 %1
}

define i16 @test16(ptr addrspace(1) %p) {
; CHECK-LABEL: test16:
; CHECK: movw r30, r24
; CHECK: lpmw r24, Z
  %1 = load i16, ptr addrspace(1) %p
  ret i16 %1
}

define i8 @test8postinc(ptr addrspace(1) %x, i8 %y) {
; CHECK-LABEL: test8postinc:
; CHECK: movw r30, r24
; CHECK: lpm {{.*}}, Z+
entry:
  %cmp10 = icmp sgt i8 %y, 0
  br i1 %cmp10, label %for.body, label %for.end

for.body:                                         ; preds = %entry, %for.body
  %ret.013 = phi i8 [ %add, %for.body ], [ 0, %entry ]
  %i.012 = phi i8 [ %inc, %for.body ], [ 0, %entry ]
  %x.addr.011 = phi ptr addrspace(1) [ %incdec.ptr, %for.body ], [ %x, %entry ]
  %incdec.ptr = getelementptr inbounds i8, ptr addrspace(1) %x.addr.011, i16 1
  %0 = load i8, ptr addrspace(1) %x.addr.011
  %add = add i8 %0, %ret.013
  %inc = add i8 %i.012, 1
  %exitcond = icmp eq i8 %inc, %y
  br i1 %exitcond, label %for.end, label %for.body

for.end:                                          ; preds = %for.body, %entry
  %ret.0.lcssa = phi i8 [ 0, %entry ], [ %add, %for.body ]
  ret i8 %ret.0.lcssa
}

define i16 @test16postinc(ptr addrspace(1) %x, i8 %y) {
; CHECK-LABEL: test16postinc:
; CHECK: movw r30, r24
; CHECK: lpmw {{.*}}, Z+
entry:
  %cmp5 = icmp sgt i8 %y, 0
  br i1 %cmp5, label %for.body, label %for.end

for.body:                                         ; preds = %entry, %for.body
  %ret.08 = phi i16 [ %add, %for.body ], [ 0, %entry ]
  %i.07 = phi i8 [ %inc, %for.body ], [ 0, %entry ]
  %x.addr.06 = phi ptr addrspace(1) [ %incdec.ptr, %for.body ], [ %x, %entry ]
  %incdec.ptr = getelementptr inbounds i16, ptr addrspace(1) %x.addr.06, i16 1
  %0 = load i16, ptr addrspace(1) %x.addr.06
  %add = add nsw i16 %0, %ret.08
  %inc = add i8 %i.07, 1
  %exitcond = icmp eq i8 %inc, %y
  br i1 %exitcond, label %for.end, label %for.body

for.end:                                          ; preds = %for.body, %entry
  %ret.0.lcssa = phi i16 [ 0, %entry ], [ %add, %for.body ]
  ret i16 %ret.0.lcssa
}
