1*5d6d982dSMomchil Velikov; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 2*5d6d982dSMomchil Velikov; RUN: llc -mattr=+sve < %s | FileCheck %s 3*5d6d982dSMomchil Velikov; RUN: llc -mattr=+sve2p2 < %s | FileCheck %s -check-prefix CHECK-2p2 4*5d6d982dSMomchil Velikov 5*5d6d982dSMomchil Velikov; RUN: llc -mattr=+sme -force-streaming < %s | FileCheck %s 6*5d6d982dSMomchil Velikov; RUN: llc -mattr=+sme2p2 -force-streaming < %s | FileCheck %s -check-prefix CHECK-2p2 7*5d6d982dSMomchil Velikov 8*5d6d982dSMomchil Velikovtarget triple = "aarch64-linux" 9*5d6d982dSMomchil Velikov 10*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svextb_s16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) { 11*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s16_x_1: 12*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 13*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.h, p0/m, z0.h 14*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 15*5d6d982dSMomchil Velikov; 16*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s16_x_1: 17*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 18*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.h, p0/z, z0.h 19*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 20*5d6d982dSMomchil Velikoventry: 21*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.sxtb.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 22*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 23*5d6d982dSMomchil Velikov} 24*5d6d982dSMomchil Velikov 25*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svextb_s16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) { 26*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s16_x_2: 27*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 28*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 29*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.h, p0/m, z1.h 30*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 31*5d6d982dSMomchil Velikov; 32*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s16_x_2: 33*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 34*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.h, p0/z, z1.h 35*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 36*5d6d982dSMomchil Velikoventry: 37*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.sxtb.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 38*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 39*5d6d982dSMomchil Velikov} 40*5d6d982dSMomchil Velikov 41*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svextb_s16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) { 42*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s16_z: 43*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 44*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.h, #0 // =0x0 45*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.h, p0/m, z1.h 46*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 47*5d6d982dSMomchil Velikov; 48*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s16_z: 49*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 50*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.h, p0/z, z1.h 51*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 52*5d6d982dSMomchil Velikoventry: 53*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.sxtb.nxv8i16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 54*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 55*5d6d982dSMomchil Velikov} 56*5d6d982dSMomchil Velikov 57*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svextb_s32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) { 58*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s32_x_1: 59*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 60*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.s, p0/m, z0.s 61*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 62*5d6d982dSMomchil Velikov; 63*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s32_x_1: 64*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 65*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.s, p0/z, z0.s 66*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 67*5d6d982dSMomchil Velikoventry: 68*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxtb.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 69*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 70*5d6d982dSMomchil Velikov} 71*5d6d982dSMomchil Velikov 72*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svextb_s32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 73*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s32_x_2: 74*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 75*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 76*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.s, p0/m, z1.s 77*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 78*5d6d982dSMomchil Velikov; 79*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s32_x_2: 80*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 81*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.s, p0/z, z1.s 82*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 83*5d6d982dSMomchil Velikoventry: 84*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxtb.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 85*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 86*5d6d982dSMomchil Velikov} 87*5d6d982dSMomchil Velikov 88*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svextb_s32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 89*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s32_z: 90*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 91*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.s, #0 // =0x0 92*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.s, p0/m, z1.s 93*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 94*5d6d982dSMomchil Velikov; 95*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s32_z: 96*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 97*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.s, p0/z, z1.s 98*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 99*5d6d982dSMomchil Velikoventry: 100*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxtb.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 101*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 102*5d6d982dSMomchil Velikov} 103*5d6d982dSMomchil Velikov 104*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextb_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) { 105*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s64_x_1: 106*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 107*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.d, p0/m, z0.d 108*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 109*5d6d982dSMomchil Velikov; 110*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s64_x_1: 111*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 112*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.d, p0/z, z0.d 113*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 114*5d6d982dSMomchil Velikoventry: 115*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtb.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 116*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 117*5d6d982dSMomchil Velikov} 118*5d6d982dSMomchil Velikov 119*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextb_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 120*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s64_x_2: 121*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 122*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 123*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.d, p0/m, z1.d 124*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 125*5d6d982dSMomchil Velikov; 126*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s64_x_2: 127*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 128*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.d, p0/z, z1.d 129*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 130*5d6d982dSMomchil Velikoventry: 131*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtb.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 132*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 133*5d6d982dSMomchil Velikov} 134*5d6d982dSMomchil Velikov 135*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextb_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 136*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_s64_z: 137*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 138*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.d, #0 // =0x0 139*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.d, p0/m, z1.d 140*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 141*5d6d982dSMomchil Velikov; 142*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_s64_z: 143*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 144*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.d, p0/z, z1.d 145*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 146*5d6d982dSMomchil Velikoventry: 147*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtb.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 148*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 149*5d6d982dSMomchil Velikov} 150*5d6d982dSMomchil Velikov 151*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svextb_u16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) { 152*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u16_x_1: 153*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 154*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.h, p0/m, z0.h 155*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 156*5d6d982dSMomchil Velikov; 157*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u16_x_1: 158*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 159*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.h, p0/z, z0.h 160*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 161*5d6d982dSMomchil Velikoventry: 162*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.uxtb.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 163*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 164*5d6d982dSMomchil Velikov} 165*5d6d982dSMomchil Velikov 166*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svextb_u16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) { 167*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u16_x_2: 168*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 169*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 170*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.h, p0/m, z1.h 171*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 172*5d6d982dSMomchil Velikov; 173*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u16_x_2: 174*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 175*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.h, p0/z, z1.h 176*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 177*5d6d982dSMomchil Velikoventry: 178*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.uxtb.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 179*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 180*5d6d982dSMomchil Velikov} 181*5d6d982dSMomchil Velikov 182*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svextb_u16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) { 183*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u16_z: 184*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 185*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.h, #0 // =0x0 186*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.h, p0/m, z1.h 187*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 188*5d6d982dSMomchil Velikov; 189*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u16_z: 190*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 191*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.h, p0/z, z1.h 192*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 193*5d6d982dSMomchil Velikoventry: 194*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.uxtb.nxv8i16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 195*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 196*5d6d982dSMomchil Velikov} 197*5d6d982dSMomchil Velikov 198*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svextb_u32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) { 199*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u32_x_1: 200*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 201*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.s, p0/m, z0.s 202*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 203*5d6d982dSMomchil Velikov; 204*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u32_x_1: 205*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 206*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.s, p0/z, z0.s 207*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 208*5d6d982dSMomchil Velikoventry: 209*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxtb.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 210*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 211*5d6d982dSMomchil Velikov} 212*5d6d982dSMomchil Velikov 213*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svextb_u32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 214*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u32_x_2: 215*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 216*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 217*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.s, p0/m, z1.s 218*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 219*5d6d982dSMomchil Velikov; 220*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u32_x_2: 221*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 222*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.s, p0/z, z1.s 223*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 224*5d6d982dSMomchil Velikoventry: 225*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxtb.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 226*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 227*5d6d982dSMomchil Velikov} 228*5d6d982dSMomchil Velikov 229*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svextb_u32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 230*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u32_z: 231*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 232*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.s, #0 // =0x0 233*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.s, p0/m, z1.s 234*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 235*5d6d982dSMomchil Velikov; 236*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u32_z: 237*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 238*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.s, p0/z, z1.s 239*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 240*5d6d982dSMomchil Velikoventry: 241*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxtb.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 242*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 243*5d6d982dSMomchil Velikov} 244*5d6d982dSMomchil Velikov 245*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextb_u64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) { 246*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u64_x_1: 247*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 248*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.d, p0/m, z0.d 249*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 250*5d6d982dSMomchil Velikov; 251*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u64_x_1: 252*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 253*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.d, p0/z, z0.d 254*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 255*5d6d982dSMomchil Velikoventry: 256*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtb.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 257*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 258*5d6d982dSMomchil Velikov} 259*5d6d982dSMomchil Velikov 260*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextb_u64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 261*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u64_x_2: 262*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 263*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 264*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.d, p0/m, z1.d 265*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 266*5d6d982dSMomchil Velikov; 267*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u64_x_2: 268*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 269*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.d, p0/z, z1.d 270*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 271*5d6d982dSMomchil Velikoventry: 272*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtb.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 273*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 274*5d6d982dSMomchil Velikov} 275*5d6d982dSMomchil Velikov 276*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextb_u64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 277*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextb_u64_z: 278*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 279*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.d, #0 // =0x0 280*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.d, p0/m, z1.d 281*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 282*5d6d982dSMomchil Velikov; 283*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextb_u64_z: 284*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 285*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.d, p0/z, z1.d 286*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 287*5d6d982dSMomchil Velikoventry: 288*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtb.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 289*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 290*5d6d982dSMomchil Velikov} 291*5d6d982dSMomchil Velikov 292*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svexth_s32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) { 293*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_s32_x_1: 294*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 295*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.s, p0/m, z0.s 296*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 297*5d6d982dSMomchil Velikov; 298*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_s32_x_1: 299*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 300*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.s, p0/z, z0.s 301*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 302*5d6d982dSMomchil Velikoventry: 303*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxth.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 304*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 305*5d6d982dSMomchil Velikov} 306*5d6d982dSMomchil Velikov 307*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svexth_s32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 308*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_s32_x_2: 309*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 310*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 311*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.s, p0/m, z1.s 312*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 313*5d6d982dSMomchil Velikov; 314*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_s32_x_2: 315*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 316*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.s, p0/z, z1.s 317*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 318*5d6d982dSMomchil Velikoventry: 319*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxth.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 320*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 321*5d6d982dSMomchil Velikov} 322*5d6d982dSMomchil Velikov 323*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svexth_s32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 324*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_s32_z: 325*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 326*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.s, #0 // =0x0 327*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.s, p0/m, z1.s 328*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 329*5d6d982dSMomchil Velikov; 330*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_s32_z: 331*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 332*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.s, p0/z, z1.s 333*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 334*5d6d982dSMomchil Velikoventry: 335*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxth.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 336*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 337*5d6d982dSMomchil Velikov} 338*5d6d982dSMomchil Velikov 339*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svexth_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) { 340*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_s64_x_1: 341*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 342*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.d, p0/m, z0.d 343*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 344*5d6d982dSMomchil Velikov; 345*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_s64_x_1: 346*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 347*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.d, p0/z, z0.d 348*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 349*5d6d982dSMomchil Velikoventry: 350*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxth.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 351*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 352*5d6d982dSMomchil Velikov} 353*5d6d982dSMomchil Velikov 354*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svexth_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 355*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_s64_x_2: 356*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 357*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 358*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.d, p0/m, z1.d 359*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 360*5d6d982dSMomchil Velikov; 361*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_s64_x_2: 362*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 363*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.d, p0/z, z1.d 364*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 365*5d6d982dSMomchil Velikoventry: 366*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxth.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 367*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 368*5d6d982dSMomchil Velikov} 369*5d6d982dSMomchil Velikov 370*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svexth_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 371*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_s64_z: 372*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 373*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.d, #0 // =0x0 374*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.d, p0/m, z1.d 375*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 376*5d6d982dSMomchil Velikov; 377*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_s64_z: 378*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 379*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.d, p0/z, z1.d 380*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 381*5d6d982dSMomchil Velikoventry: 382*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxth.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 383*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 384*5d6d982dSMomchil Velikov} 385*5d6d982dSMomchil Velikov 386*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svexth_u32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) { 387*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_u32_x_1: 388*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 389*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.s, p0/m, z0.s 390*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 391*5d6d982dSMomchil Velikov; 392*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_u32_x_1: 393*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 394*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.s, p0/z, z0.s 395*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 396*5d6d982dSMomchil Velikoventry: 397*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxth.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 398*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 399*5d6d982dSMomchil Velikov} 400*5d6d982dSMomchil Velikov 401*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svexth_u32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 402*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_u32_x_2: 403*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 404*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 405*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.s, p0/m, z1.s 406*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 407*5d6d982dSMomchil Velikov; 408*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_u32_x_2: 409*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 410*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.s, p0/z, z1.s 411*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 412*5d6d982dSMomchil Velikoventry: 413*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxth.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 414*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 415*5d6d982dSMomchil Velikov} 416*5d6d982dSMomchil Velikov 417*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svexth_u32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) { 418*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_u32_z: 419*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 420*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.s, #0 // =0x0 421*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.s, p0/m, z1.s 422*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 423*5d6d982dSMomchil Velikov; 424*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_u32_z: 425*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 426*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.s, p0/z, z1.s 427*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 428*5d6d982dSMomchil Velikoventry: 429*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxth.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 430*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 431*5d6d982dSMomchil Velikov} 432*5d6d982dSMomchil Velikov 433*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svexth_u64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) { 434*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_u64_x_1: 435*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 436*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.d, p0/m, z0.d 437*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 438*5d6d982dSMomchil Velikov; 439*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_u64_x_1: 440*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 441*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.d, p0/z, z0.d 442*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 443*5d6d982dSMomchil Velikoventry: 444*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxth.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 445*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 446*5d6d982dSMomchil Velikov} 447*5d6d982dSMomchil Velikov 448*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svexth_u64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 449*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_u64_x_2: 450*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 451*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 452*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.d, p0/m, z1.d 453*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 454*5d6d982dSMomchil Velikov; 455*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_u64_x_2: 456*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 457*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.d, p0/z, z1.d 458*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 459*5d6d982dSMomchil Velikoventry: 460*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxth.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 461*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 462*5d6d982dSMomchil Velikov} 463*5d6d982dSMomchil Velikov 464*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svexth_u64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 465*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svexth_u64_z: 466*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 467*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.d, #0 // =0x0 468*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.d, p0/m, z1.d 469*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 470*5d6d982dSMomchil Velikov; 471*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svexth_u64_z: 472*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 473*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.d, p0/z, z1.d 474*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 475*5d6d982dSMomchil Velikoventry: 476*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxth.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 477*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 478*5d6d982dSMomchil Velikov} 479*5d6d982dSMomchil Velikov 480*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextw_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) { 481*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextw_s64_x_1: 482*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 483*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtw z0.d, p0/m, z0.d 484*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 485*5d6d982dSMomchil Velikov; 486*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextw_s64_x_1: 487*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 488*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtw z0.d, p0/z, z0.d 489*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 490*5d6d982dSMomchil Velikoventry: 491*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtw.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 492*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 493*5d6d982dSMomchil Velikov} 494*5d6d982dSMomchil Velikov 495*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextw_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 496*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextw_s64_x_2: 497*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 498*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 499*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtw z0.d, p0/m, z1.d 500*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 501*5d6d982dSMomchil Velikov; 502*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextw_s64_x_2: 503*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 504*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtw z0.d, p0/z, z1.d 505*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 506*5d6d982dSMomchil Velikoventry: 507*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtw.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 508*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 509*5d6d982dSMomchil Velikov} 510*5d6d982dSMomchil Velikov 511*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextw_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 512*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextw_s64_z: 513*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 514*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.d, #0 // =0x0 515*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtw z0.d, p0/m, z1.d 516*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 517*5d6d982dSMomchil Velikov; 518*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextw_s64_z: 519*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 520*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtw z0.d, p0/z, z1.d 521*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 522*5d6d982dSMomchil Velikoventry: 523*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtw.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 524*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 525*5d6d982dSMomchil Velikov} 526*5d6d982dSMomchil Velikov 527*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextw_u64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) { 528*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextw_u64_x_1: 529*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 530*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtw z0.d, p0/m, z0.d 531*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 532*5d6d982dSMomchil Velikov; 533*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextw_u64_x_1: 534*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 535*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtw z0.d, p0/z, z0.d 536*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 537*5d6d982dSMomchil Velikoventry: 538*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtw.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 539*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 540*5d6d982dSMomchil Velikov} 541*5d6d982dSMomchil Velikov 542*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextw_u64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 543*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextw_u64_x_2: 544*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 545*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 546*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtw z0.d, p0/m, z1.d 547*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 548*5d6d982dSMomchil Velikov; 549*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextw_u64_x_2: 550*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 551*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtw z0.d, p0/z, z1.d 552*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 553*5d6d982dSMomchil Velikoventry: 554*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtw.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 555*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 556*5d6d982dSMomchil Velikov} 557*5d6d982dSMomchil Velikov 558*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svextw_u64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) { 559*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svextw_u64_z: 560*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 561*5d6d982dSMomchil Velikov; CHECK-NEXT: mov z0.d, #0 // =0x0 562*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtw z0.d, p0/m, z1.d 563*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 564*5d6d982dSMomchil Velikov; 565*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svextw_u64_z: 566*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 567*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtw z0.d, p0/z, z1.d 568*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 569*5d6d982dSMomchil Velikoventry: 570*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtw.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 571*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 572*5d6d982dSMomchil Velikov} 573*5d6d982dSMomchil Velikov 574*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svsxtb_nxv8i16_ptrue_u(double %z0, <vscale x 8 x i16> %x) { 575*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtb_nxv8i16_ptrue_u: 576*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 577*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.h 578*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 579*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.h, p0/m, z1.h 580*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 581*5d6d982dSMomchil Velikov; 582*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtb_nxv8i16_ptrue_u: 583*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 584*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.h 585*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.h, p0/z, z1.h 586*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 587*5d6d982dSMomchil Velikoventry: 588*5d6d982dSMomchil Velikov %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) 589*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.sxtb.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 590*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 591*5d6d982dSMomchil Velikov} 592*5d6d982dSMomchil Velikov 593*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svsxtb_nxv8i16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x i16> %y) { 594*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtb_nxv8i16_ptrue: 595*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 596*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.h 597*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 598*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.h, p0/m, z2.h 599*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 600*5d6d982dSMomchil Velikov; 601*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtb_nxv8i16_ptrue: 602*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 603*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.h 604*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.h, p0/z, z2.h 605*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 606*5d6d982dSMomchil Velikoventry: 607*5d6d982dSMomchil Velikov %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) 608*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.sxtb.nxv8i16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %y) 609*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 610*5d6d982dSMomchil Velikov} 611*5d6d982dSMomchil Velikov 612*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svsxtb_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) { 613*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtb_nxv4i32_ptrue_u: 614*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 615*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 616*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 617*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.s, p0/m, z1.s 618*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 619*5d6d982dSMomchil Velikov; 620*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtb_nxv4i32_ptrue_u: 621*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 622*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 623*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.s, p0/z, z1.s 624*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 625*5d6d982dSMomchil Velikoventry: 626*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 627*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxtb.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 628*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 629*5d6d982dSMomchil Velikov} 630*5d6d982dSMomchil Velikov 631*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svsxtb_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) { 632*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtb_nxv4i32_ptrue: 633*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 634*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 635*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 636*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.s, p0/m, z2.s 637*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 638*5d6d982dSMomchil Velikov; 639*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtb_nxv4i32_ptrue: 640*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 641*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 642*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.s, p0/z, z2.s 643*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 644*5d6d982dSMomchil Velikoventry: 645*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 646*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxtb.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y) 647*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 648*5d6d982dSMomchil Velikov} 649*5d6d982dSMomchil Velikov 650*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svsxtb_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) { 651*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtb_nxv2i64_ptrue_u: 652*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 653*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 654*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 655*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.d, p0/m, z1.d 656*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 657*5d6d982dSMomchil Velikov; 658*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtb_nxv2i64_ptrue_u: 659*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 660*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 661*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.d, p0/z, z1.d 662*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 663*5d6d982dSMomchil Velikoventry: 664*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 665*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtb.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 666*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 667*5d6d982dSMomchil Velikov} 668*5d6d982dSMomchil Velikov 669*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svsxtb_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) { 670*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtb_nxv2i64_ptrue: 671*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 672*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 673*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 674*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtb z0.d, p0/m, z2.d 675*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 676*5d6d982dSMomchil Velikov; 677*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtb_nxv2i64_ptrue: 678*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 679*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 680*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtb z0.d, p0/z, z2.d 681*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 682*5d6d982dSMomchil Velikoventry: 683*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 684*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtb.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y) 685*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 686*5d6d982dSMomchil Velikov} 687*5d6d982dSMomchil Velikov 688*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svuxtb_nxv8i16_ptrue_u(double %z0, <vscale x 8 x i16> %x) { 689*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtb_nxv8i16_ptrue_u: 690*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 691*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.h 692*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 693*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.h, p0/m, z1.h 694*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 695*5d6d982dSMomchil Velikov; 696*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtb_nxv8i16_ptrue_u: 697*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 698*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.h 699*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.h, p0/z, z1.h 700*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 701*5d6d982dSMomchil Velikoventry: 702*5d6d982dSMomchil Velikov %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) 703*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.uxtb.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) 704*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 705*5d6d982dSMomchil Velikov} 706*5d6d982dSMomchil Velikov 707*5d6d982dSMomchil Velikovdefine <vscale x 8 x i16> @test_svuxtb_nxv8i16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x i16> %y) { 708*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtb_nxv8i16_ptrue: 709*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 710*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.h 711*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 712*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.h, p0/m, z2.h 713*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 714*5d6d982dSMomchil Velikov; 715*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtb_nxv8i16_ptrue: 716*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 717*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.h 718*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.h, p0/z, z2.h 719*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 720*5d6d982dSMomchil Velikoventry: 721*5d6d982dSMomchil Velikov %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31) 722*5d6d982dSMomchil Velikov %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.uxtb.nxv8i16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %y) 723*5d6d982dSMomchil Velikov ret <vscale x 8 x i16> %0 724*5d6d982dSMomchil Velikov} 725*5d6d982dSMomchil Velikov 726*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svuxtb_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) { 727*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtb_nxv4i32_ptrue_u: 728*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 729*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 730*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 731*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.s, p0/m, z1.s 732*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 733*5d6d982dSMomchil Velikov; 734*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtb_nxv4i32_ptrue_u: 735*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 736*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 737*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.s, p0/z, z1.s 738*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 739*5d6d982dSMomchil Velikoventry: 740*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 741*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxtb.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 742*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 743*5d6d982dSMomchil Velikov} 744*5d6d982dSMomchil Velikov 745*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svuxtb_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) { 746*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtb_nxv4i32_ptrue: 747*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 748*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 749*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 750*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.s, p0/m, z2.s 751*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 752*5d6d982dSMomchil Velikov; 753*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtb_nxv4i32_ptrue: 754*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 755*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 756*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.s, p0/z, z2.s 757*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 758*5d6d982dSMomchil Velikoventry: 759*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 760*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxtb.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y) 761*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 762*5d6d982dSMomchil Velikov} 763*5d6d982dSMomchil Velikov 764*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svuxtb_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) { 765*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtb_nxv2i64_ptrue_u: 766*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 767*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 768*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 769*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.d, p0/m, z1.d 770*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 771*5d6d982dSMomchil Velikov; 772*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtb_nxv2i64_ptrue_u: 773*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 774*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 775*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.d, p0/z, z1.d 776*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 777*5d6d982dSMomchil Velikoventry: 778*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 779*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtb.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 780*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 781*5d6d982dSMomchil Velikov} 782*5d6d982dSMomchil Velikov 783*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svuxtb_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) { 784*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtb_nxv2i64_ptrue: 785*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 786*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 787*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 788*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtb z0.d, p0/m, z2.d 789*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 790*5d6d982dSMomchil Velikov; 791*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtb_nxv2i64_ptrue: 792*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 793*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 794*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtb z0.d, p0/z, z2.d 795*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 796*5d6d982dSMomchil Velikoventry: 797*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 798*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtb.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y) 799*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 800*5d6d982dSMomchil Velikov} 801*5d6d982dSMomchil Velikov 802*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svsxth_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) { 803*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxth_nxv4i32_ptrue_u: 804*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 805*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 806*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 807*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.s, p0/m, z1.s 808*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 809*5d6d982dSMomchil Velikov; 810*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxth_nxv4i32_ptrue_u: 811*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 812*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 813*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.s, p0/z, z1.s 814*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 815*5d6d982dSMomchil Velikoventry: 816*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 817*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxth.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 818*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 819*5d6d982dSMomchil Velikov} 820*5d6d982dSMomchil Velikov 821*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svsxth_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) { 822*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxth_nxv4i32_ptrue: 823*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 824*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 825*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 826*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.s, p0/m, z2.s 827*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 828*5d6d982dSMomchil Velikov; 829*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxth_nxv4i32_ptrue: 830*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 831*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 832*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.s, p0/z, z2.s 833*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 834*5d6d982dSMomchil Velikoventry: 835*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 836*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.sxth.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y) 837*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 838*5d6d982dSMomchil Velikov} 839*5d6d982dSMomchil Velikov 840*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svsxth_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) { 841*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxth_nxv2i64_ptrue_u: 842*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 843*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 844*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 845*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.d, p0/m, z1.d 846*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 847*5d6d982dSMomchil Velikov; 848*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxth_nxv2i64_ptrue_u: 849*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 850*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 851*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.d, p0/z, z1.d 852*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 853*5d6d982dSMomchil Velikoventry: 854*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 855*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxth.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 856*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 857*5d6d982dSMomchil Velikov} 858*5d6d982dSMomchil Velikov 859*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svsxth_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) { 860*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxth_nxv2i64_ptrue: 861*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 862*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 863*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 864*5d6d982dSMomchil Velikov; CHECK-NEXT: sxth z0.d, p0/m, z2.d 865*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 866*5d6d982dSMomchil Velikov; 867*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxth_nxv2i64_ptrue: 868*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 869*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 870*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxth z0.d, p0/z, z2.d 871*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 872*5d6d982dSMomchil Velikoventry: 873*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 874*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxth.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y) 875*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 876*5d6d982dSMomchil Velikov} 877*5d6d982dSMomchil Velikov 878*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svuxth_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) { 879*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxth_nxv4i32_ptrue_u: 880*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 881*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 882*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 883*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.s, p0/m, z1.s 884*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 885*5d6d982dSMomchil Velikov; 886*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxth_nxv4i32_ptrue_u: 887*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 888*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 889*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.s, p0/z, z1.s 890*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 891*5d6d982dSMomchil Velikoventry: 892*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 893*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxth.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) 894*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 895*5d6d982dSMomchil Velikov} 896*5d6d982dSMomchil Velikov 897*5d6d982dSMomchil Velikovdefine <vscale x 4 x i32> @test_svuxth_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) { 898*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxth_nxv4i32_ptrue: 899*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 900*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.s 901*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 902*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.s, p0/m, z2.s 903*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 904*5d6d982dSMomchil Velikov; 905*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxth_nxv4i32_ptrue: 906*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 907*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.s 908*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.s, p0/z, z2.s 909*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 910*5d6d982dSMomchil Velikoventry: 911*5d6d982dSMomchil Velikov %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31) 912*5d6d982dSMomchil Velikov %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.uxth.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y) 913*5d6d982dSMomchil Velikov ret <vscale x 4 x i32> %0 914*5d6d982dSMomchil Velikov} 915*5d6d982dSMomchil Velikov 916*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svuxth_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) { 917*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxth_nxv2i64_ptrue_u: 918*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 919*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 920*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 921*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.d, p0/m, z1.d 922*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 923*5d6d982dSMomchil Velikov; 924*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxth_nxv2i64_ptrue_u: 925*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 926*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 927*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.d, p0/z, z1.d 928*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 929*5d6d982dSMomchil Velikoventry: 930*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 931*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxth.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 932*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 933*5d6d982dSMomchil Velikov} 934*5d6d982dSMomchil Velikov 935*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svuxth_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) { 936*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxth_nxv2i64_ptrue: 937*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 938*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 939*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 940*5d6d982dSMomchil Velikov; CHECK-NEXT: uxth z0.d, p0/m, z2.d 941*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 942*5d6d982dSMomchil Velikov; 943*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxth_nxv2i64_ptrue: 944*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 945*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 946*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxth z0.d, p0/z, z2.d 947*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 948*5d6d982dSMomchil Velikoventry: 949*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 950*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxth.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y) 951*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 952*5d6d982dSMomchil Velikov} 953*5d6d982dSMomchil Velikov 954*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svsxtw_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) { 955*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtw_nxv2i64_ptrue_u: 956*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 957*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 958*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 959*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtw z0.d, p0/m, z1.d 960*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 961*5d6d982dSMomchil Velikov; 962*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtw_nxv2i64_ptrue_u: 963*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 964*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 965*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtw z0.d, p0/z, z1.d 966*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 967*5d6d982dSMomchil Velikoventry: 968*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 969*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtw.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 970*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 971*5d6d982dSMomchil Velikov} 972*5d6d982dSMomchil Velikov 973*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svsxtw_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) { 974*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svsxtw_nxv2i64_ptrue: 975*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 976*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 977*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 978*5d6d982dSMomchil Velikov; CHECK-NEXT: sxtw z0.d, p0/m, z2.d 979*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 980*5d6d982dSMomchil Velikov; 981*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svsxtw_nxv2i64_ptrue: 982*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 983*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 984*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: sxtw z0.d, p0/z, z2.d 985*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 986*5d6d982dSMomchil Velikoventry: 987*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 988*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.sxtw.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y) 989*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 990*5d6d982dSMomchil Velikov} 991*5d6d982dSMomchil Velikov 992*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svuxtw_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) { 993*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtw_nxv2i64_ptrue_u: 994*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 995*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 996*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z1 997*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtw z0.d, p0/m, z1.d 998*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 999*5d6d982dSMomchil Velikov; 1000*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtw_nxv2i64_ptrue_u: 1001*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 1002*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 1003*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtw z0.d, p0/z, z1.d 1004*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 1005*5d6d982dSMomchil Velikoventry: 1006*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 1007*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtw.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) 1008*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 1009*5d6d982dSMomchil Velikov} 1010*5d6d982dSMomchil Velikov 1011*5d6d982dSMomchil Velikovdefine <vscale x 2 x i64> @test_svuxtw_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) { 1012*5d6d982dSMomchil Velikov; CHECK-LABEL: test_svuxtw_nxv2i64_ptrue: 1013*5d6d982dSMomchil Velikov; CHECK: // %bb.0: // %entry 1014*5d6d982dSMomchil Velikov; CHECK-NEXT: ptrue p0.d 1015*5d6d982dSMomchil Velikov; CHECK-NEXT: movprfx z0, z2 1016*5d6d982dSMomchil Velikov; CHECK-NEXT: uxtw z0.d, p0/m, z2.d 1017*5d6d982dSMomchil Velikov; CHECK-NEXT: ret 1018*5d6d982dSMomchil Velikov; 1019*5d6d982dSMomchil Velikov; CHECK-2p2-LABEL: test_svuxtw_nxv2i64_ptrue: 1020*5d6d982dSMomchil Velikov; CHECK-2p2: // %bb.0: // %entry 1021*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ptrue p0.d 1022*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: uxtw z0.d, p0/z, z2.d 1023*5d6d982dSMomchil Velikov; CHECK-2p2-NEXT: ret 1024*5d6d982dSMomchil Velikoventry: 1025*5d6d982dSMomchil Velikov %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31) 1026*5d6d982dSMomchil Velikov %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.uxtw.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y) 1027*5d6d982dSMomchil Velikov ret <vscale x 2 x i64> %0 1028*5d6d982dSMomchil Velikov} 1029