1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=avr | FileCheck %s 3 4define i8 @loadx(ptr %0) { 5; CHECK-LABEL: loadx: 6; CHECK: ; %bb.0: 7; CHECK-NEXT: mov r26, r24 8; CHECK-NEXT: mov r27, r25 9; CHECK-NEXT: ;APP 10; CHECK-NEXT: ld r24, X 11; CHECK-NEXT: ;NO_APP 12; CHECK-NEXT: ret 13 %2 = tail call i8 asm sideeffect "ld $0, ${1:a}", "=r,x"(ptr %0) 14 ret i8 %2 15} 16 17define i8 @loady(ptr %0) { 18; CHECK-LABEL: loady: 19; CHECK: ; %bb.0: 20; CHECK-NEXT: push r28 21; CHECK-NEXT: push r29 22; CHECK-NEXT: mov r28, r24 23; CHECK-NEXT: mov r29, r25 24; CHECK-NEXT: ;APP 25; CHECK-NEXT: ld r24, Y 26; CHECK-NEXT: ;NO_APP 27; CHECK-NEXT: pop r29 28; CHECK-NEXT: pop r28 29; CHECK-NEXT: ret 30 %2 = tail call i8 asm sideeffect "ld $0, ${1:a}", "=r,y"(ptr %0) 31 ret i8 %2 32} 33 34define i8 @loadz(ptr %0) { 35; CHECK-LABEL: loadz: 36; CHECK: ; %bb.0: 37; CHECK-NEXT: mov r30, r24 38; CHECK-NEXT: mov r31, r25 39; CHECK-NEXT: ;APP 40; CHECK-NEXT: ld r24, Z 41; CHECK-NEXT: ;NO_APP 42; CHECK-NEXT: ret 43 %2 = tail call i8 asm sideeffect "ld $0, ${1:a}", "=r,z"(ptr %0) 44 ret i8 %2 45} 46 47define i8 @load_ptr_imm() { 48; CHECK-LABEL: load_ptr_imm: 49; CHECK: ; %bb.0: 50; CHECK-NEXT: ldi r26, 210 51; CHECK-NEXT: ldi r27, 4 52; CHECK-NEXT: ;APP 53; CHECK-NEXT: ld r24, X 54; CHECK-NEXT: ;NO_APP 55; CHECK-NEXT: ret 56 %1 = tail call i8 asm sideeffect "ld $0, $1", "=r,e"(i16 1234) 57 ret i8 %1 58} 59 60define void @storex(ptr %0, i8 %1) { 61; CHECK-LABEL: storex: 62; CHECK: ; %bb.0: 63; CHECK-NEXT: mov r26, r24 64; CHECK-NEXT: mov r27, r25 65; CHECK-NEXT: ;APP 66; CHECK-NEXT: st X, r22 67; CHECK-NEXT: ;NO_APP 68; CHECK-NEXT: ret 69 tail call void asm sideeffect "st ${0:a}, $1", "x,r"(ptr %0, i8 %1) 70 ret void 71} 72 73define void @storey(ptr %0, i8 %1) { 74; CHECK-LABEL: storey: 75; CHECK: ; %bb.0: 76; CHECK-NEXT: push r28 77; CHECK-NEXT: push r29 78; CHECK-NEXT: mov r28, r24 79; CHECK-NEXT: mov r29, r25 80; CHECK-NEXT: ;APP 81; CHECK-NEXT: st Y, r22 82; CHECK-NEXT: ;NO_APP 83; CHECK-NEXT: pop r29 84; CHECK-NEXT: pop r28 85; CHECK-NEXT: ret 86 tail call void asm sideeffect "st ${0:a}, $1", "y,r"(ptr %0, i8 %1) 87 ret void 88} 89 90define void @storez(ptr %0, i8 %1) { 91; CHECK-LABEL: storez: 92; CHECK: ; %bb.0: 93; CHECK-NEXT: mov r30, r24 94; CHECK-NEXT: mov r31, r25 95; CHECK-NEXT: ;APP 96; CHECK-NEXT: st Z, r22 97; CHECK-NEXT: ;NO_APP 98; CHECK-NEXT: ret 99 tail call void asm sideeffect "st ${0:a}, $1", "z,r"(ptr %0, i8 %1) 100 ret void 101} 102 103define void @store_ptr_imm(i8 %0) { 104; CHECK-LABEL: store_ptr_imm: 105; CHECK: ; %bb.0: 106; CHECK-NEXT: ldi r26, 210 107; CHECK-NEXT: ldi r27, 4 108; CHECK-NEXT: ;APP 109; CHECK-NEXT: st X, r24 110; CHECK-NEXT: ;NO_APP 111; CHECK-NEXT: ret 112 tail call void asm sideeffect "st $0, $1", "e,r"(i16 1234, i8 %0) 113 ret void 114} 115