1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=aarch64_be -o - %s | FileCheck %s --check-prefix CHECK-BE 3; RUN: llc -mtriple=aarch64 -o - %s | FileCheck %s --check-prefix CHECK-LE 4 5define i8 @test1(i32 %a, ptr %pa) { 6; CHECK-BE-LABEL: test1: 7; CHECK-BE: // %bb.0: 8; CHECK-BE-NEXT: mov w8, w0 9; CHECK-BE-NEXT: lsr w0, w0, #24 10; CHECK-BE-NEXT: str w8, [x1] 11; CHECK-BE-NEXT: ret 12; 13; CHECK-LE-LABEL: test1: 14; CHECK-LE: // %bb.0: 15; CHECK-LE-NEXT: str w0, [x1] 16; CHECK-LE-NEXT: ret 17 store i32 %a, ptr %pa 18 %res = load i8, ptr %pa 19 ret i8 %res 20} 21 22define i8 @test2(i32 %a, ptr %pa) { 23; CHECK-BE-LABEL: test2: 24; CHECK-BE: // %bb.0: 25; CHECK-BE-NEXT: str w0, [x1] 26; CHECK-BE-NEXT: ldrb w0, [x1, #1] 27; CHECK-BE-NEXT: ret 28; 29; CHECK-LE-LABEL: test2: 30; CHECK-LE: // %bb.0: 31; CHECK-LE-NEXT: str w0, [x1] 32; CHECK-LE-NEXT: ubfx w0, w0, #8, #8 33; CHECK-LE-NEXT: ret 34 %p8 = getelementptr i8, ptr %pa, i32 1 35 store i32 %a, ptr %pa 36 %res = load i8, ptr %p8 37 ret i8 %res 38} 39 40define i8 @test3(i32 %a, ptr %pa) { 41; CHECK-BE-LABEL: test3: 42; CHECK-BE: // %bb.0: 43; CHECK-BE-NEXT: str w0, [x1] 44; CHECK-BE-NEXT: ldrb w0, [x1, #2] 45; CHECK-BE-NEXT: ret 46; 47; CHECK-LE-LABEL: test3: 48; CHECK-LE: // %bb.0: 49; CHECK-LE-NEXT: str w0, [x1] 50; CHECK-LE-NEXT: ubfx w0, w0, #16, #8 51; CHECK-LE-NEXT: ret 52 %p8 = getelementptr i8, ptr %pa, i32 2 53 store i32 %a, ptr %pa 54 %res = load i8, ptr %p8 55 ret i8 %res 56} 57 58define i8 @test4(i32 %a, ptr %pa) { 59; CHECK-BE-LABEL: test4: 60; CHECK-BE: // %bb.0: 61; CHECK-BE-NEXT: str w0, [x1] 62; CHECK-BE-NEXT: ret 63; 64; CHECK-LE-LABEL: test4: 65; CHECK-LE: // %bb.0: 66; CHECK-LE-NEXT: str w0, [x1] 67; CHECK-LE-NEXT: lsr w0, w0, #24 68; CHECK-LE-NEXT: ret 69 %p8 = getelementptr i8, ptr %pa, i32 3 70 store i32 %a, ptr %pa 71 %res = load i8, ptr %p8 72 ret i8 %res 73} 74