brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 302eaeb Raw
163 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64 %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-LE3; RUN: llc -mtriple=aarch64_be %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-BE4 5@x = common dso_local global i128 06@y = common dso_local global i128 07 8define void @test1() {9; CHECK-LABEL: test1:10; CHECK:       // %bb.0:11; CHECK-NEXT:    adrp x8, x12; CHECK-NEXT:    add x8, x8, :lo12:x13; CHECK-NEXT:    adrp x10, y14; CHECK-NEXT:    add x10, x10, :lo12:y15; CHECK-NEXT:    ldp x8, x9, [x8]16; CHECK-NEXT:    stp x8, x9, [x10]17; CHECK-NEXT:    ret18  %tmp = load volatile i128, ptr @x19  store volatile i128 %tmp, ptr @y20  ret void21}22 23define void @test2() {24; CHECK-LABEL: test2:25; CHECK:       // %bb.0:26; CHECK-NEXT:    adrp x8, x27; CHECK-NEXT:    add x8, x8, :lo12:x28; CHECK-NEXT:    adrp x10, y29; CHECK-NEXT:    add x10, x10, :lo12:y30; CHECK-NEXT:    ldp x8, x9, [x8, #504]31; CHECK-NEXT:    stp x8, x9, [x10, #504]32; CHECK-NEXT:    ret33  %tmp = load volatile i128, ptr getelementptr (i8, ptr @x, i64 504)34  store volatile i128 %tmp, ptr getelementptr (i8, ptr @y, i64 504)35  ret void36}37 38define void @test3() {39; CHECK-LABEL: test3:40; CHECK:       // %bb.0:41; CHECK-NEXT:    adrp x8, x42; CHECK-NEXT:    add x8, x8, :lo12:x43; CHECK-NEXT:    adrp x10, y44; CHECK-NEXT:    add x10, x10, :lo12:y45; CHECK-NEXT:    add x8, x8, #51246; CHECK-NEXT:    ldp x8, x9, [x8]47; CHECK-NEXT:    add x10, x10, #51248; CHECK-NEXT:    stp x8, x9, [x10]49; CHECK-NEXT:    ret50  %tmp = load volatile i128, ptr getelementptr (i8, ptr @x, i64 512)51  store volatile i128 %tmp, ptr getelementptr (i8, ptr @y, i64 512)52  ret void53}54 55define void @test4() {56; CHECK-LABEL: test4:57; CHECK:       // %bb.0:58; CHECK-NEXT:    adrp x8, x59; CHECK-NEXT:    add x8, x8, :lo12:x60; CHECK-NEXT:    adrp x10, y61; CHECK-NEXT:    add x10, x10, :lo12:y62; CHECK-NEXT:    ldp x8, x9, [x8, #-512]63; CHECK-NEXT:    stp x8, x9, [x10, #-512]64; CHECK-NEXT:    ret65  %tmp = load volatile i128, ptr getelementptr (i8, ptr @x, i64 -512)66  store volatile i128 %tmp, ptr getelementptr (i8, ptr @y, i64 -512)67  ret void68}69 70define void @test5() {71; CHECK-LABEL: test5:72; CHECK:       // %bb.0:73; CHECK-NEXT:    adrp x8, x74; CHECK-NEXT:    add x8, x8, :lo12:x75; CHECK-NEXT:    adrp x10, y76; CHECK-NEXT:    add x10, x10, :lo12:y77; CHECK-NEXT:    sub x8, x8, #52078; CHECK-NEXT:    ldp x8, x9, [x8]79; CHECK-NEXT:    sub x10, x10, #52080; CHECK-NEXT:    stp x8, x9, [x10]81; CHECK-NEXT:    ret82  %tmp = load volatile i128, ptr getelementptr (i8, ptr @x, i64 -520)83  store volatile i128 %tmp, ptr getelementptr (i8, ptr @y, i64 -520)84  ret void85}86 87define void @test6() {88; CHECK-LABEL: test6:89; CHECK:       // %bb.0:90; CHECK-NEXT:    adrp x8, x91; CHECK-NEXT:    add x8, x8, :lo12:x92; CHECK-NEXT:    adrp x10, y93; CHECK-NEXT:    add x10, x10, :lo12:y94; CHECK-NEXT:    sub x8, x8, #52095; CHECK-NEXT:    ldp x8, x9, [x8]96; CHECK-NEXT:    sub x10, x10, #52097; CHECK-NEXT:    stp x8, x9, [x10]98; CHECK-NEXT:    ret99  %tmp = load volatile i128, ptr getelementptr (i8, ptr @x, i64 -520)100  store volatile i128 %tmp, ptr getelementptr (i8, ptr @y, i64 -520)101  ret void102}103 104define void @test7() {105; CHECK-LABEL: test7:106; CHECK:       // %bb.0:107; CHECK-NEXT:    adrp x8, x108; CHECK-NEXT:    add x8, x8, :lo12:x109; CHECK-NEXT:    adrp x10, y110; CHECK-NEXT:    add x10, x10, :lo12:y111; CHECK-NEXT:    add x8, x8, #503112; CHECK-NEXT:    ldp x8, x9, [x8]113; CHECK-NEXT:    add x10, x10, #503114; CHECK-NEXT:    stp x8, x9, [x10]115; CHECK-NEXT:    ret116  %tmp = load volatile i128, ptr getelementptr (i8, ptr @x, i64 503)117  store volatile i128 %tmp, ptr getelementptr (i8, ptr @y, i64 503)118  ret void119}120 121define i128 @load_nonvol(i32, i32, ptr %p) {122; CHECK-LABEL: load_nonvol:123; CHECK:       // %bb.0: // %entry124; CHECK-NEXT:    ldp x0, x1, [x2]125; CHECK-NEXT:    ret126entry:127  %l = load i128, ptr %p, align 16128  ret i128 %l129}130 131define i128 @load_vol(i32, i32, ptr %p) {132; CHECK-LABEL: load_vol:133; CHECK:       // %bb.0: // %entry134; CHECK-NEXT:    ldp x0, x1, [x2]135; CHECK-NEXT:    ret136entry:137  %l = load volatile i128, ptr %p, align 16138  ret i128 %l139}140 141define void @store_nonvol(i128 %a, ptr %p) {142; CHECK-LABEL: store_nonvol:143; CHECK:       // %bb.0: // %entry144; CHECK-NEXT:    stp x0, x1, [x2]145; CHECK-NEXT:    ret146entry:147  store i128 %a, ptr %p, align 16148  ret void149}150 151define void @loadstore_vol(i128 %a, ptr %p) {152; CHECK-LABEL: loadstore_vol:153; CHECK:       // %bb.0: // %entry154; CHECK-NEXT:    stp x0, x1, [x2]155; CHECK-NEXT:    ret156entry:157  store volatile i128 %a, ptr %p, align 16158  ret void159}160;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:161; CHECK-BE: {{.*}}162; CHECK-LE: {{.*}}163