float32_t test_vdups_lane_f32(float32x2_t src) { return vdups_lane_f32(src, 0); // CHECK-LABEL: @test_vdups_lane_f32 // CHECK: [[TMP1:%.*]] = bitcast <2 x float> %src to [[TYPE:.*]] // CHECK: [[TMP2:%.*]] = bitcast [[TYPE]] [[TMP1]] to <2 x float> // CHECK: extractelement <2 x float> [[TMP2]], i32 0 // CHECK-BE-LABEL: @test_vdups_lane_f32 // CHECK-BE: [[REV:%.*]] = shufflevector <2 x float> {{.*}}, <2 x i32> <i32 1, i32 0> // CHECK-BE: [[TMP1:%.*]] = bitcast <2 x float> [[REV]] to [[TYPE:.*]] // CHECK-BE: [[TMP2:%.*]] = bitcast [[TYPE]] [[TMP1]] to <2 x float> // CHECK-BE: extractelement <2 x float> [[TMP2]], i32 0 }
wrap_vdups_lane_f32_1 (float32x2_t a) { return vdups_lane_f32 (a, 1); }
wrap_vdups_lane_f32_0 (float32x2_t dummy, float32x2_t a) { return vdups_lane_f32 (a, 0); }
// CHECK-LABEL: @test_vdups_lane_f32 float32_t test_vdups_lane_f32(float32x2_t src) { return vdups_lane_f32(src, 0); // CHECK: extractelement <2 x float> %src, i32 0 // CHECK-BE: extractelement <2 x float> %src, i32 1 }
// CHECK-LABEL: test_vdups_lane_f32 float32_t test_vdups_lane_f32(float32x2_t a) { return vdups_lane_f32(a, 1); // CHECK: ret // CHECK-NOT: dup {{s[0-9]+}}, {{v[0-9]+}}.s[1] }
// CHECK-LABEL: define float @test_vdups_lane_f32(<2 x float> %a) #0 { // CHECK: [[TMP0:%.*]] = bitcast <2 x float> %a to <8 x i8> // CHECK: [[TMP1:%.*]] = bitcast <8 x i8> [[TMP0]] to <2 x float> // CHECK: [[VDUPS_LANE:%.*]] = extractelement <2 x float> [[TMP1]], i32 1 // CHECK: ret float [[VDUPS_LANE]] float32_t test_vdups_lane_f32(float32x2_t a) { return vdups_lane_f32(a, 1); }