Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/VE/store.ll
; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s | ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s | ||||
; Function Attrs: norecurse nounwind readonly | ; Function Attrs: norecurse nounwind readonly | ||||
define void @storef128(fp128* nocapture %0, fp128 %1) { | |||||
; CHECK-LABEL: storef128: | |||||
; CHECK: .LBB{{[0-9]+}}_2: | |||||
; CHECK-NEXT: st %s2, 8(, %s0) | |||||
; CHECK-NEXT: st %s3, (, %s0) | |||||
; CHECK-NEXT: or %s11, 0, %s9 | |||||
store fp128 %1, fp128* %0, align 16 | |||||
ret void | |||||
} | |||||
; Function Attrs: norecurse nounwind readonly | |||||
define void @storef64(double* nocapture %0, double %1) { | define void @storef64(double* nocapture %0, double %1) { | ||||
; CHECK-LABEL: storef64: | ; CHECK-LABEL: storef64: | ||||
; CHECK: .LBB{{[0-9]+}}_2: | ; CHECK: .LBB{{[0-9]+}}_2: | ||||
; CHECK-NEXT: st %s1, (, %s0) | ; CHECK-NEXT: st %s1, (, %s0) | ||||
; CHECK-NEXT: or %s11, 0, %s9 | ; CHECK-NEXT: or %s11, 0, %s9 | ||||
store double %1, double* %0, align 16 | store double %1, double* %0, align 16 | ||||
ret void | ret void | ||||
} | } | ||||
; Function Attrs: norecurse nounwind readonly | ; Function Attrs: norecurse nounwind readonly | ||||
define void @storef32(float* nocapture %0, float %1) { | define void @storef32(float* nocapture %0, float %1) { | ||||
; CHECK-LABEL: storef32: | ; CHECK-LABEL: storef32: | ||||
; CHECK: .LBB{{[0-9]+}}_2: | ; CHECK: .LBB{{[0-9]+}}_2: | ||||
; CHECK-NEXT: stu %s1, (, %s0) | ; CHECK-NEXT: stu %s1, (, %s0) | ||||
; CHECK-NEXT: or %s11, 0, %s9 | ; CHECK-NEXT: or %s11, 0, %s9 | ||||
store float %1, float* %0, align 16 | store float %1, float* %0, align 16 | ||||
ret void | ret void | ||||
} | } | ||||
; Function Attrs: norecurse nounwind readonly | ; Function Attrs: norecurse nounwind readonly | ||||
define void @storei128(i128* nocapture %0, i128 %1) { | |||||
; CHECK-LABEL: storei128: | |||||
; CHECK: .LBB{{[0-9]+}}_2: | |||||
; CHECK-NEXT: st %s2, 8(, %s0) | |||||
; CHECK-NEXT: st %s1, (, %s0) | |||||
; CHECK-NEXT: or %s11, 0, %s9 | |||||
store i128 %1, i128* %0, align 16 | |||||
ret void | |||||
} | |||||
; Function Attrs: norecurse nounwind readonly | |||||
define void @storei64(i64* nocapture %0, i64 %1) { | define void @storei64(i64* nocapture %0, i64 %1) { | ||||
; CHECK-LABEL: storei64: | ; CHECK-LABEL: storei64: | ||||
; CHECK: .LBB{{[0-9]+}}_2: | ; CHECK: .LBB{{[0-9]+}}_2: | ||||
; CHECK-NEXT: st %s1, (, %s0) | ; CHECK-NEXT: st %s1, (, %s0) | ||||
; CHECK-NEXT: or %s11, 0, %s9 | ; CHECK-NEXT: or %s11, 0, %s9 | ||||
store i64 %1, i64* %0, align 16 | store i64 %1, i64* %0, align 16 | ||||
ret void | ret void | ||||
} | } | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: st1b %s1, (, %s0) | ; CHECK-NEXT: st1b %s1, (, %s0) | ||||
; CHECK-NEXT: or %s11, 0, %s9 | ; CHECK-NEXT: or %s11, 0, %s9 | ||||
%3 = trunc i64 %1 to i8 | %3 = trunc i64 %1 to i8 | ||||
store i8 %3, i8* %0, align 16 | store i8 %3, i8* %0, align 16 | ||||
ret void | ret void | ||||
} | } | ||||
; Function Attrs: norecurse nounwind readonly | ; Function Attrs: norecurse nounwind readonly | ||||
define void @storef128stk(fp128 %0) { | |||||
; CHECK-LABEL: storef128stk: | |||||
; CHECK: .LBB{{[0-9]+}}_2: | |||||
; CHECK-NEXT: st %s1, 176(, %s11) | |||||
; CHECK-NEXT: st %s0, 184(, %s11) | |||||
; CHECK-NEXT: or %s11, 0, %s9 | |||||
%addr = alloca fp128, align 16 | |||||
store fp128 %0, fp128* %addr, align 16 | |||||
ret void | |||||
} | |||||
; Function Attrs: norecurse nounwind readonly | |||||
define void @storef64stk(double %0) { | define void @storef64stk(double %0) { | ||||
; CHECK-LABEL: storef64stk: | ; CHECK-LABEL: storef64stk: | ||||
; CHECK: .LBB{{[0-9]+}}_2: | ; CHECK: .LBB{{[0-9]+}}_2: | ||||
; CHECK-NEXT: st %s0, 176(, %s11) | ; CHECK-NEXT: st %s0, 176(, %s11) | ||||
; CHECK-NEXT: or %s11, 0, %s9 | ; CHECK-NEXT: or %s11, 0, %s9 | ||||
%addr = alloca double, align 16 | %addr = alloca double, align 16 | ||||
store double %0, double* %addr, align 16 | store double %0, double* %addr, align 16 | ||||
ret void | ret void | ||||
} | } | ||||
; Function Attrs: norecurse nounwind readonly | ; Function Attrs: norecurse nounwind readonly | ||||
define void @storef32stk(float %0) { | define void @storef32stk(float %0) { | ||||
; CHECK-LABEL: storef32stk: | ; CHECK-LABEL: storef32stk: | ||||
; CHECK: .LBB{{[0-9]+}}_2: | ; CHECK: .LBB{{[0-9]+}}_2: | ||||
; CHECK-NEXT: stu %s0, 176(, %s11) | ; CHECK-NEXT: stu %s0, 176(, %s11) | ||||
; CHECK-NEXT: or %s11, 0, %s9 | ; CHECK-NEXT: or %s11, 0, %s9 | ||||
%addr = alloca float, align 16 | %addr = alloca float, align 16 | ||||
store float %0, float* %addr, align 16 | store float %0, float* %addr, align 16 | ||||
ret void | ret void | ||||
} | } | ||||
; Function Attrs: norecurse nounwind readonly | ; Function Attrs: norecurse nounwind readonly | ||||
define void @storei128stk(i128 %0) { | |||||
; CHECK-LABEL: storei128stk: | |||||
; CHECK: .LBB{{[0-9]+}}_2: | |||||
; CHECK-NEXT: st %s1, 184(, %s11) | |||||
; CHECK-NEXT: st %s0, 176(, %s11) | |||||
; CHECK-NEXT: or %s11, 0, %s9 | |||||
%addr = alloca i128, align 16 | |||||
store i128 %0, i128* %addr, align 16 | |||||
ret void | |||||
} | |||||
; Function Attrs: norecurse nounwind readonly | |||||
define void @storei64stk(i64 %0) { | define void @storei64stk(i64 %0) { | ||||
; CHECK-LABEL: storei64stk: | ; CHECK-LABEL: storei64stk: | ||||
; CHECK: .LBB{{[0-9]+}}_2: | ; CHECK: .LBB{{[0-9]+}}_2: | ||||
; CHECK-NEXT: st %s0, 176(, %s11) | ; CHECK-NEXT: st %s0, 176(, %s11) | ||||
; CHECK-NEXT: or %s11, 0, %s9 | ; CHECK-NEXT: or %s11, 0, %s9 | ||||
%addr = alloca i64, align 16 | %addr = alloca i64, align 16 | ||||
store i64 %0, i64* %addr, align 16 | store i64 %0, i64* %addr, align 16 | ||||
ret void | ret void | ||||
Show All 34 Lines |