1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2; RUN: llc --mtriple=loongarch32 < %s | FileCheck %s --check-prefix=LA32 3; RUN: llc --mtriple=loongarch64 < %s | FileCheck %s --check-prefix=LA64 4 5declare void @llvm.prefetch(ptr, i32, i32, i32) 6 7define void @load_prefetch_no_offset(ptr %a) { 8; LA32-LABEL: load_prefetch_no_offset: 9; LA32: # %bb.0: # %entry 10; LA32-NEXT: preld 0, $a0, 0 11; LA32-NEXT: ret 12; 13; LA64-LABEL: load_prefetch_no_offset: 14; LA64: # %bb.0: # %entry 15; LA64-NEXT: preld 0, $a0, 0 16; LA64-NEXT: ret 17entry: 18 call void @llvm.prefetch(ptr %a, i32 0, i32 3, i32 1) 19 ret void 20} 21 22define void @store_prefetch_no_offset(ptr %a) { 23; LA32-LABEL: store_prefetch_no_offset: 24; LA32: # %bb.0: # %entry 25; LA32-NEXT: preld 8, $a0, 0 26; LA32-NEXT: ret 27; 28; LA64-LABEL: store_prefetch_no_offset: 29; LA64: # %bb.0: # %entry 30; LA64-NEXT: preld 8, $a0, 0 31; LA64-NEXT: ret 32entry: 33 call void @llvm.prefetch(ptr %a, i32 1, i32 3, i32 1) 34 ret void 35} 36 37define void @load_prefetch_with_offset(ptr %a) { 38; LA32-LABEL: load_prefetch_with_offset: 39; LA32: # %bb.0: # %entry 40; LA32-NEXT: preld 0, $a0, 200 41; LA32-NEXT: ret 42; 43; LA64-LABEL: load_prefetch_with_offset: 44; LA64: # %bb.0: # %entry 45; LA64-NEXT: preld 0, $a0, 200 46; LA64-NEXT: ret 47entry: 48 %addr = getelementptr i8, ptr %a, i64 200 49 call void @llvm.prefetch(ptr %addr, i32 0, i32 3, i32 1) 50 ret void 51} 52 53define void @store_prefetch_with_offset(ptr %a) { 54; LA32-LABEL: store_prefetch_with_offset: 55; LA32: # %bb.0: # %entry 56; LA32-NEXT: preld 8, $a0, 200 57; LA32-NEXT: ret 58; 59; LA64-LABEL: store_prefetch_with_offset: 60; LA64: # %bb.0: # %entry 61; LA64-NEXT: preld 8, $a0, 200 62; LA64-NEXT: ret 63entry: 64 %addr = getelementptr i8, ptr %a, i64 200 65 call void @llvm.prefetch(ptr %addr, i32 1, i32 3, i32 1) 66 ret void 67} 68