uint32_t test_vdups_lane_u32(uint32x2_t src) { return vdups_lane_u32(src, 0); // CHECK-LABEL: @test_vdups_lane_u32 // 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_u32 // 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_u32_1 (uint32x2_t a) { uint32_t result = vdups_lane_u32 (a, 1); force_simd (result); return result; }
wrap_vdups_lane_u32_0 (uint32x2_t dummy, uint32x2_t a) { uint32_t result = vdups_lane_u32 (a, 0); force_simd (result); return result; }
// CHECK-LABEL: @test_vdups_lane_u32 uint32_t test_vdups_lane_u32(uint32x2_t src) { return vdups_lane_u32(src, 0); // CHECK: extractelement <2 x i32> %src, i32 0 // CHECK-BE: extractelement <2 x i32> %src, i32 1 }
// CHECK-LABEL: test_vdups_lane_u32 uint32_t test_vdups_lane_u32(uint32x2_t a) { return vdups_lane_u32(a, 1); // CHECK: umov {{w[0-9]+}}, {{v[0-9]+}}.s[1] }
// CHECK-LABEL: define i32 @test_vdups_lane_u32(<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]] uint32_t test_vdups_lane_u32(uint32x2_t a) { return vdups_lane_u32(a, 1); }
uint32x1_t test_vdups_lane_u32 (uint32x4_t a) { return vdups_lane_u32 (a, 2); }