brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · d4b5fe9 Raw
262 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 <2 x i16> @vwmaccus_vx_v2i16(ptr %x, i8 %y, <2 x i16> %z) {6; CHECK-LABEL: vwmaccus_vx_v2i16:7; CHECK:       # %bb.0:8; CHECK-NEXT:    vsetivli zero, 2, e8, mf8, ta, ma9; CHECK-NEXT:    vle8.v v9, (a0)10; CHECK-NEXT:    vwmaccus.vx v8, a1, v911; CHECK-NEXT:    ret12  %a = load <2 x i8>, ptr %x13  %b = insertelement <2 x i8> poison, i8 %y, i32 014  %c = shufflevector <2 x i8> %b, <2 x i8> poison, <2 x i32> zeroinitializer15  %d = sext <2 x i8> %a to <2 x i16>16  %e = zext <2 x i8> %c to <2 x i16>17  %f = mul <2 x i16> %d, %e18  %g = add <2 x i16> %f, %z19  ret <2 x i16> %g20}21 22define <4 x i16> @vwmaccus_vx_v4i16(ptr %x, i8 %y, <4 x i16> %z) {23; CHECK-LABEL: vwmaccus_vx_v4i16:24; CHECK:       # %bb.0:25; CHECK-NEXT:    vsetivli zero, 4, e8, mf4, ta, ma26; CHECK-NEXT:    vle8.v v9, (a0)27; CHECK-NEXT:    vwmaccus.vx v8, a1, v928; CHECK-NEXT:    ret29  %a = load <4 x i8>, ptr %x30  %b = insertelement <4 x i8> poison, i8 %y, i32 031  %c = shufflevector <4 x i8> %b, <4 x i8> poison, <4 x i32> zeroinitializer32  %d = sext <4 x i8> %a to <4 x i16>33  %e = zext <4 x i8> %c to <4 x i16>34  %f = mul <4 x i16> %d, %e35  %g = add <4 x i16> %f, %z36  ret <4 x i16> %g37}38 39define <2 x i32> @vwmaccus_vx_v2i32(ptr %x, i16 %y, <2 x i32> %z) {40; CHECK-LABEL: vwmaccus_vx_v2i32:41; CHECK:       # %bb.0:42; CHECK-NEXT:    vsetivli zero, 2, e16, mf4, ta, ma43; CHECK-NEXT:    vle16.v v9, (a0)44; CHECK-NEXT:    vwmaccus.vx v8, a1, v945; CHECK-NEXT:    ret46  %a = load <2 x i16>, ptr %x47  %b = insertelement <2 x i16> poison, i16 %y, i32 048  %c = shufflevector <2 x i16> %b, <2 x i16> poison, <2 x i32> zeroinitializer49  %d = sext <2 x i16> %a to <2 x i32>50  %e = zext <2 x i16> %c to <2 x i32>51  %f = mul <2 x i32> %d, %e52  %g = add <2 x i32> %f, %z53  ret <2 x i32> %g54}55 56define <8 x i16> @vwmaccus_vx_v8i16(ptr %x, i8 %y, <8 x i16> %z) {57; CHECK-LABEL: vwmaccus_vx_v8i16:58; CHECK:       # %bb.0:59; CHECK-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma60; CHECK-NEXT:    vle8.v v9, (a0)61; CHECK-NEXT:    vwmaccus.vx v8, a1, v962; CHECK-NEXT:    ret63  %a = load <8 x i8>, ptr %x64  %b = insertelement <8 x i8> poison, i8 %y, i32 065  %c = shufflevector <8 x i8> %b, <8 x i8> poison, <8 x i32> zeroinitializer66  %d = sext <8 x i8> %a to <8 x i16>67  %e = zext <8 x i8> %c to <8 x i16>68  %f = mul <8 x i16> %d, %e69  %g = add <8 x i16> %f, %z70  ret <8 x i16> %g71}72 73define <4 x i32> @vwmaccus_vx_v4i32(ptr %x, i16 %y, <4 x i32> %z) {74; CHECK-LABEL: vwmaccus_vx_v4i32:75; CHECK:       # %bb.0:76; CHECK-NEXT:    vsetivli zero, 4, e16, mf2, ta, ma77; CHECK-NEXT:    vle16.v v9, (a0)78; CHECK-NEXT:    vwmaccus.vx v8, a1, v979; CHECK-NEXT:    ret80  %a = load <4 x i16>, ptr %x81  %b = insertelement <4 x i16> poison, i16 %y, i32 082  %c = shufflevector <4 x i16> %b, <4 x i16> poison, <4 x i32> zeroinitializer83  %d = sext <4 x i16> %a to <4 x i32>84  %e = zext <4 x i16> %c to <4 x i32>85  %f = mul <4 x i32> %d, %e86  %g = add <4 x i32> %f, %z87  ret <4 x i32> %g88}89 90define <2 x i64> @vwmaccus_vx_v2i64(ptr %x, i32 %y, <2 x i64> %z) {91; CHECK-LABEL: vwmaccus_vx_v2i64:92; CHECK:       # %bb.0:93; CHECK-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma94; CHECK-NEXT:    vle32.v v9, (a0)95; CHECK-NEXT:    vwmaccus.vx v8, a1, v996; CHECK-NEXT:    ret97  %a = load <2 x i32>, ptr %x98  %b = insertelement <2 x i32> poison, i32 %y, i64 099  %c = shufflevector <2 x i32> %b, <2 x i32> poison, <2 x i32> zeroinitializer100  %d = sext <2 x i32> %a to <2 x i64>101  %e = zext <2 x i32> %c to <2 x i64>102  %f = mul <2 x i64> %d, %e103  %g = add <2 x i64> %f, %z104  ret <2 x i64> %g105}106 107define <16 x i16> @vwmaccus_vx_v16i16(ptr %x, i8 %y, <16 x i16> %z) {108; CHECK-LABEL: vwmaccus_vx_v16i16:109; CHECK:       # %bb.0:110; CHECK-NEXT:    vsetivli zero, 16, e8, m1, ta, ma111; CHECK-NEXT:    vle8.v v10, (a0)112; CHECK-NEXT:    vwmaccus.vx v8, a1, v10113; CHECK-NEXT:    ret114  %a = load <16 x i8>, ptr %x115  %b = insertelement <16 x i8> poison, i8 %y, i32 0116  %c = shufflevector <16 x i8> %b, <16 x i8> poison, <16 x i32> zeroinitializer117  %d = sext <16 x i8> %a to <16 x i16>118  %e = zext <16 x i8> %c to <16 x i16>119  %f = mul <16 x i16> %d, %e120  %g = add <16 x i16> %f, %z121  ret <16 x i16> %g122}123 124define <8 x i32> @vwmaccus_vx_v8i32(ptr %x, i16 %y, <8 x i32> %z) {125; CHECK-LABEL: vwmaccus_vx_v8i32:126; CHECK:       # %bb.0:127; CHECK-NEXT:    vsetivli zero, 8, e16, m1, ta, ma128; CHECK-NEXT:    vle16.v v10, (a0)129; CHECK-NEXT:    vwmaccus.vx v8, a1, v10130; CHECK-NEXT:    ret131  %a = load <8 x i16>, ptr %x132  %b = insertelement <8 x i16> poison, i16 %y, i32 0133  %c = shufflevector <8 x i16> %b, <8 x i16> poison, <8 x i32> zeroinitializer134  %d = sext <8 x i16> %a to <8 x i32>135  %e = zext <8 x i16> %c to <8 x i32>136  %f = mul <8 x i32> %d, %e137  %g = add <8 x i32> %f, %z138  ret <8 x i32> %g139}140 141define <4 x i64> @vwmaccus_vx_v4i64(ptr %x, i32 %y, <4 x i64> %z) {142; CHECK-LABEL: vwmaccus_vx_v4i64:143; CHECK:       # %bb.0:144; CHECK-NEXT:    vsetivli zero, 4, e32, m1, ta, ma145; CHECK-NEXT:    vle32.v v10, (a0)146; CHECK-NEXT:    vwmaccus.vx v8, a1, v10147; CHECK-NEXT:    ret148  %a = load <4 x i32>, ptr %x149  %b = insertelement <4 x i32> poison, i32 %y, i64 0150  %c = shufflevector <4 x i32> %b, <4 x i32> poison, <4 x i32> zeroinitializer151  %d = sext <4 x i32> %a to <4 x i64>152  %e = zext <4 x i32> %c to <4 x i64>153  %f = mul <4 x i64> %d, %e154  %g = add <4 x i64> %f, %z155  ret <4 x i64> %g156}157 158define <32 x i16> @vwmaccus_vx_v32i16(ptr %x, i8 %y, <32 x i16> %z) {159; CHECK-LABEL: vwmaccus_vx_v32i16:160; CHECK:       # %bb.0:161; CHECK-NEXT:    li a2, 32162; CHECK-NEXT:    vsetvli zero, a2, e8, m2, ta, ma163; CHECK-NEXT:    vle8.v v12, (a0)164; CHECK-NEXT:    vwmaccus.vx v8, a1, v12165; CHECK-NEXT:    ret166  %a = load <32 x i8>, ptr %x167  %b = insertelement <32 x i8> poison, i8 %y, i32 0168  %c = shufflevector <32 x i8> %b, <32 x i8> poison, <32 x i32> zeroinitializer169  %d = sext <32 x i8> %a to <32 x i16>170  %e = zext <32 x i8> %c to <32 x i16>171  %f = mul <32 x i16> %d, %e172  %g = add <32 x i16> %f, %z173  ret <32 x i16> %g174}175 176define <16 x i32> @vwmaccus_vx_v16i32(ptr %x, i16 %y, <16 x i32> %z) {177; CHECK-LABEL: vwmaccus_vx_v16i32:178; CHECK:       # %bb.0:179; CHECK-NEXT:    vsetivli zero, 16, e16, m2, ta, ma180; CHECK-NEXT:    vle16.v v12, (a0)181; CHECK-NEXT:    vwmaccus.vx v8, a1, v12182; CHECK-NEXT:    ret183  %a = load <16 x i16>, ptr %x184  %b = insertelement <16 x i16> poison, i16 %y, i32 0185  %c = shufflevector <16 x i16> %b, <16 x i16> poison, <16 x i32> zeroinitializer186  %d = sext <16 x i16> %a to <16 x i32>187  %e = zext <16 x i16> %c to <16 x i32>188  %f = mul <16 x i32> %d, %e189  %g = add <16 x i32> %f, %z190  ret <16 x i32> %g191}192 193define <8 x i64> @vwmaccus_vx_v8i64(ptr %x, i32 %y, <8 x i64> %z) {194; CHECK-LABEL: vwmaccus_vx_v8i64:195; CHECK:       # %bb.0:196; CHECK-NEXT:    vsetivli zero, 8, e32, m2, ta, ma197; CHECK-NEXT:    vle32.v v12, (a0)198; CHECK-NEXT:    vwmaccus.vx v8, a1, v12199; CHECK-NEXT:    ret200  %a = load <8 x i32>, ptr %x201  %b = insertelement <8 x i32> poison, i32 %y, i64 0202  %c = shufflevector <8 x i32> %b, <8 x i32> poison, <8 x i32> zeroinitializer203  %d = sext <8 x i32> %a to <8 x i64>204  %e = zext <8 x i32> %c to <8 x i64>205  %f = mul <8 x i64> %d, %e206  %g = add <8 x i64> %f, %z207  ret <8 x i64> %g208}209 210define <64 x i16> @vwmaccus_vx_v64i16(ptr %x, i8 %y, <64 x i16> %z) {211; CHECK-LABEL: vwmaccus_vx_v64i16:212; CHECK:       # %bb.0:213; CHECK-NEXT:    li a2, 64214; CHECK-NEXT:    vsetvli zero, a2, e8, m4, ta, ma215; CHECK-NEXT:    vle8.v v16, (a0)216; CHECK-NEXT:    vwmaccus.vx v8, a1, v16217; CHECK-NEXT:    ret218  %a = load <64 x i8>, ptr %x219  %b = insertelement <64 x i8> poison, i8 %y, i32 0220  %c = shufflevector <64 x i8> %b, <64 x i8> poison, <64 x i32> zeroinitializer221  %d = sext <64 x i8> %a to <64 x i16>222  %e = zext <64 x i8> %c to <64 x i16>223  %f = mul <64 x i16> %d, %e224  %g = add <64 x i16> %f, %z225  ret <64 x i16> %g226}227 228define <32 x i32> @vwmaccus_vx_v32i32(ptr %x, i16 %y, <32 x i32> %z) {229; CHECK-LABEL: vwmaccus_vx_v32i32:230; CHECK:       # %bb.0:231; CHECK-NEXT:    li a2, 32232; CHECK-NEXT:    vsetvli zero, a2, e16, m4, ta, ma233; CHECK-NEXT:    vle16.v v16, (a0)234; CHECK-NEXT:    vwmaccus.vx v8, a1, v16235; CHECK-NEXT:    ret236  %a = load <32 x i16>, ptr %x237  %b = insertelement <32 x i16> poison, i16 %y, i32 0238  %c = shufflevector <32 x i16> %b, <32 x i16> poison, <32 x i32> zeroinitializer239  %d = sext <32 x i16> %a to <32 x i32>240  %e = zext <32 x i16> %c to <32 x i32>241  %f = mul <32 x i32> %d, %e242  %g = add <32 x i32> %f, %z243  ret <32 x i32> %g244}245 246define <16 x i64> @vwmaccus_vx_v16i64(ptr %x, i32 %y, <16 x i64> %z) {247; CHECK-LABEL: vwmaccus_vx_v16i64:248; CHECK:       # %bb.0:249; CHECK-NEXT:    vsetivli zero, 16, e32, m4, ta, ma250; CHECK-NEXT:    vle32.v v16, (a0)251; CHECK-NEXT:    vwmaccus.vx v8, a1, v16252; CHECK-NEXT:    ret253  %a = load <16 x i32>, ptr %x254  %b = insertelement <16 x i32> poison, i32 %y, i64 0255  %c = shufflevector <16 x i32> %b, <16 x i32> poison, <16 x i32> zeroinitializer256  %d = sext <16 x i32> %a to <16 x i64>257  %e = zext <16 x i32> %c to <16 x i64>258  %f = mul <16 x i64> %d, %e259  %g = add <16 x i64> %f, %z260  ret <16 x i64> %g261}262