brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 44202ff Raw
148 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=aarch64 < %s | FileCheck %s3 4define void @imm9(ptr %object) {5; CHECK-LABEL: imm9:6; CHECK:       // %bb.0:7; CHECK-NEXT:    prfum pldl1keep, [x0, #7]8; CHECK-NEXT:    ret9  %incdec.ptr = getelementptr inbounds i8, ptr %object, i64 710  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)11  ret void12}13 14define void @imm9_max(ptr %object) {15; CHECK-LABEL: imm9_max:16; CHECK:       // %bb.0:17; CHECK-NEXT:    prfum pldl1keep, [x0, #255]18; CHECK-NEXT:    ret19  %incdec.ptr = getelementptr inbounds i8, ptr %object, i64 25520  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)21  ret void22}23 24define void @imm9_above_max(ptr %object) {25; CHECK-LABEL: imm9_above_max:26; CHECK:       // %bb.0:27; CHECK-NEXT:    add x8, x0, #25728; CHECK-NEXT:    prfm pldl1keep, [x8]29; CHECK-NEXT:    ret30  %incdec.ptr = getelementptr inbounds i8, ptr %object, i64 257  ; 256 would use the imm12 mode31  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)32  ret void33}34 35define void @imm9_min(ptr %object) {36; CHECK-LABEL: imm9_min:37; CHECK:       // %bb.0:38; CHECK-NEXT:    prfum pldl1keep, [x0, #-256]39; CHECK-NEXT:    ret40  %incdec.ptr = getelementptr inbounds i8, ptr %object, i64 -25641  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)42  ret void43}44 45define void @imm9_below_min(ptr %object) {46; CHECK-LABEL: imm9_below_min:47; CHECK:       // %bb.0:48; CHECK-NEXT:    sub x8, x0, #25749; CHECK-NEXT:    prfm pldl1keep, [x8]50; CHECK-NEXT:    ret51  %incdec.ptr = getelementptr inbounds i8, ptr %object, i64 -25752  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)53  ret void54}55 56define void @imm12(ptr %object) {57; CHECK-LABEL: imm12:58; CHECK:       // %bb.0:59; CHECK-NEXT:    prfm pldl1keep, [x0, #8]60; CHECK-NEXT:    ret61  %incdec.ptr = getelementptr inbounds i64, ptr %object, i64 162  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)63  ret void64}65 66define void @imm12_max(ptr %object) {67; CHECK-LABEL: imm12_max:68; CHECK:       // %bb.0:69; CHECK-NEXT:    prfm pldl1keep, [x0, #32760]70; CHECK-NEXT:    ret71  %incdec.ptr = getelementptr inbounds i64, ptr %object, i64 409572  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)73  ret void74}75 76define void @imm12_above_max(ptr %object) {77; CHECK-LABEL: imm12_above_max:78; CHECK:       // %bb.0:79; CHECK-NEXT:    mov w8, #32768 // =0x800080; CHECK-NEXT:    prfm pldl1keep, [x0, x8]81; CHECK-NEXT:    ret82  %incdec.ptr = getelementptr inbounds i64, ptr %object, i64 409683  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)84  ret void85}86 87define void @reg(ptr %object, i64 %a) {88; CHECK-LABEL: reg:89; CHECK:       // %bb.0:90; CHECK-NEXT:    prfm pldl1keep, [x0, x1]91; CHECK-NEXT:    ret92  %incdec.ptr = getelementptr inbounds i8, ptr %object, i64 %a93  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)94  ret void95}96 97define void @reg_shift(ptr %object, i64 %a) {98; CHECK-LABEL: reg_shift:99; CHECK:       // %bb.0:100; CHECK-NEXT:    prfm pldl1keep, [x0, x1, lsl #3]101; CHECK-NEXT:    ret102  %incdec.ptr = getelementptr inbounds i64, ptr %object, i64 %a103  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)104  ret void105}106 107define void @reg_sext(ptr %object, i32 %a) {108; CHECK-LABEL: reg_sext:109; CHECK:       // %bb.0:110; CHECK-NEXT:    prfm pldl1keep, [x0, w1, sxtw]111; CHECK-NEXT:    ret112  %incdec.ptr = getelementptr inbounds i8, ptr %object, i32 %a113  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)114  ret void115}116 117define void @reg_sext_shift(ptr %object, i32 %a) {118; CHECK-LABEL: reg_sext_shift:119; CHECK:       // %bb.0:120; CHECK-NEXT:    prfm pldl1keep, [x0, w1, sxtw #3]121; CHECK-NEXT:    ret122  %incdec.ptr = getelementptr inbounds i64, ptr %object, i32 %a123  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)124  ret void125}126 127define void @reg_zext(ptr %object, i32 %a) {128; CHECK-LABEL: reg_zext:129; CHECK:       // %bb.0:130; CHECK-NEXT:    prfm pldl1keep, [x0, w1, uxtw]131; CHECK-NEXT:    ret132  %a.zext = zext i32 %a to i64133  %incdec.ptr = getelementptr inbounds i8, ptr %object, i64 %a.zext134  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)135  ret void136}137 138define void @reg_zext_shift(ptr %object, i32 %a) {139; CHECK-LABEL: reg_zext_shift:140; CHECK:       // %bb.0:141; CHECK-NEXT:    prfm pldl1keep, [x0, w1, uxtw #3]142; CHECK-NEXT:    ret143  %a.zext = zext i32 %a to i64144  %incdec.ptr = getelementptr inbounds i64, ptr %object, i64 %a.zext145  call void @llvm.prefetch.p0(ptr %incdec.ptr, i32 0, i32 3, i32 1)146  ret void147}148