104 lines · plain
1; RUN: llc < %s -mtriple armv8a--none-eabi -mattr=+fullfp16 | FileCheck %s2 3define void @load_zero(ptr %in, ptr %out) {4entry:5; CHECK-LABEL: load_zero:6; CHECK: vldr.16 {{s[0-9]+}}, [r0]7 %load = load half, ptr %in, align 28 store half %load, ptr %out9 ret void10}11 12define void @load_255(ptr %in, ptr %out) {13entry:14; CHECK-LABEL: load_255:15; CHECK: vldr.16 {{s[0-9]+}}, [r0, #510]16 %arrayidx = getelementptr inbounds half, ptr %in, i32 25517 %load = load half, ptr %arrayidx, align 218 store half %load, ptr %out19 ret void20}21 22define void @load_256(ptr %in, ptr %out) {23entry:24; CHECK-LABEL: load_256:25; CHECK: add [[ADDR:r[0-9]+]], r0, #51226; CHECK: vldr.16 {{s[0-9]+}}, [[[ADDR]]]27 %arrayidx = getelementptr inbounds half, ptr %in, i32 25628 %load = load half, ptr %arrayidx, align 229 store half %load, ptr %out30 ret void31}32 33define void @load_neg_255(ptr %in, ptr %out) {34entry:35; CHECK-LABEL: load_neg_255:36; CHECK: vldr.16 {{s[0-9]+}}, [r0, #-510]37 %arrayidx = getelementptr inbounds half, ptr %in, i32 -25538 %load = load half, ptr %arrayidx, align 239 store half %load, ptr %out40 ret void41}42 43define void @load_neg_256(ptr %in, ptr %out) {44entry:45; CHECK-LABEL: load_neg_256:46; CHECK: sub [[ADDR:r[0-9]+]], r0, #51247; CHECK: vldr.16 {{s[0-9]+}}, [[[ADDR]]]48 %arrayidx = getelementptr inbounds half, ptr %in, i32 -25649 %load = load half, ptr %arrayidx, align 250 store half %load, ptr %out51 ret void52}53 54define void @store_zero(ptr %in, ptr %out) {55entry:56; CHECK-LABEL: store_zero:57 %load = load half, ptr %in, align 258; CHECK: vstr.16 {{s[0-9]+}}, [r1]59 store half %load, ptr %out60 ret void61}62 63define void @store_255(ptr %in, ptr %out) {64entry:65; CHECK-LABEL: store_255:66 %load = load half, ptr %in, align 267; CHECK: vstr.16 {{s[0-9]+}}, [r1, #510]68 %arrayidx = getelementptr inbounds half, ptr %out, i32 25569 store half %load, ptr %arrayidx70 ret void71}72 73define void @store_256(ptr %in, ptr %out) {74entry:75; CHECK-LABEL: store_256:76 %load = load half, ptr %in, align 277; CHECK: add [[ADDR:r[0-9]+]], r1, #51278; CHECK: vstr.16 {{s[0-9]+}}, [[[ADDR]]]79 %arrayidx = getelementptr inbounds half, ptr %out, i32 25680 store half %load, ptr %arrayidx81 ret void82}83 84define void @store_neg_255(ptr %in, ptr %out) {85entry:86; CHECK-LABEL: store_neg_255:87 %load = load half, ptr %in, align 288; CHECK: vstr.16 {{s[0-9]+}}, [r1, #-510]89 %arrayidx = getelementptr inbounds half, ptr %out, i32 -25590 store half %load, ptr %arrayidx91 ret void92}93 94define void @store_neg_256(ptr %in, ptr %out) {95entry:96; CHECK-LABEL: store_neg_256:97 %load = load half, ptr %in, align 298; CHECK: sub [[ADDR:r[0-9]+]], r1, #51299; CHECK: vstr.16 {{s[0-9]+}}, [[[ADDR]]]100 %arrayidx = getelementptr inbounds half, ptr %out, i32 -256101 store half %load, ptr %arrayidx102 ret void103}104