brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.4 KiB · 1328f59 Raw
766 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \3; RUN:   | FileCheck %s --check-prefixes=CHECK,RV324; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \5; RUN:   | FileCheck %s --check-prefixes=CHECK,RV646 7define <vscale x 1 x i8> @uadd_nxv1i8_vv(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b) {8; CHECK-LABEL: uadd_nxv1i8_vv:9; CHECK:       # %bb.0:10; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma11; CHECK-NEXT:    vsaddu.vv v8, v8, v912; CHECK-NEXT:    ret13  %v = call <vscale x 1 x i8> @llvm.uadd.sat.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b)14  ret <vscale x 1 x i8> %v15}16 17define <vscale x 1 x i8> @uadd_nxv1i8_vx(<vscale x 1 x i8> %va, i8 %b) {18; CHECK-LABEL: uadd_nxv1i8_vx:19; CHECK:       # %bb.0:20; CHECK-NEXT:    vsetvli a1, zero, e8, mf8, ta, ma21; CHECK-NEXT:    vsaddu.vx v8, v8, a022; CHECK-NEXT:    ret23  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 024  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer25  %v = call <vscale x 1 x i8> @llvm.uadd.sat.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb)26  ret <vscale x 1 x i8> %v27}28 29define <vscale x 1 x i8> @uadd_nxv1i8_vi(<vscale x 1 x i8> %va) {30; CHECK-LABEL: uadd_nxv1i8_vi:31; CHECK:       # %bb.0:32; CHECK-NEXT:    vsetvli a0, zero, e8, mf8, ta, ma33; CHECK-NEXT:    vsaddu.vi v8, v8, 834; CHECK-NEXT:    ret35  %v = call <vscale x 1 x i8> @llvm.uadd.sat.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> splat (i8 8))36  ret <vscale x 1 x i8> %v37}38 39define <vscale x 2 x i8> @uadd_nxv2i8_vv(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b) {40; CHECK-LABEL: uadd_nxv2i8_vv:41; CHECK:       # %bb.0:42; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma43; CHECK-NEXT:    vsaddu.vv v8, v8, v944; CHECK-NEXT:    ret45  %v = call <vscale x 2 x i8> @llvm.uadd.sat.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b)46  ret <vscale x 2 x i8> %v47}48 49define <vscale x 2 x i8> @uadd_nxv2i8_vx(<vscale x 2 x i8> %va, i8 %b) {50; CHECK-LABEL: uadd_nxv2i8_vx:51; CHECK:       # %bb.0:52; CHECK-NEXT:    vsetvli a1, zero, e8, mf4, ta, ma53; CHECK-NEXT:    vsaddu.vx v8, v8, a054; CHECK-NEXT:    ret55  %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 056  %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer57  %v = call <vscale x 2 x i8> @llvm.uadd.sat.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb)58  ret <vscale x 2 x i8> %v59}60 61define <vscale x 2 x i8> @uadd_nxv2i8_vi(<vscale x 2 x i8> %va) {62; CHECK-LABEL: uadd_nxv2i8_vi:63; CHECK:       # %bb.0:64; CHECK-NEXT:    vsetvli a0, zero, e8, mf4, ta, ma65; CHECK-NEXT:    vsaddu.vi v8, v8, 866; CHECK-NEXT:    ret67  %v = call <vscale x 2 x i8> @llvm.uadd.sat.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> splat (i8 8))68  ret <vscale x 2 x i8> %v69}70 71define <vscale x 4 x i8> @uadd_nxv4i8_vv(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b) {72; CHECK-LABEL: uadd_nxv4i8_vv:73; CHECK:       # %bb.0:74; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma75; CHECK-NEXT:    vsaddu.vv v8, v8, v976; CHECK-NEXT:    ret77  %v = call <vscale x 4 x i8> @llvm.uadd.sat.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b)78  ret <vscale x 4 x i8> %v79}80 81define <vscale x 4 x i8> @uadd_nxv4i8_vx(<vscale x 4 x i8> %va, i8 %b) {82; CHECK-LABEL: uadd_nxv4i8_vx:83; CHECK:       # %bb.0:84; CHECK-NEXT:    vsetvli a1, zero, e8, mf2, ta, ma85; CHECK-NEXT:    vsaddu.vx v8, v8, a086; CHECK-NEXT:    ret87  %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 088  %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer89  %v = call <vscale x 4 x i8> @llvm.uadd.sat.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb)90  ret <vscale x 4 x i8> %v91}92 93define <vscale x 4 x i8> @uadd_nxv4i8_vi(<vscale x 4 x i8> %va) {94; CHECK-LABEL: uadd_nxv4i8_vi:95; CHECK:       # %bb.0:96; CHECK-NEXT:    vsetvli a0, zero, e8, mf2, ta, ma97; CHECK-NEXT:    vsaddu.vi v8, v8, 898; CHECK-NEXT:    ret99  %v = call <vscale x 4 x i8> @llvm.uadd.sat.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> splat (i8 8))100  ret <vscale x 4 x i8> %v101}102 103define <vscale x 8 x i8> @uadd_nxv8i8_vv(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b) {104; CHECK-LABEL: uadd_nxv8i8_vv:105; CHECK:       # %bb.0:106; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma107; CHECK-NEXT:    vsaddu.vv v8, v8, v9108; CHECK-NEXT:    ret109  %v = call <vscale x 8 x i8> @llvm.uadd.sat.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b)110  ret <vscale x 8 x i8> %v111}112 113define <vscale x 8 x i8> @uadd_nxv8i8_vx(<vscale x 8 x i8> %va, i8 %b) {114; CHECK-LABEL: uadd_nxv8i8_vx:115; CHECK:       # %bb.0:116; CHECK-NEXT:    vsetvli a1, zero, e8, m1, ta, ma117; CHECK-NEXT:    vsaddu.vx v8, v8, a0118; CHECK-NEXT:    ret119  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0120  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer121  %v = call <vscale x 8 x i8> @llvm.uadd.sat.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb)122  ret <vscale x 8 x i8> %v123}124 125define <vscale x 8 x i8> @uadd_nxv8i8_vi(<vscale x 8 x i8> %va) {126; CHECK-LABEL: uadd_nxv8i8_vi:127; CHECK:       # %bb.0:128; CHECK-NEXT:    vsetvli a0, zero, e8, m1, ta, ma129; CHECK-NEXT:    vsaddu.vi v8, v8, 8130; CHECK-NEXT:    ret131  %v = call <vscale x 8 x i8> @llvm.uadd.sat.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> splat (i8 8))132  ret <vscale x 8 x i8> %v133}134 135define <vscale x 16 x i8> @uadd_nxv16i8_vv(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b) {136; CHECK-LABEL: uadd_nxv16i8_vv:137; CHECK:       # %bb.0:138; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma139; CHECK-NEXT:    vsaddu.vv v8, v8, v10140; CHECK-NEXT:    ret141  %v = call <vscale x 16 x i8> @llvm.uadd.sat.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b)142  ret <vscale x 16 x i8> %v143}144 145define <vscale x 16 x i8> @uadd_nxv16i8_vx(<vscale x 16 x i8> %va, i8 %b) {146; CHECK-LABEL: uadd_nxv16i8_vx:147; CHECK:       # %bb.0:148; CHECK-NEXT:    vsetvli a1, zero, e8, m2, ta, ma149; CHECK-NEXT:    vsaddu.vx v8, v8, a0150; CHECK-NEXT:    ret151  %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0152  %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer153  %v = call <vscale x 16 x i8> @llvm.uadd.sat.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb)154  ret <vscale x 16 x i8> %v155}156 157define <vscale x 16 x i8> @uadd_nxv16i8_vi(<vscale x 16 x i8> %va) {158; CHECK-LABEL: uadd_nxv16i8_vi:159; CHECK:       # %bb.0:160; CHECK-NEXT:    vsetvli a0, zero, e8, m2, ta, ma161; CHECK-NEXT:    vsaddu.vi v8, v8, 8162; CHECK-NEXT:    ret163  %v = call <vscale x 16 x i8> @llvm.uadd.sat.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> splat (i8 8))164  ret <vscale x 16 x i8> %v165}166 167define <vscale x 32 x i8> @uadd_nxv32i8_vv(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b) {168; CHECK-LABEL: uadd_nxv32i8_vv:169; CHECK:       # %bb.0:170; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma171; CHECK-NEXT:    vsaddu.vv v8, v8, v12172; CHECK-NEXT:    ret173  %v = call <vscale x 32 x i8> @llvm.uadd.sat.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b)174  ret <vscale x 32 x i8> %v175}176 177define <vscale x 32 x i8> @uadd_nxv32i8_vx(<vscale x 32 x i8> %va, i8 %b) {178; CHECK-LABEL: uadd_nxv32i8_vx:179; CHECK:       # %bb.0:180; CHECK-NEXT:    vsetvli a1, zero, e8, m4, ta, ma181; CHECK-NEXT:    vsaddu.vx v8, v8, a0182; CHECK-NEXT:    ret183  %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0184  %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer185  %v = call <vscale x 32 x i8> @llvm.uadd.sat.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb)186  ret <vscale x 32 x i8> %v187}188 189define <vscale x 32 x i8> @uadd_nxv32i8_vi(<vscale x 32 x i8> %va) {190; CHECK-LABEL: uadd_nxv32i8_vi:191; CHECK:       # %bb.0:192; CHECK-NEXT:    vsetvli a0, zero, e8, m4, ta, ma193; CHECK-NEXT:    vsaddu.vi v8, v8, 8194; CHECK-NEXT:    ret195  %v = call <vscale x 32 x i8> @llvm.uadd.sat.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> splat (i8 8))196  ret <vscale x 32 x i8> %v197}198 199define <vscale x 64 x i8> @uadd_nxv64i8_vv(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b) {200; CHECK-LABEL: uadd_nxv64i8_vv:201; CHECK:       # %bb.0:202; CHECK-NEXT:    vsetvli a0, zero, e8, m8, ta, ma203; CHECK-NEXT:    vsaddu.vv v8, v8, v16204; CHECK-NEXT:    ret205  %v = call <vscale x 64 x i8> @llvm.uadd.sat.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b)206  ret <vscale x 64 x i8> %v207}208 209define <vscale x 64 x i8> @uadd_nxv64i8_vx(<vscale x 64 x i8> %va, i8 %b) {210; CHECK-LABEL: uadd_nxv64i8_vx:211; CHECK:       # %bb.0:212; CHECK-NEXT:    vsetvli a1, zero, e8, m8, ta, ma213; CHECK-NEXT:    vsaddu.vx v8, v8, a0214; CHECK-NEXT:    ret215  %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0216  %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer217  %v = call <vscale x 64 x i8> @llvm.uadd.sat.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb)218  ret <vscale x 64 x i8> %v219}220 221define <vscale x 64 x i8> @uadd_nxv64i8_vi(<vscale x 64 x i8> %va) {222; CHECK-LABEL: uadd_nxv64i8_vi:223; CHECK:       # %bb.0:224; CHECK-NEXT:    vsetvli a0, zero, e8, m8, ta, ma225; CHECK-NEXT:    vsaddu.vi v8, v8, 8226; CHECK-NEXT:    ret227  %v = call <vscale x 64 x i8> @llvm.uadd.sat.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> splat (i8 8))228  ret <vscale x 64 x i8> %v229}230 231define <vscale x 1 x i16> @uadd_nxv1i16_vv(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b) {232; CHECK-LABEL: uadd_nxv1i16_vv:233; CHECK:       # %bb.0:234; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma235; CHECK-NEXT:    vsaddu.vv v8, v8, v9236; CHECK-NEXT:    ret237  %v = call <vscale x 1 x i16> @llvm.uadd.sat.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b)238  ret <vscale x 1 x i16> %v239}240 241define <vscale x 1 x i16> @uadd_nxv1i16_vx(<vscale x 1 x i16> %va, i16 %b) {242; CHECK-LABEL: uadd_nxv1i16_vx:243; CHECK:       # %bb.0:244; CHECK-NEXT:    vsetvli a1, zero, e16, mf4, ta, ma245; CHECK-NEXT:    vsaddu.vx v8, v8, a0246; CHECK-NEXT:    ret247  %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0248  %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer249  %v = call <vscale x 1 x i16> @llvm.uadd.sat.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb)250  ret <vscale x 1 x i16> %v251}252 253define <vscale x 1 x i16> @uadd_nxv1i16_vi(<vscale x 1 x i16> %va) {254; CHECK-LABEL: uadd_nxv1i16_vi:255; CHECK:       # %bb.0:256; CHECK-NEXT:    vsetvli a0, zero, e16, mf4, ta, ma257; CHECK-NEXT:    vsaddu.vi v8, v8, 8258; CHECK-NEXT:    ret259  %v = call <vscale x 1 x i16> @llvm.uadd.sat.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> splat (i16 8))260  ret <vscale x 1 x i16> %v261}262 263define <vscale x 2 x i16> @uadd_nxv2i16_vv(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b) {264; CHECK-LABEL: uadd_nxv2i16_vv:265; CHECK:       # %bb.0:266; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma267; CHECK-NEXT:    vsaddu.vv v8, v8, v9268; CHECK-NEXT:    ret269  %v = call <vscale x 2 x i16> @llvm.uadd.sat.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b)270  ret <vscale x 2 x i16> %v271}272 273define <vscale x 2 x i16> @uadd_nxv2i16_vx(<vscale x 2 x i16> %va, i16 %b) {274; CHECK-LABEL: uadd_nxv2i16_vx:275; CHECK:       # %bb.0:276; CHECK-NEXT:    vsetvli a1, zero, e16, mf2, ta, ma277; CHECK-NEXT:    vsaddu.vx v8, v8, a0278; CHECK-NEXT:    ret279  %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0280  %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer281  %v = call <vscale x 2 x i16> @llvm.uadd.sat.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb)282  ret <vscale x 2 x i16> %v283}284 285define <vscale x 2 x i16> @uadd_nxv2i16_vi(<vscale x 2 x i16> %va) {286; CHECK-LABEL: uadd_nxv2i16_vi:287; CHECK:       # %bb.0:288; CHECK-NEXT:    vsetvli a0, zero, e16, mf2, ta, ma289; CHECK-NEXT:    vsaddu.vi v8, v8, 8290; CHECK-NEXT:    ret291  %v = call <vscale x 2 x i16> @llvm.uadd.sat.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> splat (i16 8))292  ret <vscale x 2 x i16> %v293}294 295define <vscale x 4 x i16> @uadd_nxv4i16_vv(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b) {296; CHECK-LABEL: uadd_nxv4i16_vv:297; CHECK:       # %bb.0:298; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma299; CHECK-NEXT:    vsaddu.vv v8, v8, v9300; CHECK-NEXT:    ret301  %v = call <vscale x 4 x i16> @llvm.uadd.sat.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b)302  ret <vscale x 4 x i16> %v303}304 305define <vscale x 4 x i16> @uadd_nxv4i16_vx(<vscale x 4 x i16> %va, i16 %b) {306; CHECK-LABEL: uadd_nxv4i16_vx:307; CHECK:       # %bb.0:308; CHECK-NEXT:    vsetvli a1, zero, e16, m1, ta, ma309; CHECK-NEXT:    vsaddu.vx v8, v8, a0310; CHECK-NEXT:    ret311  %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0312  %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer313  %v = call <vscale x 4 x i16> @llvm.uadd.sat.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb)314  ret <vscale x 4 x i16> %v315}316 317define <vscale x 4 x i16> @uadd_nxv4i16_vi(<vscale x 4 x i16> %va) {318; CHECK-LABEL: uadd_nxv4i16_vi:319; CHECK:       # %bb.0:320; CHECK-NEXT:    vsetvli a0, zero, e16, m1, ta, ma321; CHECK-NEXT:    vsaddu.vi v8, v8, 8322; CHECK-NEXT:    ret323  %v = call <vscale x 4 x i16> @llvm.uadd.sat.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> splat (i16 8))324  ret <vscale x 4 x i16> %v325}326 327define <vscale x 8 x i16> @uadd_nxv8i16_vv(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b) {328; CHECK-LABEL: uadd_nxv8i16_vv:329; CHECK:       # %bb.0:330; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma331; CHECK-NEXT:    vsaddu.vv v8, v8, v10332; CHECK-NEXT:    ret333  %v = call <vscale x 8 x i16> @llvm.uadd.sat.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b)334  ret <vscale x 8 x i16> %v335}336 337define <vscale x 8 x i16> @uadd_nxv8i16_vx(<vscale x 8 x i16> %va, i16 %b) {338; CHECK-LABEL: uadd_nxv8i16_vx:339; CHECK:       # %bb.0:340; CHECK-NEXT:    vsetvli a1, zero, e16, m2, ta, ma341; CHECK-NEXT:    vsaddu.vx v8, v8, a0342; CHECK-NEXT:    ret343  %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0344  %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer345  %v = call <vscale x 8 x i16> @llvm.uadd.sat.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb)346  ret <vscale x 8 x i16> %v347}348 349define <vscale x 8 x i16> @uadd_nxv8i16_vi(<vscale x 8 x i16> %va) {350; CHECK-LABEL: uadd_nxv8i16_vi:351; CHECK:       # %bb.0:352; CHECK-NEXT:    vsetvli a0, zero, e16, m2, ta, ma353; CHECK-NEXT:    vsaddu.vi v8, v8, 8354; CHECK-NEXT:    ret355  %v = call <vscale x 8 x i16> @llvm.uadd.sat.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> splat (i16 8))356  ret <vscale x 8 x i16> %v357}358 359define <vscale x 16 x i16> @uadd_nxv16i16_vv(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b) {360; CHECK-LABEL: uadd_nxv16i16_vv:361; CHECK:       # %bb.0:362; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma363; CHECK-NEXT:    vsaddu.vv v8, v8, v12364; CHECK-NEXT:    ret365  %v = call <vscale x 16 x i16> @llvm.uadd.sat.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b)366  ret <vscale x 16 x i16> %v367}368 369define <vscale x 16 x i16> @uadd_nxv16i16_vx(<vscale x 16 x i16> %va, i16 %b) {370; CHECK-LABEL: uadd_nxv16i16_vx:371; CHECK:       # %bb.0:372; CHECK-NEXT:    vsetvli a1, zero, e16, m4, ta, ma373; CHECK-NEXT:    vsaddu.vx v8, v8, a0374; CHECK-NEXT:    ret375  %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0376  %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer377  %v = call <vscale x 16 x i16> @llvm.uadd.sat.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb)378  ret <vscale x 16 x i16> %v379}380 381define <vscale x 16 x i16> @uadd_nxv16i16_vi(<vscale x 16 x i16> %va) {382; CHECK-LABEL: uadd_nxv16i16_vi:383; CHECK:       # %bb.0:384; CHECK-NEXT:    vsetvli a0, zero, e16, m4, ta, ma385; CHECK-NEXT:    vsaddu.vi v8, v8, 8386; CHECK-NEXT:    ret387  %v = call <vscale x 16 x i16> @llvm.uadd.sat.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> splat (i16 8))388  ret <vscale x 16 x i16> %v389}390 391define <vscale x 32 x i16> @uadd_nxv32i16_vv(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b) {392; CHECK-LABEL: uadd_nxv32i16_vv:393; CHECK:       # %bb.0:394; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma395; CHECK-NEXT:    vsaddu.vv v8, v8, v16396; CHECK-NEXT:    ret397  %v = call <vscale x 32 x i16> @llvm.uadd.sat.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b)398  ret <vscale x 32 x i16> %v399}400 401define <vscale x 32 x i16> @uadd_nxv32i16_vx(<vscale x 32 x i16> %va, i16 %b) {402; CHECK-LABEL: uadd_nxv32i16_vx:403; CHECK:       # %bb.0:404; CHECK-NEXT:    vsetvli a1, zero, e16, m8, ta, ma405; CHECK-NEXT:    vsaddu.vx v8, v8, a0406; CHECK-NEXT:    ret407  %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0408  %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer409  %v = call <vscale x 32 x i16> @llvm.uadd.sat.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb)410  ret <vscale x 32 x i16> %v411}412 413define <vscale x 32 x i16> @uadd_nxv32i16_vi(<vscale x 32 x i16> %va) {414; CHECK-LABEL: uadd_nxv32i16_vi:415; CHECK:       # %bb.0:416; CHECK-NEXT:    vsetvli a0, zero, e16, m8, ta, ma417; CHECK-NEXT:    vsaddu.vi v8, v8, 8418; CHECK-NEXT:    ret419  %v = call <vscale x 32 x i16> @llvm.uadd.sat.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> splat (i16 8))420  ret <vscale x 32 x i16> %v421}422 423define <vscale x 1 x i32> @uadd_nxv1i32_vv(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b) {424; CHECK-LABEL: uadd_nxv1i32_vv:425; CHECK:       # %bb.0:426; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma427; CHECK-NEXT:    vsaddu.vv v8, v8, v9428; CHECK-NEXT:    ret429  %v = call <vscale x 1 x i32> @llvm.uadd.sat.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b)430  ret <vscale x 1 x i32> %v431}432 433define <vscale x 1 x i32> @uadd_nxv1i32_vx(<vscale x 1 x i32> %va, i32 %b) {434; CHECK-LABEL: uadd_nxv1i32_vx:435; CHECK:       # %bb.0:436; CHECK-NEXT:    vsetvli a1, zero, e32, mf2, ta, ma437; CHECK-NEXT:    vsaddu.vx v8, v8, a0438; CHECK-NEXT:    ret439  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0440  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer441  %v = call <vscale x 1 x i32> @llvm.uadd.sat.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb)442  ret <vscale x 1 x i32> %v443}444 445define <vscale x 1 x i32> @uadd_nxv1i32_vi(<vscale x 1 x i32> %va) {446; CHECK-LABEL: uadd_nxv1i32_vi:447; CHECK:       # %bb.0:448; CHECK-NEXT:    vsetvli a0, zero, e32, mf2, ta, ma449; CHECK-NEXT:    vsaddu.vi v8, v8, 8450; CHECK-NEXT:    ret451  %v = call <vscale x 1 x i32> @llvm.uadd.sat.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> splat (i32 8))452  ret <vscale x 1 x i32> %v453}454 455define <vscale x 2 x i32> @uadd_nxv2i32_vv(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b) {456; CHECK-LABEL: uadd_nxv2i32_vv:457; CHECK:       # %bb.0:458; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma459; CHECK-NEXT:    vsaddu.vv v8, v8, v9460; CHECK-NEXT:    ret461  %v = call <vscale x 2 x i32> @llvm.uadd.sat.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b)462  ret <vscale x 2 x i32> %v463}464 465define <vscale x 2 x i32> @uadd_nxv2i32_vx(<vscale x 2 x i32> %va, i32 %b) {466; CHECK-LABEL: uadd_nxv2i32_vx:467; CHECK:       # %bb.0:468; CHECK-NEXT:    vsetvli a1, zero, e32, m1, ta, ma469; CHECK-NEXT:    vsaddu.vx v8, v8, a0470; CHECK-NEXT:    ret471  %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0472  %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer473  %v = call <vscale x 2 x i32> @llvm.uadd.sat.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb)474  ret <vscale x 2 x i32> %v475}476 477define <vscale x 2 x i32> @uadd_nxv2i32_vi(<vscale x 2 x i32> %va) {478; CHECK-LABEL: uadd_nxv2i32_vi:479; CHECK:       # %bb.0:480; CHECK-NEXT:    vsetvli a0, zero, e32, m1, ta, ma481; CHECK-NEXT:    vsaddu.vi v8, v8, 8482; CHECK-NEXT:    ret483  %v = call <vscale x 2 x i32> @llvm.uadd.sat.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> splat (i32 8))484  ret <vscale x 2 x i32> %v485}486 487define <vscale x 4 x i32> @uadd_nxv4i32_vv(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b) {488; CHECK-LABEL: uadd_nxv4i32_vv:489; CHECK:       # %bb.0:490; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma491; CHECK-NEXT:    vsaddu.vv v8, v8, v10492; CHECK-NEXT:    ret493  %v = call <vscale x 4 x i32> @llvm.uadd.sat.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b)494  ret <vscale x 4 x i32> %v495}496 497define <vscale x 4 x i32> @uadd_nxv4i32_vx(<vscale x 4 x i32> %va, i32 %b) {498; CHECK-LABEL: uadd_nxv4i32_vx:499; CHECK:       # %bb.0:500; CHECK-NEXT:    vsetvli a1, zero, e32, m2, ta, ma501; CHECK-NEXT:    vsaddu.vx v8, v8, a0502; CHECK-NEXT:    ret503  %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0504  %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer505  %v = call <vscale x 4 x i32> @llvm.uadd.sat.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb)506  ret <vscale x 4 x i32> %v507}508 509define <vscale x 4 x i32> @uadd_nxv4i32_vi(<vscale x 4 x i32> %va) {510; CHECK-LABEL: uadd_nxv4i32_vi:511; CHECK:       # %bb.0:512; CHECK-NEXT:    vsetvli a0, zero, e32, m2, ta, ma513; CHECK-NEXT:    vsaddu.vi v8, v8, 8514; CHECK-NEXT:    ret515  %v = call <vscale x 4 x i32> @llvm.uadd.sat.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> splat (i32 8))516  ret <vscale x 4 x i32> %v517}518 519define <vscale x 8 x i32> @uadd_nxv8i32_vv(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b) {520; CHECK-LABEL: uadd_nxv8i32_vv:521; CHECK:       # %bb.0:522; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma523; CHECK-NEXT:    vsaddu.vv v8, v8, v12524; CHECK-NEXT:    ret525  %v = call <vscale x 8 x i32> @llvm.uadd.sat.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b)526  ret <vscale x 8 x i32> %v527}528 529define <vscale x 8 x i32> @uadd_nxv8i32_vx(<vscale x 8 x i32> %va, i32 %b) {530; CHECK-LABEL: uadd_nxv8i32_vx:531; CHECK:       # %bb.0:532; CHECK-NEXT:    vsetvli a1, zero, e32, m4, ta, ma533; CHECK-NEXT:    vsaddu.vx v8, v8, a0534; CHECK-NEXT:    ret535  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0536  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer537  %v = call <vscale x 8 x i32> @llvm.uadd.sat.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb)538  ret <vscale x 8 x i32> %v539}540 541define <vscale x 8 x i32> @uadd_nxv8i32_vi(<vscale x 8 x i32> %va) {542; CHECK-LABEL: uadd_nxv8i32_vi:543; CHECK:       # %bb.0:544; CHECK-NEXT:    vsetvli a0, zero, e32, m4, ta, ma545; CHECK-NEXT:    vsaddu.vi v8, v8, 8546; CHECK-NEXT:    ret547  %v = call <vscale x 8 x i32> @llvm.uadd.sat.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> splat (i32 8))548  ret <vscale x 8 x i32> %v549}550 551define <vscale x 16 x i32> @uadd_nxv16i32_vv(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b) {552; CHECK-LABEL: uadd_nxv16i32_vv:553; CHECK:       # %bb.0:554; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma555; CHECK-NEXT:    vsaddu.vv v8, v8, v16556; CHECK-NEXT:    ret557  %v = call <vscale x 16 x i32> @llvm.uadd.sat.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b)558  ret <vscale x 16 x i32> %v559}560 561define <vscale x 16 x i32> @uadd_nxv16i32_vx(<vscale x 16 x i32> %va, i32 %b) {562; CHECK-LABEL: uadd_nxv16i32_vx:563; CHECK:       # %bb.0:564; CHECK-NEXT:    vsetvli a1, zero, e32, m8, ta, ma565; CHECK-NEXT:    vsaddu.vx v8, v8, a0566; CHECK-NEXT:    ret567  %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0568  %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer569  %v = call <vscale x 16 x i32> @llvm.uadd.sat.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb)570  ret <vscale x 16 x i32> %v571}572 573define <vscale x 16 x i32> @uadd_nxv16i32_vi(<vscale x 16 x i32> %va) {574; CHECK-LABEL: uadd_nxv16i32_vi:575; CHECK:       # %bb.0:576; CHECK-NEXT:    vsetvli a0, zero, e32, m8, ta, ma577; CHECK-NEXT:    vsaddu.vi v8, v8, 8578; CHECK-NEXT:    ret579  %v = call <vscale x 16 x i32> @llvm.uadd.sat.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> splat (i32 8))580  ret <vscale x 16 x i32> %v581}582 583define <vscale x 1 x i64> @uadd_nxv1i64_vv(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b) {584; CHECK-LABEL: uadd_nxv1i64_vv:585; CHECK:       # %bb.0:586; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma587; CHECK-NEXT:    vsaddu.vv v8, v8, v9588; CHECK-NEXT:    ret589  %v = call <vscale x 1 x i64> @llvm.uadd.sat.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b)590  ret <vscale x 1 x i64> %v591}592 593define <vscale x 1 x i64> @uadd_nxv1i64_vx(<vscale x 1 x i64> %va, i64 %b) {594; RV32-LABEL: uadd_nxv1i64_vx:595; RV32:       # %bb.0:596; RV32-NEXT:    addi sp, sp, -16597; RV32-NEXT:    .cfi_def_cfa_offset 16598; RV32-NEXT:    sw a0, 8(sp)599; RV32-NEXT:    sw a1, 12(sp)600; RV32-NEXT:    addi a0, sp, 8601; RV32-NEXT:    vsetvli a1, zero, e64, m1, ta, ma602; RV32-NEXT:    vlse64.v v9, (a0), zero603; RV32-NEXT:    vsaddu.vv v8, v8, v9604; RV32-NEXT:    addi sp, sp, 16605; RV32-NEXT:    .cfi_def_cfa_offset 0606; RV32-NEXT:    ret607;608; RV64-LABEL: uadd_nxv1i64_vx:609; RV64:       # %bb.0:610; RV64-NEXT:    vsetvli a1, zero, e64, m1, ta, ma611; RV64-NEXT:    vsaddu.vx v8, v8, a0612; RV64-NEXT:    ret613  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0614  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer615  %v = call <vscale x 1 x i64> @llvm.uadd.sat.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb)616  ret <vscale x 1 x i64> %v617}618 619define <vscale x 1 x i64> @uadd_nxv1i64_vi(<vscale x 1 x i64> %va) {620; CHECK-LABEL: uadd_nxv1i64_vi:621; CHECK:       # %bb.0:622; CHECK-NEXT:    vsetvli a0, zero, e64, m1, ta, ma623; CHECK-NEXT:    vsaddu.vi v8, v8, 8624; CHECK-NEXT:    ret625  %v = call <vscale x 1 x i64> @llvm.uadd.sat.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> splat (i64 8))626  ret <vscale x 1 x i64> %v627}628 629define <vscale x 2 x i64> @uadd_nxv2i64_vv(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b) {630; CHECK-LABEL: uadd_nxv2i64_vv:631; CHECK:       # %bb.0:632; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma633; CHECK-NEXT:    vsaddu.vv v8, v8, v10634; CHECK-NEXT:    ret635  %v = call <vscale x 2 x i64> @llvm.uadd.sat.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b)636  ret <vscale x 2 x i64> %v637}638 639define <vscale x 2 x i64> @uadd_nxv2i64_vx(<vscale x 2 x i64> %va, i64 %b) {640; RV32-LABEL: uadd_nxv2i64_vx:641; RV32:       # %bb.0:642; RV32-NEXT:    addi sp, sp, -16643; RV32-NEXT:    .cfi_def_cfa_offset 16644; RV32-NEXT:    sw a0, 8(sp)645; RV32-NEXT:    sw a1, 12(sp)646; RV32-NEXT:    addi a0, sp, 8647; RV32-NEXT:    vsetvli a1, zero, e64, m2, ta, ma648; RV32-NEXT:    vlse64.v v10, (a0), zero649; RV32-NEXT:    vsaddu.vv v8, v8, v10650; RV32-NEXT:    addi sp, sp, 16651; RV32-NEXT:    .cfi_def_cfa_offset 0652; RV32-NEXT:    ret653;654; RV64-LABEL: uadd_nxv2i64_vx:655; RV64:       # %bb.0:656; RV64-NEXT:    vsetvli a1, zero, e64, m2, ta, ma657; RV64-NEXT:    vsaddu.vx v8, v8, a0658; RV64-NEXT:    ret659  %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0660  %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer661  %v = call <vscale x 2 x i64> @llvm.uadd.sat.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb)662  ret <vscale x 2 x i64> %v663}664 665define <vscale x 2 x i64> @uadd_nxv2i64_vi(<vscale x 2 x i64> %va) {666; CHECK-LABEL: uadd_nxv2i64_vi:667; CHECK:       # %bb.0:668; CHECK-NEXT:    vsetvli a0, zero, e64, m2, ta, ma669; CHECK-NEXT:    vsaddu.vi v8, v8, 8670; CHECK-NEXT:    ret671  %v = call <vscale x 2 x i64> @llvm.uadd.sat.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> splat (i64 8))672  ret <vscale x 2 x i64> %v673}674 675define <vscale x 4 x i64> @uadd_nxv4i64_vv(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b) {676; CHECK-LABEL: uadd_nxv4i64_vv:677; CHECK:       # %bb.0:678; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma679; CHECK-NEXT:    vsaddu.vv v8, v8, v12680; CHECK-NEXT:    ret681  %v = call <vscale x 4 x i64> @llvm.uadd.sat.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b)682  ret <vscale x 4 x i64> %v683}684 685define <vscale x 4 x i64> @uadd_nxv4i64_vx(<vscale x 4 x i64> %va, i64 %b) {686; RV32-LABEL: uadd_nxv4i64_vx:687; RV32:       # %bb.0:688; RV32-NEXT:    addi sp, sp, -16689; RV32-NEXT:    .cfi_def_cfa_offset 16690; RV32-NEXT:    sw a0, 8(sp)691; RV32-NEXT:    sw a1, 12(sp)692; RV32-NEXT:    addi a0, sp, 8693; RV32-NEXT:    vsetvli a1, zero, e64, m4, ta, ma694; RV32-NEXT:    vlse64.v v12, (a0), zero695; RV32-NEXT:    vsaddu.vv v8, v8, v12696; RV32-NEXT:    addi sp, sp, 16697; RV32-NEXT:    .cfi_def_cfa_offset 0698; RV32-NEXT:    ret699;700; RV64-LABEL: uadd_nxv4i64_vx:701; RV64:       # %bb.0:702; RV64-NEXT:    vsetvli a1, zero, e64, m4, ta, ma703; RV64-NEXT:    vsaddu.vx v8, v8, a0704; RV64-NEXT:    ret705  %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0706  %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer707  %v = call <vscale x 4 x i64> @llvm.uadd.sat.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb)708  ret <vscale x 4 x i64> %v709}710 711define <vscale x 4 x i64> @uadd_nxv4i64_vi(<vscale x 4 x i64> %va) {712; CHECK-LABEL: uadd_nxv4i64_vi:713; CHECK:       # %bb.0:714; CHECK-NEXT:    vsetvli a0, zero, e64, m4, ta, ma715; CHECK-NEXT:    vsaddu.vi v8, v8, 8716; CHECK-NEXT:    ret717  %v = call <vscale x 4 x i64> @llvm.uadd.sat.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> splat (i64 8))718  ret <vscale x 4 x i64> %v719}720 721define <vscale x 8 x i64> @uadd_nxv8i64_vv(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b) {722; CHECK-LABEL: uadd_nxv8i64_vv:723; CHECK:       # %bb.0:724; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma725; CHECK-NEXT:    vsaddu.vv v8, v8, v16726; CHECK-NEXT:    ret727  %v = call <vscale x 8 x i64> @llvm.uadd.sat.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b)728  ret <vscale x 8 x i64> %v729}730 731define <vscale x 8 x i64> @uadd_nxv8i64_vx(<vscale x 8 x i64> %va, i64 %b) {732; RV32-LABEL: uadd_nxv8i64_vx:733; RV32:       # %bb.0:734; RV32-NEXT:    addi sp, sp, -16735; RV32-NEXT:    .cfi_def_cfa_offset 16736; RV32-NEXT:    sw a0, 8(sp)737; RV32-NEXT:    sw a1, 12(sp)738; RV32-NEXT:    addi a0, sp, 8739; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma740; RV32-NEXT:    vlse64.v v16, (a0), zero741; RV32-NEXT:    vsaddu.vv v8, v8, v16742; RV32-NEXT:    addi sp, sp, 16743; RV32-NEXT:    .cfi_def_cfa_offset 0744; RV32-NEXT:    ret745;746; RV64-LABEL: uadd_nxv8i64_vx:747; RV64:       # %bb.0:748; RV64-NEXT:    vsetvli a1, zero, e64, m8, ta, ma749; RV64-NEXT:    vsaddu.vx v8, v8, a0750; RV64-NEXT:    ret751  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0752  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer753  %v = call <vscale x 8 x i64> @llvm.uadd.sat.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb)754  ret <vscale x 8 x i64> %v755}756 757define <vscale x 8 x i64> @uadd_nxv8i64_vi(<vscale x 8 x i64> %va) {758; CHECK-LABEL: uadd_nxv8i64_vi:759; CHECK:       # %bb.0:760; CHECK-NEXT:    vsetvli a0, zero, e64, m8, ta, ma761; CHECK-NEXT:    vsaddu.vi v8, v8, 8762; CHECK-NEXT:    ret763  %v = call <vscale x 8 x i64> @llvm.uadd.sat.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> splat (i64 8))764  ret <vscale x 8 x i64> %v765}766