1 ; RUN: llc < %s -march=xcore | FileCheck %s 2 3 define i32 @load32(i32* %p, i32 %offset) nounwind { 4 entry: 5 ; CHECK-LABEL: load32: 6 ; CHECK: ldw r0, r0[r1] 7 %0 = getelementptr i32* %p, i32 %offset 8 %1 = load i32* %0, align 4 9 ret i32 %1 10 } 11 12 define i32 @load32_imm(i32* %p) nounwind { 13 entry: 14 ; CHECK-LABEL: load32_imm: 15 ; CHECK: ldw r0, r0[11] 16 %0 = getelementptr i32* %p, i32 11 17 %1 = load i32* %0, align 4 18 ret i32 %1 19 } 20 21 define i32 @load16(i16* %p, i32 %offset) nounwind { 22 entry: 23 ; CHECK-LABEL: load16: 24 ; CHECK: ld16s r0, r0[r1] 25 ; CHECK-NOT: sext 26 %0 = getelementptr i16* %p, i32 %offset 27 %1 = load i16* %0, align 2 28 %2 = sext i16 %1 to i32 29 ret i32 %2 30 } 31 32 define i32 @load8(i8* %p, i32 %offset) nounwind { 33 entry: 34 ; CHECK-LABEL: load8: 35 ; CHECK: ld8u r0, r0[r1] 36 ; CHECK-NOT: zext 37 %0 = getelementptr i8* %p, i32 %offset 38 %1 = load i8* %0, align 1 39 %2 = zext i8 %1 to i32 40 ret i32 %2 41 } 42 43 @GConst = external constant i32 44 define i32 @load_cp() nounwind { 45 entry: 46 ; CHECK-LABEL: load_cp: 47 ; CHECK: ldw r0, cp[GConst] 48 %0 = load i32* @GConst 49 ret i32 %0 50 } 51