| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc -mcpu=z15 %s -mtriple=s390x-linux-gnu -o - | FileCheck %s |
| ; |
| ; Test non-volatile memsets of small constant lengths in both aligned and |
| ; unaligned cases. |
| |
| declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) |
| |
| define void @reg1(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg1: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 1, i1 false) |
| ret void |
| } |
| |
| define void @reg1_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg1_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 1, i1 false) |
| ret void |
| } |
| |
| define void @reg2(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg2: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 1(%r2) |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 2, i1 false) |
| ret void |
| } |
| |
| define void @reg2_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg2_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 1(%r2) |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 2, i1 false) |
| ret void |
| } |
| |
| define void @reg3(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg3: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(2,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 3, i1 false) |
| ret void |
| } |
| |
| define void @reg3_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg3_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(2,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 3, i1 false) |
| ret void |
| } |
| |
| define void @reg4(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg4: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(3,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 4, i1 false) |
| ret void |
| } |
| |
| define void @reg4_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg4_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(3,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 4, i1 false) |
| ret void |
| } |
| |
| define void @reg5(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg5: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(4,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 5, i1 false) |
| ret void |
| } |
| |
| define void @reg5_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg5_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(4,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 5, i1 false) |
| ret void |
| } |
| |
| define void @reg6(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg6: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(5,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 6, i1 false) |
| ret void |
| } |
| |
| define void @reg6_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg6_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(5,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 6, i1 false) |
| ret void |
| } |
| |
| define void @reg7(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg7: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(6,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 7, i1 false) |
| ret void |
| } |
| |
| define void @reg7_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg7_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(6,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 7, i1 false) |
| ret void |
| } |
| |
| define void @reg8(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg8: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(7,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 8, i1 false) |
| ret void |
| } |
| |
| define void @reg8_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg8_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(7,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 8, i1 false) |
| ret void |
| } |
| |
| define void @reg9(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg9: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(8,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 9, i1 false) |
| ret void |
| } |
| |
| define void @reg9_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg9_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(8,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 9, i1 false) |
| ret void |
| } |
| |
| define void @reg10(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg10: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(9,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 10, i1 false) |
| ret void |
| } |
| |
| define void @reg10_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg10_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(9,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 10, i1 false) |
| ret void |
| } |
| |
| define void @reg11(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg11: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(10,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 11, i1 false) |
| ret void |
| } |
| |
| define void @reg11_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg11_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(10,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 11, i1 false) |
| ret void |
| } |
| |
| define void @reg12(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg12: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(11,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 12, i1 false) |
| ret void |
| } |
| |
| define void @reg12_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg12_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(11,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 12, i1 false) |
| ret void |
| } |
| |
| define void @reg13(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg13: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(12,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 13, i1 false) |
| ret void |
| } |
| |
| define void @reg13_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg13_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(12,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 13, i1 false) |
| ret void |
| } |
| |
| define void @reg14(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg14: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(13,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 14, i1 false) |
| ret void |
| } |
| |
| define void @reg14_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg14_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(13,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 14, i1 false) |
| ret void |
| } |
| |
| define void @reg15(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg15: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(14,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 15, i1 false) |
| ret void |
| } |
| |
| define void @reg15_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg15_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(14,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 15, i1 false) |
| ret void |
| } |
| |
| define void @reg16(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg16: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(15,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 16, i1 false) |
| ret void |
| } |
| |
| define void @reg16_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg16_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(15,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 16, i1 false) |
| ret void |
| } |
| |
| define void @reg17(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg17: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(16,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 17, i1 false) |
| ret void |
| } |
| |
| define void @reg17_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg17_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(16,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 17, i1 false) |
| ret void |
| } |
| |
| define void @reg18(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg18: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: vsteh %v0, 16(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 18, i1 false) |
| ret void |
| } |
| |
| define void @reg18_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg18_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: vsteh %v0, 16(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 18, i1 false) |
| ret void |
| } |
| |
| define void @reg19(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg19: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vstef %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 19, i1 false) |
| ret void |
| } |
| |
| define void @reg19_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg19_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vstef %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 19, i1 false) |
| ret void |
| } |
| |
| define void @reg20(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg20: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vstef %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @reg20_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg20_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vstef %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @reg20_localDst(i8 %val) { |
| ; CHECK-LABEL: reg20_localDst: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: aghi %r15, -184 |
| ; CHECK-NEXT: .cfi_def_cfa_offset 344 |
| ; CHECK-NEXT: vlvgp %v0, %r2, %r2 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vstef %v0, 180(%r15), 0 |
| ; CHECK-NEXT: vst %v0, 164(%r15), 4 |
| ; CHECK-NEXT: aghi %r15, 184 |
| ; CHECK-NEXT: br %r14 |
| %Dst = alloca [20 x i8] |
| call void @llvm.memset.p0.i64(ptr align 16 %Dst, i8 %val, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @reg21(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg21: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 13(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 21, i1 false) |
| ret void |
| } |
| |
| define void @reg21_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg21_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 13(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 21, i1 false) |
| ret void |
| } |
| |
| define void @reg22(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg22: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 14(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 22, i1 false) |
| ret void |
| } |
| |
| define void @reg22_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg22_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 14(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 22, i1 false) |
| ret void |
| } |
| |
| define void @reg23(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg23: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 23, i1 false) |
| ret void |
| } |
| |
| define void @reg23_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg23_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 23, i1 false) |
| ret void |
| } |
| |
| define void @reg24(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg24: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 24, i1 false) |
| ret void |
| } |
| |
| define void @reg24_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg24_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vsteg %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 24, i1 false) |
| ret void |
| } |
| |
| define void @reg25(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg25: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 9(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 25, i1 false) |
| ret void |
| } |
| |
| define void @reg25_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg25_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 9(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 25, i1 false) |
| ret void |
| } |
| |
| define void @reg26(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg26: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 10(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 26, i1 false) |
| ret void |
| } |
| |
| define void @reg26_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg26_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 10(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 26, i1 false) |
| ret void |
| } |
| |
| define void @reg27(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg27: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 11(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 27, i1 false) |
| ret void |
| } |
| |
| define void @reg27_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg27_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 11(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 27, i1 false) |
| ret void |
| } |
| |
| define void @reg28(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg28: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 12(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 28, i1 false) |
| ret void |
| } |
| |
| define void @reg28_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg28_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 12(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 28, i1 false) |
| ret void |
| } |
| |
| define void @reg29(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg29: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 13(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 29, i1 false) |
| ret void |
| } |
| |
| define void @reg29_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg29_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 13(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 29, i1 false) |
| ret void |
| } |
| |
| define void @reg30(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg30: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 14(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 30, i1 false) |
| ret void |
| } |
| |
| define void @reg30_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg30_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 14(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 30, i1 false) |
| ret void |
| } |
| |
| define void @reg31(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg31: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 15(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 31, i1 false) |
| ret void |
| } |
| |
| define void @reg31_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg31_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 15(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 31, i1 false) |
| ret void |
| } |
| |
| define void @reg32(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg32: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 16(%r2), 3 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 32, i1 false) |
| ret void |
| } |
| |
| define void @reg32_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg32_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vlvgp %v0, %r3, %r3 |
| ; CHECK-NEXT: vrepb %v0, %v0, 7 |
| ; CHECK-NEXT: vst %v0, 16(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 32, i1 false) |
| ret void |
| } |
| |
| define void @reg33(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg33: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(32,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 %val, i64 33, i1 false) |
| ret void |
| } |
| |
| define void @reg33_unaligned(ptr %Dst, i8 %val) { |
| ; CHECK-LABEL: reg33_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: stc %r3, 0(%r2) |
| ; CHECK-NEXT: mvc 1(32,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 %val, i64 33, i1 false) |
| ret void |
| } |
| |
| ;; Immediate value |
| |
| define void @imm1(ptr %Dst) { |
| ; CHECK-LABEL: imm1: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 1 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 1, i64 1, i1 false) |
| ret void |
| } |
| |
| define void @imm1_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm1_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 255 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 -1, i64 1, i1 false) |
| ret void |
| } |
| |
| define void @imm2(ptr %Dst) { |
| ; CHECK-LABEL: imm2: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 0(%r2), 514 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 2, i64 2, i1 false) |
| ret void |
| } |
| |
| define void @imm2_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm2_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 0(%r2), 514 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 2, i64 2, i1 false) |
| ret void |
| } |
| |
| define void @imm3(ptr %Dst) { |
| ; CHECK-LABEL: imm3: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 2(%r2), 3 |
| ; CHECK-NEXT: mvhhi 0(%r2), 771 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 3, i64 3, i1 false) |
| ret void |
| } |
| |
| define void @imm3_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm3_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 2(%r2), 3 |
| ; CHECK-NEXT: mvhhi 0(%r2), 771 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 3, i64 3, i1 false) |
| ret void |
| } |
| |
| define void @imm4(ptr %Dst) { |
| ; CHECK-LABEL: imm4: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 4 |
| ; CHECK-NEXT: vstef %v0, 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 4, i64 4, i1 false) |
| ret void |
| } |
| |
| define void @imm4_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm4_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 4 |
| ; CHECK-NEXT: vstef %v0, 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 4, i64 4, i1 false) |
| ret void |
| } |
| |
| define void @imm5(ptr %Dst) { |
| ; CHECK-LABEL: imm5: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 5 |
| ; CHECK-NEXT: mvc 1(4,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 5, i64 5, i1 false) |
| ret void |
| } |
| |
| define void @imm5_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm5_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 5 |
| ; CHECK-NEXT: mvc 1(4,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 5, i64 5, i1 false) |
| ret void |
| } |
| |
| define void @imm6(ptr %Dst) { |
| ; CHECK-LABEL: imm6: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 6 |
| ; CHECK-NEXT: mvc 1(5,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 6, i64 6, i1 false) |
| ret void |
| } |
| |
| define void @imm6_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm6_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 6 |
| ; CHECK-NEXT: mvc 1(5,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 6, i64 6, i1 false) |
| ret void |
| } |
| |
| define void @imm7(ptr %Dst) { |
| ; CHECK-LABEL: imm7: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 7 |
| ; CHECK-NEXT: mvc 1(6,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 7, i64 7, i1 false) |
| ret void |
| } |
| |
| define void @imm7_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm7_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 7 |
| ; CHECK-NEXT: mvc 1(6,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 7, i64 7, i1 false) |
| ret void |
| } |
| |
| define void @imm8(ptr %Dst) { |
| ; CHECK-LABEL: imm8: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 8 |
| ; CHECK-NEXT: mvc 1(7,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 8, i64 8, i1 false) |
| ret void |
| } |
| |
| define void @imm8_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm8_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 8 |
| ; CHECK-NEXT: mvc 1(7,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 8, i64 8, i1 false) |
| ret void |
| } |
| |
| define void @imm9(ptr %Dst) { |
| ; CHECK-LABEL: imm9: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 9 |
| ; CHECK-NEXT: mvc 1(8,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 9, i64 9, i1 false) |
| ret void |
| } |
| |
| define void @imm9_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm9_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 9 |
| ; CHECK-NEXT: mvc 1(8,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 9, i64 9, i1 false) |
| ret void |
| } |
| |
| define void @imm10(ptr %Dst) { |
| ; CHECK-LABEL: imm10: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 10 |
| ; CHECK-NEXT: mvc 1(9,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 10, i64 10, i1 false) |
| ret void |
| } |
| |
| define void @imm10_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm10_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 10 |
| ; CHECK-NEXT: mvc 1(9,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 10, i64 10, i1 false) |
| ret void |
| } |
| |
| define void @imm11(ptr %Dst) { |
| ; CHECK-LABEL: imm11: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 11 |
| ; CHECK-NEXT: mvc 1(10,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 11, i64 11, i1 false) |
| ret void |
| } |
| |
| define void @imm11_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm11_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 11 |
| ; CHECK-NEXT: mvc 1(10,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 11, i64 11, i1 false) |
| ret void |
| } |
| |
| define void @imm12(ptr %Dst) { |
| ; CHECK-LABEL: imm12: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 12 |
| ; CHECK-NEXT: mvc 1(11,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 12, i64 12, i1 false) |
| ret void |
| } |
| |
| define void @imm12_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm12_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 12 |
| ; CHECK-NEXT: mvc 1(11,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 12, i64 12, i1 false) |
| ret void |
| } |
| |
| define void @imm13(ptr %Dst) { |
| ; CHECK-LABEL: imm13: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 13 |
| ; CHECK-NEXT: mvc 1(12,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 13, i64 13, i1 false) |
| ret void |
| } |
| |
| define void @imm13_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm13_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 13 |
| ; CHECK-NEXT: mvc 1(12,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 13, i64 13, i1 false) |
| ret void |
| } |
| |
| define void @imm14(ptr %Dst) { |
| ; CHECK-LABEL: imm14: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 14 |
| ; CHECK-NEXT: mvc 1(13,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 14, i64 14, i1 false) |
| ret void |
| } |
| |
| define void @imm14_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm14_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 14 |
| ; CHECK-NEXT: mvc 1(13,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 14, i64 14, i1 false) |
| ret void |
| } |
| |
| define void @imm15(ptr %Dst) { |
| ; CHECK-LABEL: imm15: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 15 |
| ; CHECK-NEXT: mvc 1(14,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 15, i64 15, i1 false) |
| ret void |
| } |
| |
| define void @imm15_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm15_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 15 |
| ; CHECK-NEXT: mvc 1(14,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 15, i64 15, i1 false) |
| ret void |
| } |
| |
| define void @imm16(ptr %Dst) { |
| ; CHECK-LABEL: imm16: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 16 |
| ; CHECK-NEXT: mvc 1(15,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 16, i64 16, i1 false) |
| ret void |
| } |
| |
| define void @imm16_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm16_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 16 |
| ; CHECK-NEXT: mvc 1(15,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 16, i64 16, i1 false) |
| ret void |
| } |
| |
| define void @imm17(ptr %Dst) { |
| ; CHECK-LABEL: imm17: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 17 |
| ; CHECK-NEXT: mvc 1(16,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 17, i64 17, i1 false) |
| ret void |
| } |
| |
| define void @imm17_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm17_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 17 |
| ; CHECK-NEXT: mvc 1(16,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 17, i64 17, i1 false) |
| ret void |
| } |
| |
| define void @imm18(ptr %Dst) { |
| ; CHECK-LABEL: imm18: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 18 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: mvhhi 16(%r2), 4626 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 18, i64 18, i1 false) |
| ret void |
| } |
| |
| define void @imm18_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm18_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 18 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: mvhhi 16(%r2), 4626 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 18, i64 18, i1 false) |
| ret void |
| } |
| |
| define void @imm19(ptr %Dst) { |
| ; CHECK-LABEL: imm19: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 19 |
| ; CHECK-NEXT: vstef %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 19, i64 19, i1 false) |
| ret void |
| } |
| |
| define void @imm19_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm19_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 19 |
| ; CHECK-NEXT: vstef %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 19, i64 19, i1 false) |
| ret void |
| } |
| |
| define void @imm20(ptr %Dst) { |
| ; CHECK-LABEL: imm20: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 20 |
| ; CHECK-NEXT: vstef %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 20, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @imm20_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm20_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 20 |
| ; CHECK-NEXT: vstef %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 20, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @imm20_localDst() { |
| ; CHECK-LABEL: imm20_localDst: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: aghi %r15, -184 |
| ; CHECK-NEXT: .cfi_def_cfa_offset 344 |
| ; CHECK-NEXT: vrepib %v0, 20 |
| ; CHECK-NEXT: vstef %v0, 180(%r15), 0 |
| ; CHECK-NEXT: vst %v0, 164(%r15), 4 |
| ; CHECK-NEXT: aghi %r15, 184 |
| ; CHECK-NEXT: br %r14 |
| %Dst = alloca [20 x i8] |
| call void @llvm.memset.p0.i64(ptr align 16 %Dst, i8 20, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @imm21(ptr %Dst) { |
| ; CHECK-LABEL: imm21: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 21 |
| ; CHECK-NEXT: vsteg %v0, 13(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 21, i64 21, i1 false) |
| ret void |
| } |
| |
| define void @imm21_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm21_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 21 |
| ; CHECK-NEXT: vsteg %v0, 13(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 21, i64 21, i1 false) |
| ret void |
| } |
| |
| define void @imm22(ptr %Dst) { |
| ; CHECK-LABEL: imm22: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 22 |
| ; CHECK-NEXT: vsteg %v0, 14(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 22, i64 22, i1 false) |
| ret void |
| } |
| |
| define void @imm22_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm22_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 22 |
| ; CHECK-NEXT: vsteg %v0, 14(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 22, i64 22, i1 false) |
| ret void |
| } |
| |
| define void @imm23(ptr %Dst) { |
| ; CHECK-LABEL: imm23: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 23 |
| ; CHECK-NEXT: vsteg %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 23, i64 23, i1 false) |
| ret void |
| } |
| |
| define void @imm23_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm23_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 23 |
| ; CHECK-NEXT: vsteg %v0, 15(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 23, i64 23, i1 false) |
| ret void |
| } |
| |
| define void @imm24(ptr %Dst) { |
| ; CHECK-LABEL: imm24: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 24 |
| ; CHECK-NEXT: vsteg %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 24, i64 24, i1 false) |
| ret void |
| } |
| |
| define void @imm24_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm24_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 24 |
| ; CHECK-NEXT: vsteg %v0, 16(%r2), 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 24, i64 24, i1 false) |
| ret void |
| } |
| |
| define void @imm25(ptr %Dst) { |
| ; CHECK-LABEL: imm25: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 25 |
| ; CHECK-NEXT: vst %v0, 9(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 25, i64 25, i1 false) |
| ret void |
| } |
| |
| define void @imm25_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm25_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 25 |
| ; CHECK-NEXT: vst %v0, 9(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 25, i64 25, i1 false) |
| ret void |
| } |
| |
| define void @imm26(ptr %Dst) { |
| ; CHECK-LABEL: imm26: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 26 |
| ; CHECK-NEXT: vst %v0, 10(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 26, i64 26, i1 false) |
| ret void |
| } |
| |
| define void @imm26_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm26_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 26 |
| ; CHECK-NEXT: vst %v0, 10(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 26, i64 26, i1 false) |
| ret void |
| } |
| |
| define void @imm27(ptr %Dst) { |
| ; CHECK-LABEL: imm27: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 27 |
| ; CHECK-NEXT: vst %v0, 11(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 27, i64 27, i1 false) |
| ret void |
| } |
| |
| define void @imm27_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm27_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 27 |
| ; CHECK-NEXT: vst %v0, 11(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 27, i64 27, i1 false) |
| ret void |
| } |
| |
| define void @imm28(ptr %Dst) { |
| ; CHECK-LABEL: imm28: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 28 |
| ; CHECK-NEXT: vst %v0, 12(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 28, i64 28, i1 false) |
| ret void |
| } |
| |
| define void @imm28_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm28_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 28 |
| ; CHECK-NEXT: vst %v0, 12(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 28, i64 28, i1 false) |
| ret void |
| } |
| |
| define void @imm29(ptr %Dst) { |
| ; CHECK-LABEL: imm29: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 29 |
| ; CHECK-NEXT: vst %v0, 13(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 29, i64 29, i1 false) |
| ret void |
| } |
| |
| define void @imm29_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm29_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 29 |
| ; CHECK-NEXT: vst %v0, 13(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 29, i64 29, i1 false) |
| ret void |
| } |
| |
| define void @imm30(ptr %Dst) { |
| ; CHECK-LABEL: imm30: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 30 |
| ; CHECK-NEXT: vst %v0, 14(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 30, i64 30, i1 false) |
| ret void |
| } |
| |
| define void @imm30_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm30_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 30 |
| ; CHECK-NEXT: vst %v0, 14(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 30, i64 30, i1 false) |
| ret void |
| } |
| |
| define void @imm31(ptr %Dst) { |
| ; CHECK-LABEL: imm31: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 31 |
| ; CHECK-NEXT: vst %v0, 15(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 31, i64 31, i1 false) |
| ret void |
| } |
| |
| define void @imm31_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm31_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 31 |
| ; CHECK-NEXT: vst %v0, 15(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 31, i64 31, i1 false) |
| ret void |
| } |
| |
| define void @imm32(ptr %Dst) { |
| ; CHECK-LABEL: imm32: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 32 |
| ; CHECK-NEXT: vst %v0, 16(%r2), 3 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 32, i64 32, i1 false) |
| ret void |
| } |
| |
| define void @imm32_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm32_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vrepib %v0, 32 |
| ; CHECK-NEXT: vst %v0, 16(%r2) |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 32, i64 32, i1 false) |
| ret void |
| } |
| |
| define void @imm33(ptr %Dst) { |
| ; CHECK-LABEL: imm33: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 33 |
| ; CHECK-NEXT: mvc 1(32,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 33, i64 33, i1 false) |
| ret void |
| } |
| |
| define void @imm33_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: imm33_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 33 |
| ; CHECK-NEXT: mvc 1(32,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 33, i64 33, i1 false) |
| ret void |
| } |
| |
| ;; zero |
| |
| define void @zero1(ptr %Dst) { |
| ; CHECK-LABEL: zero1: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 1, i1 false) |
| ret void |
| } |
| |
| define void @zero1_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero1_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 1, i1 false) |
| ret void |
| } |
| |
| define void @zero2(ptr %Dst) { |
| ; CHECK-LABEL: zero2: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 2, i1 false) |
| ret void |
| } |
| |
| define void @zero2_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero2_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 2, i1 false) |
| ret void |
| } |
| |
| define void @zero3(ptr %Dst) { |
| ; CHECK-LABEL: zero3: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 2(%r2), 0 |
| ; CHECK-NEXT: mvhhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 3, i1 false) |
| ret void |
| } |
| |
| define void @zero3_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero3_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 2(%r2), 0 |
| ; CHECK-NEXT: mvhhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 3, i1 false) |
| ret void |
| } |
| |
| define void @zero4(ptr %Dst) { |
| ; CHECK-LABEL: zero4: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 4, i1 false) |
| ret void |
| } |
| |
| define void @zero4_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero4_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 4, i1 false) |
| ret void |
| } |
| |
| define void @zero5(ptr %Dst) { |
| ; CHECK-LABEL: zero5: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 4(%r2), 0 |
| ; CHECK-NEXT: mvhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 5, i1 false) |
| ret void |
| } |
| |
| define void @zero5_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero5_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 4(%r2), 0 |
| ; CHECK-NEXT: mvhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 5, i1 false) |
| ret void |
| } |
| |
| define void @zero6(ptr %Dst) { |
| ; CHECK-LABEL: zero6: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 4(%r2), 0 |
| ; CHECK-NEXT: mvhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 6, i1 false) |
| ret void |
| } |
| |
| define void @zero6_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero6_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 4(%r2), 0 |
| ; CHECK-NEXT: mvhi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 6, i1 false) |
| ret void |
| } |
| |
| define void @zero7(ptr %Dst) { |
| ; CHECK-LABEL: zero7: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(7,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 7, i1 false) |
| ret void |
| } |
| |
| define void @zero7_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero7_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(7,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 7, i1 false) |
| ret void |
| } |
| |
| define void @zero8(ptr %Dst) { |
| ; CHECK-LABEL: zero8: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvghi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 8, i1 false) |
| ret void |
| } |
| |
| define void @zero8_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero8_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 0(%r2), 8 |
| ; CHECK-NEXT: mvc 1(7,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 8, i64 8, i1 false) |
| ret void |
| } |
| |
| define void @zero9(ptr %Dst) { |
| ; CHECK-LABEL: zero9: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 8(%r2), 0 |
| ; CHECK-NEXT: mvghi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 9, i1 false) |
| ret void |
| } |
| |
| define void @zero9_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero9_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvi 8(%r2), 0 |
| ; CHECK-NEXT: mvghi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 9, i1 false) |
| ret void |
| } |
| |
| define void @zero10(ptr %Dst) { |
| ; CHECK-LABEL: zero10: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 8(%r2), 0 |
| ; CHECK-NEXT: mvghi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 10, i1 false) |
| ret void |
| } |
| |
| define void @zero10_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero10_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhhi 8(%r2), 0 |
| ; CHECK-NEXT: mvghi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 10, i1 false) |
| ret void |
| } |
| |
| define void @zero11(ptr %Dst) { |
| ; CHECK-LABEL: zero11: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(11,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 11, i1 false) |
| ret void |
| } |
| |
| define void @zero11_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero11_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(11,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 11, i1 false) |
| ret void |
| } |
| |
| define void @zero12(ptr %Dst) { |
| ; CHECK-LABEL: zero12: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhi 8(%r2), 0 |
| ; CHECK-NEXT: mvghi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 12, i1 false) |
| ret void |
| } |
| |
| define void @zero12_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero12_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: mvhi 8(%r2), 0 |
| ; CHECK-NEXT: mvghi 0(%r2), 0 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 12, i1 false) |
| ret void |
| } |
| |
| define void @zero13(ptr %Dst) { |
| ; CHECK-LABEL: zero13: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(13,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 13, i1 false) |
| ret void |
| } |
| |
| define void @zero13_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero13_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(13,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 13, i1 false) |
| ret void |
| } |
| |
| define void @zero14(ptr %Dst) { |
| ; CHECK-LABEL: zero14: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(14,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 14, i1 false) |
| ret void |
| } |
| |
| define void @zero14_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero14_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(14,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 14, i1 false) |
| ret void |
| } |
| |
| define void @zero15(ptr %Dst) { |
| ; CHECK-LABEL: zero15: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(15,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 15, i1 false) |
| ret void |
| } |
| |
| define void @zero15_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero15_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(15,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 15, i1 false) |
| ret void |
| } |
| |
| define void @zero16(ptr %Dst) { |
| ; CHECK-LABEL: zero16: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vgbm %v0, 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2), 3 |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 16, i1 false) |
| ret void |
| } |
| |
| define void @zero16_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero16_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vgbm %v0, 0 |
| ; CHECK-NEXT: vst %v0, 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 16, i1 false) |
| ret void |
| } |
| |
| define void @zero17(ptr %Dst) { |
| ; CHECK-LABEL: zero17: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(17,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 17, i1 false) |
| ret void |
| } |
| |
| define void @zero17_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero17_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(17,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 17, i1 false) |
| ret void |
| } |
| |
| define void @zero18(ptr %Dst) { |
| ; CHECK-LABEL: zero18: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(18,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 18, i1 false) |
| ret void |
| } |
| |
| define void @zero18_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero18_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(18,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 18, i1 false) |
| ret void |
| } |
| |
| define void @zero19(ptr %Dst) { |
| ; CHECK-LABEL: zero19: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(19,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 19, i1 false) |
| ret void |
| } |
| |
| define void @zero19_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero19_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(19,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 19, i1 false) |
| ret void |
| } |
| |
| define void @zero20(ptr %Dst) { |
| ; CHECK-LABEL: zero20: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(20,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @zero20_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero20_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(20,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @zero20_localDst() { |
| ; CHECK-LABEL: zero20_localDst: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: aghi %r15, -184 |
| ; CHECK-NEXT: .cfi_def_cfa_offset 344 |
| ; CHECK-NEXT: xc 164(20,%r15), 164(%r15) |
| ; CHECK-NEXT: aghi %r15, 184 |
| ; CHECK-NEXT: br %r14 |
| %Dst = alloca [20 x i8] |
| call void @llvm.memset.p0.i64(ptr align 16 %Dst, i8 0, i64 20, i1 false) |
| ret void |
| } |
| |
| define void @zero21(ptr %Dst) { |
| ; CHECK-LABEL: zero21: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(21,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 21, i1 false) |
| ret void |
| } |
| |
| define void @zero21_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero21_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(21,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 21, i1 false) |
| ret void |
| } |
| |
| define void @zero22(ptr %Dst) { |
| ; CHECK-LABEL: zero22: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(22,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 22, i1 false) |
| ret void |
| } |
| |
| define void @zero22_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero22_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(22,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 22, i1 false) |
| ret void |
| } |
| |
| define void @zero23(ptr %Dst) { |
| ; CHECK-LABEL: zero23: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(23,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 23, i1 false) |
| ret void |
| } |
| |
| define void @zero23_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero23_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(23,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 23, i1 false) |
| ret void |
| } |
| |
| define void @zero24(ptr %Dst) { |
| ; CHECK-LABEL: zero24: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(24,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 24, i1 false) |
| ret void |
| } |
| |
| define void @zero24_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero24_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(24,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 24, i1 false) |
| ret void |
| } |
| |
| define void @zero25(ptr %Dst) { |
| ; CHECK-LABEL: zero25: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(25,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 25, i1 false) |
| ret void |
| } |
| |
| define void @zero25_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero25_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(25,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 25, i1 false) |
| ret void |
| } |
| |
| define void @zero26(ptr %Dst) { |
| ; CHECK-LABEL: zero26: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(26,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 26, i1 false) |
| ret void |
| } |
| |
| define void @zero26_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero26_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(26,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 26, i1 false) |
| ret void |
| } |
| |
| define void @zero27(ptr %Dst) { |
| ; CHECK-LABEL: zero27: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(27,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 27, i1 false) |
| ret void |
| } |
| |
| define void @zero27_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero27_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(27,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 27, i1 false) |
| ret void |
| } |
| |
| define void @zero28(ptr %Dst) { |
| ; CHECK-LABEL: zero28: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(28,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 28, i1 false) |
| ret void |
| } |
| |
| define void @zero28_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero28_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(28,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 28, i1 false) |
| ret void |
| } |
| |
| define void @zero29(ptr %Dst) { |
| ; CHECK-LABEL: zero29: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(29,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 29, i1 false) |
| ret void |
| } |
| |
| define void @zero29_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero29_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(29,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 29, i1 false) |
| ret void |
| } |
| |
| define void @zero30(ptr %Dst) { |
| ; CHECK-LABEL: zero30: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(30,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 30, i1 false) |
| ret void |
| } |
| |
| define void @zero30_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero30_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(30,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 30, i1 false) |
| ret void |
| } |
| |
| define void @zero31(ptr %Dst) { |
| ; CHECK-LABEL: zero31: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(31,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 31, i1 false) |
| ret void |
| } |
| |
| define void @zero31_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero31_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(31,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 31, i1 false) |
| ret void |
| } |
| |
| define void @zero32(ptr %Dst) { |
| ; CHECK-LABEL: zero32: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(32,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 32, i1 false) |
| ret void |
| } |
| |
| define void @zero32_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero32_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(32,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 32, i1 false) |
| ret void |
| } |
| |
| define void @zero33(ptr %Dst) { |
| ; CHECK-LABEL: zero33: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(33,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 8 %Dst, i8 0, i64 33, i1 false) |
| ret void |
| } |
| |
| define void @zero33_unaligned(ptr %Dst) { |
| ; CHECK-LABEL: zero33_unaligned: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: xc 0(33,%r2), 0(%r2) |
| ; CHECK-NEXT: br %r14 |
| call void @llvm.memset.p0.i64(ptr align 1 %Dst, i8 0, i64 33, i1 false) |
| ret void |
| } |