16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon -ffreestanding -Os -S -o - %s | FileCheck %s 2c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// REQUIRES: aarch64-registered-target 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include <arm_neon.h> 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vaddw_high_s8(int16x8_t lhs, int8x16_t rhs) { 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: saddw2.8h 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddw_high_s8(lhs, rhs); 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vaddw_high_s16(int32x4_t lhs, int16x8_t rhs) { 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: saddw2.4s 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddw_high_s16(lhs, rhs); 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vaddw_high_s32(int64x2_t lhs, int32x4_t rhs) { 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: saddw2.2d 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddw_high_s32(lhs, rhs); 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vaddw_high_u8(uint16x8_t lhs, uint8x16_t rhs) { 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uaddw2.8h 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddw_high_u8(lhs, rhs); 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vaddw_high_u16(uint32x4_t lhs, uint16x8_t rhs) { 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uaddw2.4s 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddw_high_u16(lhs, rhs); 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vaddw_high_u32(uint64x2_t lhs, uint32x4_t rhs) { 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uaddw2.2d 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddw_high_u32(lhs, rhs); 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vsubw_high_s8(int16x8_t lhs, int8x16_t rhs) { 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ssubw2.8h 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubw_high_s8(lhs, rhs); 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vsubw_high_s16(int32x4_t lhs, int16x8_t rhs) { 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ssubw2.4s 43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubw_high_s16(lhs, rhs); 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vsubw_high_s32(int64x2_t lhs, int32x4_t rhs) { 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ssubw2.2d 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubw_high_s32(lhs, rhs); 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vsubw_high_u8(uint16x8_t lhs, uint8x16_t rhs) { 52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: usubw2.8h 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubw_high_u8(lhs, rhs); 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vsubw_high_u16(uint32x4_t lhs, uint16x8_t rhs) { 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: usubw2.4s 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubw_high_u16(lhs, rhs); 59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vsubw_high_u32(uint64x2_t lhs, uint32x4_t rhs) { 62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: usubw2.2d 63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubw_high_u32(lhs, rhs); 64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 65651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 66651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vabdl_high_s8(int8x16_t lhs, int8x16_t rhs) { 67651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sabdl2.8h 68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabdl_high_s8(lhs, rhs); 69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vabdl_high_s16(int16x8_t lhs, int16x8_t rhs) { 72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sabdl2.4s 73651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabdl_high_s16(lhs, rhs); 74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 75651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 76651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vabdl_high_s32(int32x4_t lhs, int32x4_t rhs) { 77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sabdl2.2d 78651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabdl_high_s32(lhs, rhs); 79651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 80651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 81651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vabdl_high_u8(uint8x16_t lhs, uint8x16_t rhs) { 82651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uabdl2.8h 83651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabdl_high_u8(lhs, rhs); 84651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 85651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 86651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vabdl_high_u16(uint16x8_t lhs, uint16x8_t rhs) { 87651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uabdl2.4s 88651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabdl_high_u16(lhs, rhs); 89651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 90651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 91651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vabdl_high_u32(uint32x4_t lhs, uint32x4_t rhs) { 92651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uabdl2.2d 93651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabdl_high_u32(lhs, rhs); 94651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 95651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 96651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vabal_high_s8(int16x8_t accum, int8x16_t lhs, int8x16_t rhs) { 97651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sabal2.8h 98651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabal_high_s8(accum, lhs, rhs); 99651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 100651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 101651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vabal_high_s16(int32x4_t accum, int16x8_t lhs, int16x8_t rhs) { 102651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sabal2.4s 103651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabal_high_s16(accum, lhs, rhs); 104651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 105651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 106651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vabal_high_s32(int64x2_t accum, int32x4_t lhs, int32x4_t rhs) { 107651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sabal2.2d 108651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabal_high_s32(accum, lhs, rhs); 109651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 110651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 111651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vabal_high_u8(uint16x8_t accum, uint8x16_t lhs, uint8x16_t rhs) { 112651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uabal2.8h 113651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabal_high_u8(accum, lhs, rhs); 114651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 115651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 116651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vabal_high_u16(uint32x4_t accum, uint16x8_t lhs, uint16x8_t rhs) { 117651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uabal2.4s 118651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabal_high_u16(accum, lhs, rhs); 119651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 120651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 121651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vabal_high_u32(uint64x2_t accum, uint32x4_t lhs, uint32x4_t rhs) { 122651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uabal2.2d 123651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vabal_high_u32(accum, lhs, rhs); 124651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 125651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 126651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqdmlal_high_s16(int32x4_t accum, int16x8_t lhs, int16x8_t rhs) { 127651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqdmlal2.4s 128651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqdmlal_high_s16(accum, lhs, rhs); 129651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 130651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 131651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vqdmlal_high_s32(int64x2_t accum, int32x4_t lhs, int32x4_t rhs) { 132651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqdmlal2.2d 133651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqdmlal_high_s32(accum, lhs, rhs); 134651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 135651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 136651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqdmlsl_high_s16(int32x4_t accum, int16x8_t lhs, int16x8_t rhs) { 137651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqdmlsl2.4s 138651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqdmlsl_high_s16(accum, lhs, rhs); 139651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 140651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 141651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vqdmlsl_high_s32(int64x2_t accum, int32x4_t lhs, int32x4_t rhs) { 142651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqdmlsl2.2d 143651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqdmlsl_high_s32(accum, lhs, rhs); 144651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 145651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 146651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqdmull_high_s16(int16x8_t lhs, int16x8_t rhs) { 147651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqdmull2.4s 148651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqdmull_high_s16(lhs, rhs); 149651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 150651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 151651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vqdmull_high_s32(int32x4_t lhs, int32x4_t rhs) { 152651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqdmull2.2d 153651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqdmull_high_s32(lhs, rhs); 154651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 155651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 156651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vshll_high_n_s8(int8x16_t in) { 157651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sshll2.8h 158651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_s8(in, 7); 159651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 160651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 161651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vshll_high_n_s16(int16x8_t in) { 162651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sshll2.4s 163651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_s16(in, 15); 164651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 165651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 166651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vshll_high_n_s32(int32x4_t in) { 167651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sshll2.2d 168651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_s32(in, 31); 169651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 170651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 171651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vshll_high_n_u8(int8x16_t in) { 172651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ushll2.8h 173651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_u8(in, 7); 174651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 175651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 176651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vshll_high_n_u16(int16x8_t in) { 177651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ushll2.4s 178651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_u16(in, 15); 179651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 180651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 181651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vshll_high_n_u32(int32x4_t in) { 182651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ushll2.2d 183651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_u32(in, 31); 184651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 185651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 186651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vshll_high_n_s8_max(int8x16_t in) { 187651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shll2.8h 188651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_s8(in, 8); 189651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 190651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 191651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vshll_high_n_s16_max(int16x8_t in) { 192651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shll2.4s 193651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_s16(in, 16); 194651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 195651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 196651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vshll_high_n_s32_max(int32x4_t in) { 197651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shll2.2d 198651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_s32(in, 32); 199651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 200651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 201651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vshll_high_n_u8_max(int8x16_t in) { 202651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shll2.8h 203651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_u8(in, 8); 204651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 205651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 206651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vshll_high_n_u16_max(int16x8_t in) { 207651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shll2.4s 208651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_u16(in, 16); 209651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 210651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 211651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vshll_high_n_u32_max(int32x4_t in) { 212651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shll2.2d 213651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshll_high_n_u32(in, 32); 214651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 215651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 216651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vsubl_high_s8(int8x16_t lhs, int8x16_t rhs) { 217651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ssubl2.8h 218651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubl_high_s8(lhs, rhs); 219651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 220651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 221651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vsubl_high_s16(int16x8_t lhs, int16x8_t rhs) { 222651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ssubl2.4s 223651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubl_high_s16(lhs, rhs); 224651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 225651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 226651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64x2_t test_vsubl_high_s32(int32x4_t lhs, int32x4_t rhs) { 227651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: ssubl2.2d 228651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubl_high_s32(lhs, rhs); 229651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 230651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 231651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vsubl_high_u8(uint8x16_t lhs, uint8x16_t rhs) { 232651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: usubl2.8h 233651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubl_high_u8(lhs, rhs); 234651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 235651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 236651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vsubl_high_u16(uint16x8_t lhs, uint16x8_t rhs) { 237651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: usubl2.4s 238651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubl_high_u16(lhs, rhs); 239651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 240651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 241651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64x2_t test_vsubl_high_u32(uint32x4_t lhs, uint32x4_t rhs) { 242651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: usubl2.2d 243651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vsubl_high_u32(lhs, rhs); 244651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 245651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 246651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vrshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) { 247651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: rshrn2.16b 248651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrn_high_n_s16(lowpart, input, 2); 249651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 250651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 251651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vrshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) { 252651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: rshrn2.8h 253651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrn_high_n_s32(lowpart, input, 2); 254651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 255651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 256651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vrshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) { 257651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shrn2.4s 258651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrn_high_n_s64(lowpart, input, 2); 259651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 260651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 261651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vrshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) { 262651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: rshrn2.16b 263651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrn_high_n_u16(lowpart, input, 2); 264651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 265651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 266651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vrshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) { 267651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: rshrn2.8h 268651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrn_high_n_u32(lowpart, input, 2); 269651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 270651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 271651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vrshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) { 272651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: rshrn2.4s 273651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vrshrn_high_n_u64(lowpart, input, 2); 274651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 275651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 276651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) { 277651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shrn2.16b 278651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshrn_high_n_s16(lowpart, input, 2); 279651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 280651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 281651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) { 282651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shrn2.8h 283651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshrn_high_n_s32(lowpart, input, 2); 284651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 285651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 286651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) { 287651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shrn2.4s 288651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshrn_high_n_s64(lowpart, input, 2); 289651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 290651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 291651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) { 292651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shrn2.16b 293651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshrn_high_n_u16(lowpart, input, 2); 294651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 295651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 296651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) { 297651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shrn2.8h 298651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshrn_high_n_u32(lowpart, input, 2); 299651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 300651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 301651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) { 302651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: shrn2.4s 303651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vshrn_high_n_u64(lowpart, input, 2); 304651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 305651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 306651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqshrun_high_n_s16(uint8x8_t lowpart, int16x8_t input) { 307651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqshrun2.16b 308651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrun_high_n_s16(lowpart, input, 2); 309651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 310651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 311651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqshrun_high_n_s32(uint16x4_t lowpart, int32x4_t input) { 312651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqshrun2.8h 313651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrun_high_n_s32(lowpart, input, 2); 314651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 315651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 316651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqshrun_high_n_s64(uint32x2_t lowpart, int64x2_t input) { 317651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqshrun2.4s 318651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrun_high_n_s64(lowpart, input, 2); 319651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 320651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 321651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqrshrun_high_n_s16(uint8x8_t lowpart, int16x8_t input) { 322651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqrshrun2.16b 323651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrun_high_n_s16(lowpart, input, 2); 324651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 325651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 326651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqrshrun_high_n_s32(uint16x4_t lowpart, int32x4_t input) { 327651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqrshrun2.8h 328651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrun_high_n_s32(lowpart, input, 2); 329651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 330651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 331651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqrshrun_high_n_s64(uint32x2_t lowpart, int64x2_t input) { 332651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqrshrun2.4s 333651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrun_high_n_s64(lowpart, input, 2); 334651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 335651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 336651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vqshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) { 337651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqshrn2.16b 338651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrn_high_n_s16(lowpart, input, 2); 339651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 340651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 341651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vqshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) { 342651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqshrn2.8h 343651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrn_high_n_s32(lowpart, input, 2); 344651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 345651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 346651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) { 347651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqshrn2.4s 348651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrn_high_n_s64(lowpart, input, 2); 349651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 350651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 351651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) { 352651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqshrn2.16b 353651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrn_high_n_u16(lowpart, input, 2); 354651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 355651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 356651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) { 357651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqshrn2.8h 358651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrn_high_n_u32(lowpart, input, 2); 359651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 360651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 361651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) { 362651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqshrn2.4s 363651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqshrn_high_n_u64(lowpart, input, 2); 364651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 365651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 366651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vqrshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) { 367651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqrshrn2.16b 368651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrn_high_n_s16(lowpart, input, 2); 369651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 370651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 371651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vqrshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) { 372651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqrshrn2.8h 373651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrn_high_n_s32(lowpart, input, 2); 374651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 375651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 376651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqrshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) { 377651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqrshrn2.4s 378651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrn_high_n_s64(lowpart, input, 2); 379651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 380651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 381651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqrshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) { 382651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqrshrn2.16b 383651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrn_high_n_u16(lowpart, input, 2); 384651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 385651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 386651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqrshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) { 387651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqrshrn2.8h 388651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrn_high_n_u32(lowpart, input, 2); 389651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 390651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 391651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqrshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) { 392651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqrshrn2.4s 393651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqrshrn_high_n_u64(lowpart, input, 2); 394651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 395651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 396651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vaddhn_high_s16(int8x8_t lowpart, int16x8_t lhs, int16x8_t rhs) { 3973ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar // CHECK: addhn2.16b v0, {{v1, v2|v2, v1}} 398651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddhn_high_s16(lowpart, lhs, rhs); 399651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 400651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 401651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vaddhn_high_s32(int16x4_t lowpart, int32x4_t lhs, int32x4_t rhs) { 4023ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar // CHECK: addhn2.8h v0, {{v1, v2|v2, v1}} 403651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddhn_high_s32(lowpart, lhs, rhs); 404651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 405651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 406651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vaddhn_high_s64(int32x2_t lowpart, int64x2_t lhs, int64x2_t rhs) { 4073ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar // CHECK: addhn2.4s v0, {{v1, v2|v2, v1}} 408651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddhn_high_s64(lowpart, lhs, rhs); 409651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 410651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 411651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vaddhn_high_u16(uint8x8_t lowpart, uint16x8_t lhs, uint16x8_t rhs) { 4123ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar // CHECK: addhn2.16b v0, {{v1, v2|v2, v1}} 413651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddhn_high_s16(lowpart, lhs, rhs); 414651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 415651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 416651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vaddhn_high_u32(uint16x4_t lowpart, uint32x4_t lhs, uint32x4_t rhs) { 4173ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar // CHECK: addhn2.8h v0, {{v1, v2|v2, v1}} 418651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddhn_high_s32(lowpart, lhs, rhs); 419651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 420651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 421651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vaddhn_high_u64(uint32x2_t lowpart, uint64x2_t lhs, uint64x2_t rhs) { 4223ea9e33ea25e0c2b12db56418ba3f994eb662c04Pirama Arumuga Nainar // CHECK: addhn2.4s v0, {{v1, v2|v2, v1}} 423651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vaddhn_high_s64(lowpart, lhs, rhs); 424651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 425651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 426651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vraddhn_high_s16(int8x8_t lowpart, int16x8_t lhs, int16x8_t rhs) { 427651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: raddhn2.16b v0, v1, v2 428651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vraddhn_high_s16(lowpart, lhs, rhs); 429651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 430651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 431651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vraddhn_high_s32(int16x4_t lowpart, int32x4_t lhs, int32x4_t rhs) { 432651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: raddhn2.8h v0, v1, v2 433651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vraddhn_high_s32(lowpart, lhs, rhs); 434651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 435651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 436651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vraddhn_high_s64(int32x2_t lowpart, int64x2_t lhs, int64x2_t rhs) { 437651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: raddhn2.4s v0, v1, v2 438651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vraddhn_high_s64(lowpart, lhs, rhs); 439651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 440651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 441651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vraddhn_high_u16(uint8x8_t lowpart, uint16x8_t lhs, uint16x8_t rhs) { 442651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: raddhn2.16b v0, v1, v2 443651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vraddhn_high_s16(lowpart, lhs, rhs); 444651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 445651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 446651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vraddhn_high_u32(uint16x4_t lowpart, uint32x4_t lhs, uint32x4_t rhs) { 447651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: raddhn2.8h v0, v1, v2 448651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vraddhn_high_s32(lowpart, lhs, rhs); 449651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 450651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 451651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vraddhn_high_u64(uint32x2_t lowpart, uint64x2_t lhs, uint64x2_t rhs) { 452651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: raddhn2.4s v0, v1, v2 453651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vraddhn_high_s64(lowpart, lhs, rhs); 454651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 455651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 456651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vmovn_high_s16(int8x8_t lowpart, int16x8_t wide) { 457651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: xtn2.16b v0, v1 458651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vmovn_high_s16(lowpart, wide); 459651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 460651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 461651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vmovn_high_s32(int16x4_t lowpart, int32x4_t wide) { 462651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: xtn2.8h v0, v1 463651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vmovn_high_s32(lowpart, wide); 464651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 465651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 466651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vmovn_high_s64(int32x2_t lowpart, int64x2_t wide) { 467651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: xtn2.4s v0, v1 468651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vmovn_high_s64(lowpart, wide); 469651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 470651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 471651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vmovn_high_u16(uint8x8_t lowpart, uint16x8_t wide) { 472651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: xtn2.16b v0, v1 473651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vmovn_high_u16(lowpart, wide); 474651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 475651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 476651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vmovn_high_u32(uint16x4_t lowpart, uint32x4_t wide) { 477651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: xtn2.8h v0, v1 478651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vmovn_high_u32(lowpart, wide); 479651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 480651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 481651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vmovn_high_u64(uint32x2_t lowpart, uint64x2_t wide) { 482651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: xtn2.4s v0, v1 483651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vmovn_high_u64(lowpart, wide); 484651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 485651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 486651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8x16_t test_vqmovn_high_s16(int8x8_t lowpart, int16x8_t wide) { 487651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqxtn2.16b v0, v1 488651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovn_high_s16(lowpart, wide); 489651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 490651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 491651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16x8_t test_vqmovn_high_s32(int16x4_t lowpart, int32x4_t wide) { 492651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqxtn2.8h v0, v1 493651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovn_high_s32(lowpart, wide); 494651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 495651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 496651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32x4_t test_vqmovn_high_s64(int32x2_t lowpart, int64x2_t wide) { 497651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqxtn2.4s v0, v1 498651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovn_high_s64(lowpart, wide); 499651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 500651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 501651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqmovn_high_u16(uint8x8_t lowpart, int16x8_t wide) { 502651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqxtn2.16b v0, v1 503651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovn_high_u16(lowpart, wide); 504651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 505651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 506651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqmovn_high_u32(uint16x4_t lowpart, int32x4_t wide) { 507651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqxtn2.8h v0, v1 508651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovn_high_u32(lowpart, wide); 509651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 510651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 511651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqmovn_high_u64(uint32x2_t lowpart, int64x2_t wide) { 512651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: uqxtn2.4s v0, v1 513651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovn_high_u64(lowpart, wide); 514651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 515651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 516651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8x16_t test_vqmovun_high_s16(uint8x8_t lowpart, int16x8_t wide) { 517651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqxtun2.16b v0, v1 518651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovun_high_s16(lowpart, wide); 519651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 520651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 521651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16x8_t test_vqmovun_high_s32(uint16x4_t lowpart, int32x4_t wide) { 522651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqxtun2.8h v0, v1 523651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovun_high_s32(lowpart, wide); 524651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 525651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 526651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32x4_t test_vqmovun_high_s64(uint32x2_t lowpart, int64x2_t wide) { 527651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: sqxtun2.4s v0, v1 528651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vqmovun_high_s64(lowpart, wide); 529651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 530651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 531651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32x4_t test_vcvtx_high_f32_f64(float32x2_t lowpart, float64x2_t wide) { 532651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: fcvtxn2 v0.4s, v1.2d 533651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcvtx_high_f32_f64(lowpart, wide); 534651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 535651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 536651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64x2_t test_vcvt_f64_f32(float32x2_t x) { 537651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: fcvtl v0.2d, v0.2s 538651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcvt_f64_f32(x); 539651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 540651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 541651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64x2_t test_vcvt_high_f64_f32(float32x4_t x) { 542651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: fcvtl2 v0.2d, v0.4s 543651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcvt_high_f64_f32(x); 544651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 545651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 546651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32x2_t test_vcvt_f32_f64(float64x2_t v) { 547651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: fcvtn v0.2s, v0.2d 548651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcvt_f32_f64(v); 549651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 550651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 551651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32x4_t test_vcvt_high_f32_f64(float32x2_t x, float64x2_t v) { 552651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: fcvtn2 v0.4s, v1.2d 553651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcvt_high_f32_f64(x, v); 554651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 555651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 556651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32x2_t test_vcvtx_f32_f64(float64x2_t v) { 557651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: fcvtxn v0.2s, v0.2d 558651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vcvtx_f32_f64(v); 559651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 560