brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · ce33a3b Raw
108 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 5define <vscale x 8 x i8> @mask_sext_not_nxv8i8(<vscale x 8 x i1> %m) {6; CHECK-LABEL: mask_sext_not_nxv8i8:7; CHECK:       # %bb.0:8; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma9; CHECK-NEXT:    vmv.v.i v8, -110; CHECK-NEXT:    vmerge.vim v8, v8, 0, v011; CHECK-NEXT:    ret12  %not = xor <vscale x 8 x i1> %m, splat (i1 true)13  %ext = sext <vscale x 8 x i1> %not to <vscale x 8 x i8>14  ret <vscale x 8 x i8> %ext15}16 17define <vscale x 8 x i8> @mask_zext_not_nxv8i8(<vscale x 8 x i1> %m) {18; CHECK-LABEL: mask_zext_not_nxv8i8:19; CHECK:       # %bb.0:20; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma21; CHECK-NEXT:    vmv.v.i v8, 122; CHECK-NEXT:    vmerge.vim v8, v8, 0, v023; CHECK-NEXT:    ret24  %not = xor <vscale x 8 x i1> %m, splat (i1 true)25  %ext = zext <vscale x 8 x i1> %not to <vscale x 8 x i8>26  ret <vscale x 8 x i8> %ext27}28 29define <8 x i8> @mask_sext_not_v8i8(<8 x i1> %m) {30; CHECK-LABEL: mask_sext_not_v8i8:31; CHECK:       # %bb.0:32; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma33; CHECK-NEXT:    vmv.v.i v8, -134; CHECK-NEXT:    vmerge.vim v8, v8, 0, v035; CHECK-NEXT:    ret36  %not = xor <8 x i1> %m, splat (i1 true)37  %ext = sext <8 x i1> %not to <8 x i8>38  ret <8 x i8> %ext39}40 41define <8 x i8> @mask_zext_not_v8i8(<8 x i1> %m) {42; CHECK-LABEL: mask_zext_not_v8i8:43; CHECK:       # %bb.0:44; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma45; CHECK-NEXT:    vmv.v.i v8, 146; CHECK-NEXT:    vmerge.vim v8, v8, 0, v047; CHECK-NEXT:    ret48  %not = xor <8 x i1> %m, splat (i1 true)49  %ext = zext <8 x i1> %not to <8 x i8>50  ret <8 x i8> %ext51}52 53define <vscale x 8 x i8> @mask_sext_xor_nxv8i8(<vscale x 8 x i1> %m, <vscale x 8 x i1> %x) {54; CHECK-LABEL: mask_sext_xor_nxv8i8:55; CHECK:       # %bb.0:56; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma57; CHECK-NEXT:    vmxor.mm v0, v0, v858; CHECK-NEXT:    vmv.v.i v8, 059; CHECK-NEXT:    vmerge.vim v8, v8, -1, v060; CHECK-NEXT:    ret61  %xor = xor <vscale x 8 x i1> %m, %x62  %ext = sext <vscale x 8 x i1> %xor to <vscale x 8 x i8>63  ret <vscale x 8 x i8> %ext64}65 66define <vscale x 8 x i8> @mask_zext_xor_nxv8i8(<vscale x 8 x i1> %m, <vscale x 8 x i1> %x) {67; CHECK-LABEL: mask_zext_xor_nxv8i8:68; CHECK:       # %bb.0:69; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma70; CHECK-NEXT:    vmxor.mm v0, v0, v871; CHECK-NEXT:    vmv.v.i v8, 072; CHECK-NEXT:    vmerge.vim v8, v8, 1, v073; CHECK-NEXT:    ret74  %xor = xor <vscale x 8 x i1> %m, %x75  %ext = zext <vscale x 8 x i1> %xor to <vscale x 8 x i8>76  ret <vscale x 8 x i8> %ext77}78 79define <8 x i8> @mask_sext_xor_v8i8(<8 x i1> %m) {80; CHECK-LABEL: mask_sext_xor_v8i8:81; CHECK:       # %bb.0:82; CHECK-NEXT:    li a0, 8583; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma84; CHECK-NEXT:    vmv.s.x v8, a085; CHECK-NEXT:    vmxor.mm v0, v0, v886; CHECK-NEXT:    vmv.v.i v8, 087; CHECK-NEXT:    vmerge.vim v8, v8, -1, v088; CHECK-NEXT:    ret89  %xor = xor <8 x i1> %m, <i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0>90  %ext = sext <8 x i1> %xor to <8 x i8>91  ret <8 x i8> %ext92}93 94define <8 x i8> @mask_zext_xor_v8i8(<8 x i1> %m) {95; CHECK-LABEL: mask_zext_xor_v8i8:96; CHECK:       # %bb.0:97; CHECK-NEXT:    li a0, 8598; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma99; CHECK-NEXT:    vmv.s.x v8, a0100; CHECK-NEXT:    vmxor.mm v0, v0, v8101; CHECK-NEXT:    vmv.v.i v8, 0102; CHECK-NEXT:    vmerge.vim v8, v8, 1, v0103; CHECK-NEXT:    ret104  %xor = xor <8 x i1> %m, <i1 1, i1 0, i1 1, i1 0, i1 1, i1 0, i1 1, i1 0>105  %ext = zext <8 x i1> %xor to <8 x i8>106  ret <8 x i8> %ext107}108