int32_t test_vdups_lane_s32(int32x2_t src) { return vdups_lane_s32(src, 0); // CHECK-LABEL: @test_vdups_lane_s32 // CHECK: [[TMP1:%.*]] = bitcast <2 x i32> %src to [[TYPE:.*]] // CHECK: [[TMP2:%.*]] = bitcast [[TYPE]] [[TMP1]] to <2 x i32> // CHECK: extractelement <2 x i32> [[TMP2]], i32 0 // CHECK-BE-LABEL: @test_vdups_lane_s32 // CHECK-BE: [[REV:%.*]] = shufflevector <2 x i32> {{.*}}, <2 x i32> <i32 1, i32 0> // CHECK-BE: [[TMP1:%.*]] = bitcast <2 x i32> [[REV]] to [[TYPE:.*]] // CHECK-BE: [[TMP2:%.*]] = bitcast [[TYPE]] [[TMP1]] to <2 x i32> // CHECK-BE: extractelement <2 x i32> [[TMP2]], i32 0 }
wrap_vdups_lane_s32_1 (int32x2_t a) { int32_t result = vdups_lane_s32 (a, 1); force_simd (result); return result; }
wrap_vdups_lane_s32_0 (int32x2_t dummy, int32x2_t a) { int32_t result = vdups_lane_s32 (a, 0); force_simd (result); return result; }
// CHECK-LABEL: @test_vdups_lane_s32 int32_t test_vdups_lane_s32(int32x2_t src) { return vdups_lane_s32(src, 0); // CHECK: extractelement <2 x i32> %src, i32 0 // CHECK-BE: extractelement <2 x i32> %src, i32 1 }
// CHECK-LABEL: test_vdups_lane_s32 int32_t test_vdups_lane_s32(int32x2_t a) { return vdups_lane_s32(a, 1); // CHECK: umov {{w[0-9]+}}, {{v[0-9]+}}.s[1] }
// CHECK-LABEL: define i32 @test_vdups_lane_s32(<2 x i32> %a) #0 { // CHECK: [[TMP0:%.*]] = bitcast <2 x i32> %a to <8 x i8> // CHECK: [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x i32> // CHECK: [[VGET_LANE:%.*]] = extractelement <2 x i32> [[TMP1]], i32 1 // CHECK: ret i32 [[VGET_LANE]] int32_t test_vdups_lane_s32(int32x2_t a) { return vdups_lane_s32(a, 1); }
int32x1_t test_vdups_lane_s32 (int32x4_t a) { return vdups_lane_s32 (a, 2); }