16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon -ffreestanding -emit-llvm -o - -O1 %s | FileCheck %s 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include <arm_neon.h> 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x8_t test_vqshl_n_s8(int8x8_t in) { 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_s8 66bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> %in, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_s8(in, 1); 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x4_t test_vqshl_n_s16(int16x4_t in) { 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_s16 126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> %in, <4 x i16> <i16 1, i16 1, i16 1, i16 1>) 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_s16(in, 1); 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x2_t test_vqshl_n_s32(int32x2_t in) { 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_s32 186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32> %in, <2 x i32> <i32 1, i32 1>) 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_s32(in, 1); 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x1_t test_vqshl_n_s64(int64x1_t in) { 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_s64 246bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <1 x i64> @llvm.aarch64.neon.sqshl.v1i64(<1 x i64> %in, <1 x i64> <i64 1>) 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_s64(in, 1); 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vqshlq_n_s8(int8x16_t in) { 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_s8 316bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8> %in, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_s8(in, 1); 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vqshlq_n_s16(int16x8_t in) { 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_s16 376bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16> %in, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>) 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_s16(in, 1); 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqshlq_n_s32(int32x4_t in) { 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_s32 436bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32> %in, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_s32(in, 1); 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vqshlq_n_s64(int64x2_t in) { 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_s64 496bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64> %in, <2 x i64> <i64 1, i64 1> 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_s64(in, 1); 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x8_t test_vqshl_n_u8(uint8x8_t in) { 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_u8 556bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %in, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_u8(in, 1); 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x4_t test_vqshl_n_u16(uint16x4_t in) { 60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_u16 616bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> %in, <4 x i16> <i16 1, i16 1, i16 1, i16 1>) 62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_u16(in, 1); 63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 65651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vqshl_n_u32(uint32x2_t in) { 66651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_u32 676bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32> %in, <2 x i32> <i32 1, i32 1>) 68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_u32(in, 1); 69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vqshl_n_u64(uint64x1_t in) { 72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshl_n_u64 736bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <1 x i64> @llvm.aarch64.neon.uqshl.v1i64(<1 x i64> %in, <1 x i64> <i64 1>) 74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshl_n_u64(in, 1); 75651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 76651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqshlq_n_u8(uint8x16_t in) { 78651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_u8 796bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8> %in, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 80651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_u8(in, 1); 81651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 82651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 83651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqshlq_n_u16(uint16x8_t in) { 84651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_u16 856bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16> %in, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>) 86651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_u16(in, 1); 87651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 88651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 89651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqshlq_n_u32(uint32x4_t in) { 90651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_u32 916bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32> %in, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 92651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_u32(in, 1); 93651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 94651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 95651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vqshlq_n_u64(uint64x2_t in) { 96651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlq_n_u64 976bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64> %in, <2 x i64> <i64 1, i64 1> 98651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlq_n_u64(in, 1); 99651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 100651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 101651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x8_t test_vrshr_n_s8(int8x8_t in) { 102651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_s8 1036bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %in, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 104651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_s8(in, 1); 105651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 106651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 107651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x4_t test_vrshr_n_s16(int16x4_t in) { 108651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_s16 1096bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %in, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 110651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_s16(in, 1); 111651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 112651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 113651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x2_t test_vrshr_n_s32(int32x2_t in) { 114651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_s32 1156bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %in, <2 x i32> <i32 -1, i32 -1>) 116651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_s32(in, 1); 117651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 118651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 119651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x1_t test_vrshr_n_s64(int64x1_t in) { 120651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_s64 1216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <1 x i64> @llvm.aarch64.neon.srshl.v1i64(<1 x i64> %in, <1 x i64> <i64 -1>) 122651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_s64(in, 1); 123651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 124651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 125651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 126651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vrshrq_n_s8(int8x16_t in) { 127651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_s8 1286bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %in, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 129651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_s8(in, 1); 130651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 131651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 132651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vrshrq_n_s16(int16x8_t in) { 133651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_s16 1346bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %in, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 135651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_s16(in, 1); 136651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 137651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 138651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vrshrq_n_s32(int32x4_t in) { 139651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_s32 1406bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %in, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 141651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_s32(in, 1); 142651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 143651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 144651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vrshrq_n_s64(int64x2_t in) { 145651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_s64 1466bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %in, <2 x i64> <i64 -1, i64 -1> 147651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_s64(in, 1); 148651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 149651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 150651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x8_t test_vrshr_n_u8(uint8x8_t in) { 151651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_u8 1526bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %in, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 153651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_u8(in, 1); 154651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 155651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 156651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x4_t test_vrshr_n_u16(uint16x4_t in) { 157651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_u16 1586bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %in, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 159651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_u16(in, 1); 160651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 161651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 162651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vrshr_n_u32(uint32x2_t in) { 163651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_u32 1646bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %in, <2 x i32> <i32 -1, i32 -1>) 165651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_u32(in, 1); 166651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 167651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 168651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vrshr_n_u64(uint64x1_t in) { 169651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshr_n_u64 1706bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <1 x i64> @llvm.aarch64.neon.urshl.v1i64(<1 x i64> %in, <1 x i64> <i64 -1>) 171651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshr_n_u64(in, 1); 172651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 173651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 174651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vrshrq_n_u8(uint8x16_t in) { 175651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_u8 1766bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %in, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 177651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_u8(in, 1); 178651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 179651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 180651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vrshrq_n_u16(uint16x8_t in) { 181651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_u16 1826bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %in, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 183651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_u16(in, 1); 184651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 185651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 186651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vrshrq_n_u32(uint32x4_t in) { 187651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_u32 1886bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %in, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 189651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_u32(in, 1); 190651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 191651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 192651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vrshrq_n_u64(uint64x2_t in) { 193651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrshrq_n_u64 1946bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %in, <2 x i64> <i64 -1, i64 -1> 195651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrq_n_u64(in, 1); 196651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 197651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 198651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x8_t test_vqshlu_n_s8(int8x8_t in) { 199651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlu_n_s8 2006bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i8> @llvm.aarch64.neon.sqshlu.v8i8(<8 x i8> %in, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 201651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlu_n_s8(in, 1); 202651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 203651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 204651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x4_t test_vqshlu_n_s16(int16x4_t in) { 205651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlu_n_s16 2066bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i16> @llvm.aarch64.neon.sqshlu.v4i16(<4 x i16> %in, <4 x i16> <i16 1, i16 1, i16 1, i16 1>) 207651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlu_n_s16(in, 1); 208651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 209651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 210651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x2_t test_vqshlu_n_s32(int32x2_t in) { 211651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlu_n_s32 2126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i32> @llvm.aarch64.neon.sqshlu.v2i32(<2 x i32> %in, <2 x i32> <i32 1, i32 1>) 213651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlu_n_s32(in, 1); 214651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 215651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 216651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x1_t test_vqshlu_n_s64(int64x1_t in) { 217651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshlu_n_s64 2186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <1 x i64> @llvm.aarch64.neon.sqshlu.v1i64(<1 x i64> %in, <1 x i64> <i64 1>) 219651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshlu_n_s64(in, 1); 220651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 221651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 222651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 223651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vqshluq_n_s8(int8x16_t in) { 224651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshluq_n_s8 2256bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <16 x i8> @llvm.aarch64.neon.sqshlu.v16i8(<16 x i8> %in, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>) 226651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshluq_n_s8(in, 1); 227651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 228651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 229651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vqshluq_n_s16(int16x8_t in) { 230651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshluq_n_s16 2316bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <8 x i16> @llvm.aarch64.neon.sqshlu.v8i16(<8 x i16> %in, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>) 232651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshluq_n_s16(in, 1); 233651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 234651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 235651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqshluq_n_s32(int32x4_t in) { 236651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshluq_n_s32 2376bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <4 x i32> @llvm.aarch64.neon.sqshlu.v4i32(<4 x i32> %in, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 238651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshluq_n_s32(in, 1); 239651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 240651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 241651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vqshluq_n_s64(int64x2_t in) { 242651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vqshluq_n_s64 2436bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: call <2 x i64> @llvm.aarch64.neon.sqshlu.v2i64(<2 x i64> %in, <2 x i64> <i64 1, i64 1> 244651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshluq_n_s64(in, 1); 245651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 246651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 247651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x8_t test_vrsra_n_s8(int8x8_t acc, int8x8_t in) { 248651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_s8 2496bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %in, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 250651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <8 x i8> [[TMP]], %acc 251651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_s8(acc, in, 1); 252651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 253651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 254651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x4_t test_vrsra_n_s16(int16x4_t acc, int16x4_t in) { 255651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_s16 2566bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %in, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 257651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <4 x i16> [[TMP]], %acc 258651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_s16(acc, in, 1); 259651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 260651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 261651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x2_t test_vrsra_n_s32(int32x2_t acc, int32x2_t in) { 262651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_s32 2636bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %in, <2 x i32> <i32 -1, i32 -1>) 264651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <2 x i32> [[TMP]], %acc 265651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_s32(acc, in, 1); 266651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 267651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 268651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x1_t test_vrsra_n_s64(int64x1_t acc, int64x1_t in) { 269651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_s64 2706bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <1 x i64> @llvm.aarch64.neon.srshl.v1i64(<1 x i64> %in, <1 x i64> <i64 -1>) 271651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <1 x i64> [[TMP]], %acc 272651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_s64(acc, in, 1); 273651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 274651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 275651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vrsraq_n_s8(int8x16_t acc, int8x16_t in) { 276651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_s8 2776bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %in, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 278651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <16 x i8> [[TMP]], %acc 279651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_s8(acc, in, 1); 280651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 281651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 282651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vrsraq_n_s16(int16x8_t acc, int16x8_t in) { 283651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_s16 2846bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %in, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 285651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <8 x i16> [[TMP]], %acc 286651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_s16(acc, in, 1); 287651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 288651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 289651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vrsraq_n_s32(int32x4_t acc, int32x4_t in) { 290651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_s32 2916bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %in, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 292651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <4 x i32> [[TMP]], %acc 293651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_s32(acc, in, 1); 294651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 295651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 296651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vrsraq_n_s64(int64x2_t acc, int64x2_t in) { 297651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_s64 2986bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %in, <2 x i64> <i64 -1, i64 -1>) 299651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <2 x i64> [[TMP]], %acc 300651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_s64(acc, in, 1); 301651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 302651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 303651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x8_t test_vrsra_n_u8(uint8x8_t acc, uint8x8_t in) { 304651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_u8 3056bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %in, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 306651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <8 x i8> [[TMP]], %acc 307651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_u8(acc, in, 1); 308651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 309651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 310651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x4_t test_vrsra_n_u16(uint16x4_t acc, uint16x4_t in) { 311651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_u16 3126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %in, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>) 313651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <4 x i16> [[TMP]], %acc 314651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_u16(acc, in, 1); 315651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 316651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 317651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x2_t test_vrsra_n_u32(uint32x2_t acc, uint32x2_t in) { 318651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_u32 3196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %in, <2 x i32> <i32 -1, i32 -1>) 320651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <2 x i32> [[TMP]], %acc 321651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_u32(acc, in, 1); 322651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 323651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 324651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x1_t test_vrsra_n_u64(uint64x1_t acc, uint64x1_t in) { 325651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsra_n_u64 3266bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <1 x i64> @llvm.aarch64.neon.urshl.v1i64(<1 x i64> %in, <1 x i64> <i64 -1>) 327651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <1 x i64> [[TMP]], %acc 328651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsra_n_u64(acc, in, 1); 329651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 330651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 331651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vrsraq_n_u8(uint8x16_t acc, uint8x16_t in) { 332651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_u8 3336bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %in, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>) 334651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <16 x i8> [[TMP]], %acc 335651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_u8(acc, in, 1); 336651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 337651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 338651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vrsraq_n_u16(uint16x8_t acc, uint16x8_t in) { 339651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_u16 3406bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %in, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>) 341651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <8 x i16> [[TMP]], %acc 342651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_u16(acc, in, 1); 343651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 344651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 345651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vrsraq_n_u32(uint32x4_t acc, uint32x4_t in) { 346651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_u32 3476bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %in, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>) 348651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <4 x i32> [[TMP]], %acc 349651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_u32(acc, in, 1); 350651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 351651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 352651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vrsraq_n_u64(uint64x2_t acc, uint64x2_t in) { 353651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK-LABEL: @test_vrsraq_n_u64 3546bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines // CHECK: [[TMP:%[0-9a-zA-Z._]+]] = tail call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %in, <2 x i64> <i64 -1, i64 -1>) 355651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: add <2 x i64> [[TMP]], %acc 356651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrsraq_n_u64(acc, in, 1); 357651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 358