Exemplo n.º 1
0
// CHECK-LABEL: test_vset_vget_lane_f16
int test_vset_vget_lane_f16(float16x4_t a) {
  float16x4_t b;
  b = vset_lane_f16(3.5, a, 3);
  float16_t c = vget_lane_f16(b, 3);
  return (int)c;
// CHECK: movz x{{[0-9]+}}, #3
}
Exemplo n.º 2
0
// CHECK: test_vset_lane_f16_2
float16x4_t test_vset_lane_f16_2(float16x4_t v1) {
  float16_t a = vget_lane_f16(v1, 0);
  return vset_lane_f16(a, v1, 3);
// CHECK: ins {{v[0-9]+}}.h[3],  {{v[0-9]+}}.h[0]
}
Exemplo n.º 3
0
// CHECK: test_vset_lane_f16
float16x4_t test_vset_lane_f16(float16x4_t v1) {
  float16_t a;
  return vset_lane_f16(a, v1, 3);
// CHECK: fmov  {{s[0-9]+}}, wzr
// CHECK-NEXT: ins {{v[0-9]+}}.h[3],  {{v[0-9]+}}.h[0]
}
Exemplo n.º 4
0
float16x4_t test_vset_lane_f16(float16_t *a1, float16x4_t a2) {
  // CHECK-LABEL: test_vset_lane_f16
  return vset_lane_f16(*a1, a2, 1);
  // CHECK insertelement <4 x i16> %a2, i16 %a1, i32 1
}
Exemplo n.º 5
0
// CHECK-LABEL: test5_vset_lane_f16
float16x4_t test5_vset_lane_f16(float16x4_t v1, float b, float c) {
  float16_t a = (float16_t)b;
  return vset_lane_f16(a, v1, 3);
// CHECK: fmov {{w[0-9]+}},  {{s[0-9]+}}
// CHECK: ins {{v[0-9]+}}.h[3],  {{w[0-9]+}}
}
Exemplo n.º 6
0
// CHECK-LABEL: test2_vset_lane_f16
float16x4_t test2_vset_lane_f16(float16x4_t v1) {
  float16_t a = 1.0;
  return vset_lane_f16(a, v1, 3);
// CHECK:  movz    {{w[0-9]+}}, #15360
// CHECK-NEXT: ins {{v[0-9]+}}.h[3], {{w[0-9]+}}
}
Exemplo n.º 7
0
// CHECK-LABEL: test_vset_lane_f16
float16x4_t test_vset_lane_f16(float16x4_t v1) {
  float16_t a = 0.0;
  return vset_lane_f16(a, v1, 3);
// CHECK: ins {{v[0-9]+}}.h[3], wzr
}
Exemplo n.º 8
0
float16x4_t test_vset_lane_f16(float16_t *a, float16x4_t b) {
  // CHECK-LABEL: test_vset_lane_f16:
  // CHECK-NEXT:  ld1.h { v0 }[3], [x0]
  // CHECK-NEXT:  ret
  return vset_lane_f16(*a, b, 3);
}
Exemplo n.º 9
0
float16x4_t test_vset_lane_f16(float16_t *a1, float16x4_t a2) {
    // CHECK-LABEL: test_vset_lane_f16
    return vset_lane_f16(*a1, a2, 1);
    // CHECK: [[A1:%[0-9]+]] = load i16, i16* %a1
    // CHECK: insertelement <4 x i16> %a2, i16 [[A1]], i32 1
}
Exemplo n.º 10
0
// CHECK-LABEL: define <4 x half> @test_vset_lane_f16(half* %a, <4 x half> %b) #0 {
// CHECK:   [[__REINT_246:%.*]] = alloca half, align 2
// CHECK:   [[__REINT1_246:%.*]] = alloca <4 x half>, align 8
// CHECK:   [[__REINT2_246:%.*]] = alloca <4 x i16>, align 8
// CHECK:   [[TMP0:%.*]] = load half, half* %a, align 2
// CHECK:   store half [[TMP0]], half* [[__REINT_246]], align 2
// CHECK:   store <4 x half> %b, <4 x half>* [[__REINT1_246]], align 8
// CHECK:   [[TMP1:%.*]] = bitcast half* [[__REINT_246]] to i16*
// CHECK:   [[TMP2:%.*]] = load i16, i16* [[TMP1]], align 2
// CHECK:   [[TMP3:%.*]] = bitcast <4 x half>* [[__REINT1_246]] to <4 x i16>*
// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[TMP3]], align 8
// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
// CHECK:   [[TMP6:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
// CHECK:   [[VSET_LANE:%.*]] = insertelement <4 x i16> [[TMP6]], i16 [[TMP2]], i32 3
// CHECK:   store <4 x i16> [[VSET_LANE]], <4 x i16>* [[__REINT2_246]], align 8
// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16>* [[__REINT2_246]] to <4 x half>*
// CHECK:   [[TMP8:%.*]] = load <4 x half>, <4 x half>* [[TMP7]], align 8
// CHECK:   ret <4 x half> [[TMP8]]
float16x4_t test_vset_lane_f16(float16_t *a, float16x4_t b) {
  return vset_lane_f16(*a, b, 3);
}