brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.8 KiB · 00f0346 Raw
175 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s3; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s | FileCheck %s5; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s6 7define void @and_v8i1(ptr %x, ptr %y) {8; CHECK-LABEL: and_v8i1:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma11; CHECK-NEXT:    vlm.v v8, (a0)12; CHECK-NEXT:    vlm.v v9, (a1)13; CHECK-NEXT:    vmand.mm v8, v8, v914; CHECK-NEXT:    vsm.v v8, (a0)15; CHECK-NEXT:    ret16  %a = load <8 x i1>, ptr %x17  %b = load <8 x i1>, ptr %y18  %c = and <8 x i1> %a, %b19  store <8 x i1> %c, ptr %x20  ret void21}22 23define void @or_v16i1(ptr %x, ptr %y) {24; CHECK-LABEL: or_v16i1:25; CHECK:       # %bb.0:26; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma27; CHECK-NEXT:    vlm.v v8, (a0)28; CHECK-NEXT:    vlm.v v9, (a1)29; CHECK-NEXT:    vmor.mm v8, v8, v930; CHECK-NEXT:    vsm.v v8, (a0)31; CHECK-NEXT:    ret32  %a = load <16 x i1>, ptr %x33  %b = load <16 x i1>, ptr %y34  %c = or <16 x i1> %a, %b35  store <16 x i1> %c, ptr %x36  ret void37}38 39define void @xor_v32i1(ptr %x, ptr %y) {40; CHECK-LABEL: xor_v32i1:41; CHECK:       # %bb.0:42; CHECK-NEXT:    li a2, 3243; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma44; CHECK-NEXT:    vlm.v v8, (a0)45; CHECK-NEXT:    vlm.v v9, (a1)46; CHECK-NEXT:    vmxor.mm v8, v8, v947; CHECK-NEXT:    vsm.v v8, (a0)48; CHECK-NEXT:    ret49  %a = load <32 x i1>, ptr %x50  %b = load <32 x i1>, ptr %y51  %c = xor <32 x i1> %a, %b52  store <32 x i1> %c, ptr %x53  ret void54}55 56define void @not_v64i1(ptr %x, ptr %y) {57; CHECK-LABEL: not_v64i1:58; CHECK:       # %bb.0:59; CHECK-NEXT:    li a1, 6460; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma61; CHECK-NEXT:    vlm.v v8, (a0)62; CHECK-NEXT:    vmnot.m v8, v863; CHECK-NEXT:    vsm.v v8, (a0)64; CHECK-NEXT:    ret65  %a = load <64 x i1>, ptr %x66  %b = load <64 x i1>, ptr %y67  %c = xor <64 x i1> %a, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>68  store <64 x i1> %c, ptr %x69  ret void70}71 72define void @andnot_v8i1(ptr %x, ptr %y) {73; CHECK-LABEL: andnot_v8i1:74; CHECK:       # %bb.0:75; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma76; CHECK-NEXT:    vlm.v v8, (a0)77; CHECK-NEXT:    vlm.v v9, (a1)78; CHECK-NEXT:    vmandn.mm v8, v9, v879; CHECK-NEXT:    vsm.v v8, (a0)80; CHECK-NEXT:    ret81  %a = load <8 x i1>, ptr %x82  %b = load <8 x i1>, ptr %y83  %c = xor <8 x i1> %a, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>84  %d = and <8 x i1> %b, %c85  store <8 x i1> %d, ptr %x86  ret void87}88 89define void @ornot_v16i1(ptr %x, ptr %y) {90; CHECK-LABEL: ornot_v16i1:91; CHECK:       # %bb.0:92; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma93; CHECK-NEXT:    vlm.v v8, (a0)94; CHECK-NEXT:    vlm.v v9, (a1)95; CHECK-NEXT:    vmorn.mm v8, v9, v896; CHECK-NEXT:    vsm.v v8, (a0)97; CHECK-NEXT:    ret98  %a = load <16 x i1>, ptr %x99  %b = load <16 x i1>, ptr %y100  %c = xor <16 x i1> %a, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>101  %d = or <16 x i1> %b, %c102  store <16 x i1> %d, ptr %x103  ret void104}105 106define void @xornot_v32i1(ptr %x, ptr %y) {107; CHECK-LABEL: xornot_v32i1:108; CHECK:       # %bb.0:109; CHECK-NEXT:    li a2, 32110; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma111; CHECK-NEXT:    vlm.v v8, (a0)112; CHECK-NEXT:    vlm.v v9, (a1)113; CHECK-NEXT:    vmxnor.mm v8, v8, v9114; CHECK-NEXT:    vsm.v v8, (a0)115; CHECK-NEXT:    ret116  %a = load <32 x i1>, ptr %x117  %b = load <32 x i1>, ptr %y118  %c = xor <32 x i1> %a, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>119  %d = xor <32 x i1> %b, %c120  store <32 x i1> %d, ptr %x121  ret void122}123 124define void @nand_v8i1(ptr %x, ptr %y) {125; CHECK-LABEL: nand_v8i1:126; CHECK:       # %bb.0:127; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma128; CHECK-NEXT:    vlm.v v8, (a0)129; CHECK-NEXT:    vlm.v v9, (a1)130; CHECK-NEXT:    vmnand.mm v8, v8, v9131; CHECK-NEXT:    vsm.v v8, (a0)132; CHECK-NEXT:    ret133  %a = load <8 x i1>, ptr %x134  %b = load <8 x i1>, ptr %y135  %c = and <8 x i1> %a, %b136  %d = xor <8 x i1> %c, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>137  store <8 x i1> %d, ptr %x138  ret void139}140 141define void @nor_v16i1(ptr %x, ptr %y) {142; CHECK-LABEL: nor_v16i1:143; CHECK:       # %bb.0:144; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma145; CHECK-NEXT:    vlm.v v8, (a0)146; CHECK-NEXT:    vlm.v v9, (a1)147; CHECK-NEXT:    vmnor.mm v8, v8, v9148; CHECK-NEXT:    vsm.v v8, (a0)149; CHECK-NEXT:    ret150  %a = load <16 x i1>, ptr %x151  %b = load <16 x i1>, ptr %y152  %c = or <16 x i1> %a, %b153  %d = xor <16 x i1> %c, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>154  store <16 x i1> %d, ptr %x155  ret void156}157 158define void @xnor_v32i1(ptr %x, ptr %y) {159; CHECK-LABEL: xnor_v32i1:160; CHECK:       # %bb.0:161; CHECK-NEXT:    li a2, 32162; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma163; CHECK-NEXT:    vlm.v v8, (a0)164; CHECK-NEXT:    vlm.v v9, (a1)165; CHECK-NEXT:    vmxnor.mm v8, v8, v9166; CHECK-NEXT:    vsm.v v8, (a0)167; CHECK-NEXT:    ret168  %a = load <32 x i1>, ptr %x169  %b = load <32 x i1>, ptr %y170  %c = xor <32 x i1> %a, %b171  %d = xor <32 x i1> %c, <i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1, i1 1>172  store <32 x i1> %d, ptr %x173  ret void174}175