16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -O3 -triple arm64-apple-ios7 -target-feature +neon -ffreestanding -emit-llvm -o - %s | FileCheck %s 2ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN: %clang_cc1 -O3 -triple arm64_be-linux-gnu -target-feature +neon -ffreestanding -emit-llvm -o - %s | FileCheck %s --check-prefix CHECK-BE 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include <arm_neon.h> 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdupb_lane_s8 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint8_t test_vdupb_lane_s8(int8x8_t src) { 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdupb_lane_s8(src, 2); 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <8 x i8> %src, i32 2 10ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <8 x i8> %src, i32 5 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdupb_lane_u8 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint8_t test_vdupb_lane_u8(uint8x8_t src) { 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdupb_lane_u8(src, 2); 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <8 x i8> %src, i32 2 17ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <8 x i8> %src, i32 5 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vduph_lane_s16 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint16_t test_vduph_lane_s16(int16x4_t src) { 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vduph_lane_s16(src, 2); 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <4 x i16> %src, i32 2 24ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <4 x i16> %src, i32 1 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vduph_lane_u16 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint16_t test_vduph_lane_u16(uint16x4_t src) { 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vduph_lane_u16(src, 2); 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <4 x i16> %src, i32 2 31ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <4 x i16> %src, i32 1 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdups_lane_s32 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint32_t test_vdups_lane_s32(int32x2_t src) { 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdups_lane_s32(src, 0); 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <2 x i32> %src, i32 0 38ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <2 x i32> %src, i32 1 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdups_lane_u32 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint32_t test_vdups_lane_u32(uint32x2_t src) { 43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdups_lane_u32(src, 0); 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <2 x i32> %src, i32 0 45ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <2 x i32> %src, i32 1 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 48651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdups_lane_f32 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat32_t test_vdups_lane_f32(float32x2_t src) { 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdups_lane_f32(src, 0); 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <2 x float> %src, i32 0 52ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <2 x float> %src, i32 1 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdupd_lane_s64 56651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesint64_t test_vdupd_lane_s64(int64x1_t src) { 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdupd_lane_s64(src, 0); 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <1 x i64> %src, i32 0 59ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <1 x i64> %src, i32 0 60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdupd_lane_u64 63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesuint64_t test_vdupd_lane_u64(uint64x1_t src) { 64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdupd_lane_u64(src, 0); 65651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <1 x i64> %src, i32 0 66ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <1 x i64> %src, i32 0 67651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK-LABEL: @test_vdupd_lane_f64 70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesfloat64_t test_vdupd_lane_f64(float64x1_t src) { 71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines return vdupd_lane_f64(src, 0); 72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // CHECK: extractelement <1 x double> %src, i32 0 73ef8225444452a1486bd721f3285301fe84643b00Stephen Hines // CHECK-BE: extractelement <1 x double> %src, i32 0 74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 75