xref: /llvm-project/llvm/test/CodeGen/AVR/inline-asm/loadstore.ll (revision dba0861cd7aa2717b0f36c76d77c097765f6ad57)
13730f134SBen Shi; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
23730f134SBen Shi; RUN: llc < %s -mtriple=avr | FileCheck %s
33730f134SBen Shi
47bdc80f3SNikita Popovdefine i8 @loadx(ptr %0) {
53730f134SBen Shi; CHECK-LABEL: loadx:
63730f134SBen Shi; CHECK:       ; %bb.0:
73730f134SBen Shi; CHECK-NEXT:    mov r26, r24
83730f134SBen Shi; CHECK-NEXT:    mov r27, r25
93730f134SBen Shi; CHECK-NEXT:    ;APP
103730f134SBen Shi; CHECK-NEXT:    ld r24, X
113730f134SBen Shi; CHECK-NEXT:    ;NO_APP
123730f134SBen Shi; CHECK-NEXT:    ret
137bdc80f3SNikita Popov  %2 = tail call i8 asm sideeffect "ld $0, ${1:a}", "=r,x"(ptr %0)
143730f134SBen Shi  ret i8 %2
153730f134SBen Shi}
163730f134SBen Shi
177bdc80f3SNikita Popovdefine i8 @loady(ptr %0) {
183730f134SBen Shi; CHECK-LABEL: loady:
193730f134SBen Shi; CHECK:       ; %bb.0:
203730f134SBen Shi; CHECK-NEXT:    push r28
213730f134SBen Shi; CHECK-NEXT:    push r29
223730f134SBen Shi; CHECK-NEXT:    mov r28, r24
233730f134SBen Shi; CHECK-NEXT:    mov r29, r25
243730f134SBen Shi; CHECK-NEXT:    ;APP
253730f134SBen Shi; CHECK-NEXT:    ld r24, Y
263730f134SBen Shi; CHECK-NEXT:    ;NO_APP
273730f134SBen Shi; CHECK-NEXT:    pop r29
283730f134SBen Shi; CHECK-NEXT:    pop r28
293730f134SBen Shi; CHECK-NEXT:    ret
307bdc80f3SNikita Popov  %2 = tail call i8 asm sideeffect "ld $0, ${1:a}", "=r,y"(ptr %0)
313730f134SBen Shi  ret i8 %2
323730f134SBen Shi}
333730f134SBen Shi
347bdc80f3SNikita Popovdefine i8 @loadz(ptr %0) {
353730f134SBen Shi; CHECK-LABEL: loadz:
363730f134SBen Shi; CHECK:       ; %bb.0:
373730f134SBen Shi; CHECK-NEXT:    mov r30, r24
383730f134SBen Shi; CHECK-NEXT:    mov r31, r25
393730f134SBen Shi; CHECK-NEXT:    ;APP
403730f134SBen Shi; CHECK-NEXT:    ld r24, Z
413730f134SBen Shi; CHECK-NEXT:    ;NO_APP
423730f134SBen Shi; CHECK-NEXT:    ret
437bdc80f3SNikita Popov  %2 = tail call i8 asm sideeffect "ld $0, ${1:a}", "=r,z"(ptr %0)
443730f134SBen Shi  ret i8 %2
453730f134SBen Shi}
463730f134SBen Shi
47*dba0861cSBen Shidefine i8 @load_ptr_imm() {
48*dba0861cSBen Shi; CHECK-LABEL: load_ptr_imm:
49*dba0861cSBen Shi; CHECK:       ; %bb.0:
50*dba0861cSBen Shi; CHECK-NEXT:    ldi r26, 210
51*dba0861cSBen Shi; CHECK-NEXT:    ldi r27, 4
52*dba0861cSBen Shi; CHECK-NEXT:    ;APP
53*dba0861cSBen Shi; CHECK-NEXT:    ld r24, X
54*dba0861cSBen Shi; CHECK-NEXT:    ;NO_APP
55*dba0861cSBen Shi; CHECK-NEXT:    ret
56*dba0861cSBen Shi  %1 = tail call i8 asm sideeffect "ld $0, $1", "=r,e"(i16 1234)
57*dba0861cSBen Shi  ret i8 %1
58*dba0861cSBen Shi}
59*dba0861cSBen Shi
607bdc80f3SNikita Popovdefine void @storex(ptr %0, i8 %1) {
613730f134SBen Shi; CHECK-LABEL: storex:
623730f134SBen Shi; CHECK:       ; %bb.0:
633730f134SBen Shi; CHECK-NEXT:    mov r26, r24
643730f134SBen Shi; CHECK-NEXT:    mov r27, r25
653730f134SBen Shi; CHECK-NEXT:    ;APP
663730f134SBen Shi; CHECK-NEXT:    st X, r22
673730f134SBen Shi; CHECK-NEXT:    ;NO_APP
683730f134SBen Shi; CHECK-NEXT:    ret
697bdc80f3SNikita Popov  tail call void asm sideeffect "st ${0:a}, $1", "x,r"(ptr %0, i8 %1)
703730f134SBen Shi  ret void
713730f134SBen Shi}
723730f134SBen Shi
737bdc80f3SNikita Popovdefine void @storey(ptr %0, i8 %1) {
743730f134SBen Shi; CHECK-LABEL: storey:
753730f134SBen Shi; CHECK:       ; %bb.0:
763730f134SBen Shi; CHECK-NEXT:    push r28
773730f134SBen Shi; CHECK-NEXT:    push r29
783730f134SBen Shi; CHECK-NEXT:    mov r28, r24
793730f134SBen Shi; CHECK-NEXT:    mov r29, r25
803730f134SBen Shi; CHECK-NEXT:    ;APP
813730f134SBen Shi; CHECK-NEXT:    st Y, r22
823730f134SBen Shi; CHECK-NEXT:    ;NO_APP
833730f134SBen Shi; CHECK-NEXT:    pop r29
843730f134SBen Shi; CHECK-NEXT:    pop r28
853730f134SBen Shi; CHECK-NEXT:    ret
867bdc80f3SNikita Popov  tail call void asm sideeffect "st ${0:a}, $1", "y,r"(ptr %0, i8 %1)
873730f134SBen Shi  ret void
883730f134SBen Shi}
893730f134SBen Shi
907bdc80f3SNikita Popovdefine void @storez(ptr %0, i8 %1) {
913730f134SBen Shi; CHECK-LABEL: storez:
923730f134SBen Shi; CHECK:       ; %bb.0:
933730f134SBen Shi; CHECK-NEXT:    mov r30, r24
943730f134SBen Shi; CHECK-NEXT:    mov r31, r25
953730f134SBen Shi; CHECK-NEXT:    ;APP
963730f134SBen Shi; CHECK-NEXT:    st Z, r22
973730f134SBen Shi; CHECK-NEXT:    ;NO_APP
983730f134SBen Shi; CHECK-NEXT:    ret
997bdc80f3SNikita Popov  tail call void asm sideeffect "st ${0:a}, $1", "z,r"(ptr %0, i8 %1)
1003730f134SBen Shi  ret void
1013730f134SBen Shi}
102*dba0861cSBen Shi
103*dba0861cSBen Shidefine void @store_ptr_imm(i8 %0) {
104*dba0861cSBen Shi; CHECK-LABEL: store_ptr_imm:
105*dba0861cSBen Shi; CHECK:       ; %bb.0:
106*dba0861cSBen Shi; CHECK-NEXT:    ldi r26, 210
107*dba0861cSBen Shi; CHECK-NEXT:    ldi r27, 4
108*dba0861cSBen Shi; CHECK-NEXT:    ;APP
109*dba0861cSBen Shi; CHECK-NEXT:    st X, r24
110*dba0861cSBen Shi; CHECK-NEXT:    ;NO_APP
111*dba0861cSBen Shi; CHECK-NEXT:    ret
112*dba0861cSBen Shi  tail call void asm sideeffect "st $0, $1", "e,r"(i16 1234, i8 %0)
113*dba0861cSBen Shi  ret void
114*dba0861cSBen Shi}
115