285 lines
7.7 KiB
ArmAsm
285 lines
7.7 KiB
ArmAsm
//
|
|
// Generated by LLVM NVPTX Back-End
|
|
//
|
|
|
|
.version 3.1
|
|
.target sm_35, texmode_independent
|
|
.address_size 64
|
|
|
|
// .globl __vselect_i8
|
|
.func (.param .b32 func_retval0) foo1___
|
|
(
|
|
.param .align 4 .b8 foo1____param_0[4]
|
|
)
|
|
;
|
|
.extern .global .align 4 .b8 data[4096];
|
|
// @__vselect_i8
|
|
.func (.param .align 1 .b8 func_retval0[1]) __vselect_i8(
|
|
.param .align 1 .b8 __vselect_i8_param_0[1],
|
|
.param .align 1 .b8 __vselect_i8_param_1[1],
|
|
.param .align 4 .b8 __vselect_i8_param_2[4]
|
|
)
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.u32 %r0, [__vselect_i8_param_2];
|
|
setp.eq.s32 %p0, %r0, 0;
|
|
ld.param.u8 %rc0, [__vselect_i8_param_0];
|
|
ld.param.u8 %rc1, [__vselect_i8_param_1];
|
|
selp.b16 %rc0, %rc0, %rc1, %p0;
|
|
st.param.b8 [func_retval0+0], %rc0;
|
|
ret;
|
|
}
|
|
|
|
// .globl __vselect_i16
|
|
.func (.param .align 2 .b8 func_retval0[2]) __vselect_i16(
|
|
.param .align 2 .b8 __vselect_i16_param_0[2],
|
|
.param .align 2 .b8 __vselect_i16_param_1[2],
|
|
.param .align 4 .b8 __vselect_i16_param_2[4]
|
|
) // @__vselect_i16
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.u32 %r0, [__vselect_i16_param_2];
|
|
setp.eq.s32 %p0, %r0, 0;
|
|
ld.param.u16 %rs0, [__vselect_i16_param_0];
|
|
ld.param.u16 %rs1, [__vselect_i16_param_1];
|
|
selp.b16 %rs0, %rs0, %rs1, %p0;
|
|
st.param.b16 [func_retval0+0], %rs0;
|
|
ret;
|
|
}
|
|
|
|
// .globl __vselect_i64
|
|
.func (.param .align 8 .b8 func_retval0[8]) __vselect_i64(
|
|
.param .align 8 .b8 __vselect_i64_param_0[8],
|
|
.param .align 8 .b8 __vselect_i64_param_1[8],
|
|
.param .align 4 .b8 __vselect_i64_param_2[4]
|
|
) // @__vselect_i64
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.u32 %r0, [__vselect_i64_param_2];
|
|
setp.eq.s32 %p0, %r0, 0;
|
|
ld.param.u64 %rl0, [__vselect_i64_param_0];
|
|
ld.param.u64 %rl1, [__vselect_i64_param_1];
|
|
selp.b64 %rl0, %rl0, %rl1, %p0;
|
|
st.param.b64 [func_retval0+0], %rl0;
|
|
ret;
|
|
}
|
|
|
|
// .globl __aos_to_soa4_float1
|
|
.func __aos_to_soa4_float1(
|
|
.param .align 4 .b8 __aos_to_soa4_float1_param_0[4],
|
|
.param .align 4 .b8 __aos_to_soa4_float1_param_1[4],
|
|
.param .align 4 .b8 __aos_to_soa4_float1_param_2[4],
|
|
.param .align 4 .b8 __aos_to_soa4_float1_param_3[4],
|
|
.param .b64 __aos_to_soa4_float1_param_4,
|
|
.param .b64 __aos_to_soa4_float1_param_5,
|
|
.param .b64 __aos_to_soa4_float1_param_6,
|
|
.param .b64 __aos_to_soa4_float1_param_7
|
|
) // @__aos_to_soa4_float1
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.u64 %rl0, [__aos_to_soa4_float1_param_4];
|
|
ld.param.u64 %rl1, [__aos_to_soa4_float1_param_5];
|
|
ld.param.u64 %rl2, [__aos_to_soa4_float1_param_6];
|
|
ld.param.u64 %rl3, [__aos_to_soa4_float1_param_7];
|
|
ld.param.f32 %f0, [__aos_to_soa4_float1_param_0];
|
|
ld.param.f32 %f1, [__aos_to_soa4_float1_param_1];
|
|
ld.param.f32 %f2, [__aos_to_soa4_float1_param_2];
|
|
ld.param.f32 %f3, [__aos_to_soa4_float1_param_3];
|
|
st.f32 [%rl0], %f0;
|
|
st.f32 [%rl1], %f1;
|
|
st.f32 [%rl2], %f2;
|
|
st.f32 [%rl3], %f3;
|
|
ret;
|
|
}
|
|
|
|
// .globl __soa_to_aos4_float1
|
|
.func __soa_to_aos4_float1(
|
|
.param .align 4 .b8 __soa_to_aos4_float1_param_0[4],
|
|
.param .align 4 .b8 __soa_to_aos4_float1_param_1[4],
|
|
.param .align 4 .b8 __soa_to_aos4_float1_param_2[4],
|
|
.param .align 4 .b8 __soa_to_aos4_float1_param_3[4],
|
|
.param .b64 __soa_to_aos4_float1_param_4,
|
|
.param .b64 __soa_to_aos4_float1_param_5,
|
|
.param .b64 __soa_to_aos4_float1_param_6,
|
|
.param .b64 __soa_to_aos4_float1_param_7
|
|
) // @__soa_to_aos4_float1
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.u64 %rl0, [__soa_to_aos4_float1_param_4];
|
|
ld.param.u64 %rl1, [__soa_to_aos4_float1_param_5];
|
|
ld.param.u64 %rl2, [__soa_to_aos4_float1_param_6];
|
|
ld.param.u64 %rl3, [__soa_to_aos4_float1_param_7];
|
|
ld.param.f32 %f0, [__soa_to_aos4_float1_param_0];
|
|
ld.param.f32 %f1, [__soa_to_aos4_float1_param_1];
|
|
ld.param.f32 %f2, [__soa_to_aos4_float1_param_2];
|
|
ld.param.f32 %f3, [__soa_to_aos4_float1_param_3];
|
|
st.f32 [%rl0], %f0;
|
|
st.f32 [%rl1], %f1;
|
|
st.f32 [%rl2], %f2;
|
|
st.f32 [%rl3], %f3;
|
|
ret;
|
|
}
|
|
|
|
// .globl __aos_to_soa3_float1
|
|
.func __aos_to_soa3_float1(
|
|
.param .align 4 .b8 __aos_to_soa3_float1_param_0[4],
|
|
.param .align 4 .b8 __aos_to_soa3_float1_param_1[4],
|
|
.param .align 4 .b8 __aos_to_soa3_float1_param_2[4],
|
|
.param .b64 __aos_to_soa3_float1_param_3,
|
|
.param .b64 __aos_to_soa3_float1_param_4,
|
|
.param .b64 __aos_to_soa3_float1_param_5
|
|
) // @__aos_to_soa3_float1
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.u64 %rl0, [__aos_to_soa3_float1_param_3];
|
|
ld.param.u64 %rl1, [__aos_to_soa3_float1_param_4];
|
|
ld.param.u64 %rl2, [__aos_to_soa3_float1_param_5];
|
|
ld.param.f32 %f0, [__aos_to_soa3_float1_param_0];
|
|
ld.param.f32 %f1, [__aos_to_soa3_float1_param_1];
|
|
ld.param.f32 %f2, [__aos_to_soa3_float1_param_2];
|
|
st.f32 [%rl0], %f0;
|
|
st.f32 [%rl1], %f1;
|
|
st.f32 [%rl2], %f2;
|
|
ret;
|
|
}
|
|
|
|
// .globl __soa_to_aos3_float1
|
|
.func __soa_to_aos3_float1(
|
|
.param .align 4 .b8 __soa_to_aos3_float1_param_0[4],
|
|
.param .align 4 .b8 __soa_to_aos3_float1_param_1[4],
|
|
.param .align 4 .b8 __soa_to_aos3_float1_param_2[4],
|
|
.param .b64 __soa_to_aos3_float1_param_3,
|
|
.param .b64 __soa_to_aos3_float1_param_4,
|
|
.param .b64 __soa_to_aos3_float1_param_5
|
|
) // @__soa_to_aos3_float1
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.u64 %rl0, [__soa_to_aos3_float1_param_3];
|
|
ld.param.u64 %rl1, [__soa_to_aos3_float1_param_4];
|
|
ld.param.u64 %rl2, [__soa_to_aos3_float1_param_5];
|
|
ld.param.f32 %f0, [__soa_to_aos3_float1_param_0];
|
|
ld.param.f32 %f1, [__soa_to_aos3_float1_param_1];
|
|
ld.param.f32 %f2, [__soa_to_aos3_float1_param_2];
|
|
st.f32 [%rl0], %f0;
|
|
st.f32 [%rl1], %f1;
|
|
st.f32 [%rl2], %f2;
|
|
ret;
|
|
}
|
|
|
|
// .globl __rsqrt_varying_double
|
|
.func (.param .align 8 .b8 func_retval0[8]) __rsqrt_varying_double(
|
|
.param .align 8 .b8 __rsqrt_varying_double_param_0[8]
|
|
) // @__rsqrt_varying_double
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0:
|
|
ld.param.f64 %fl0, [__rsqrt_varying_double_param_0];
|
|
rsqrt.approx.f64 %fl0, %fl0;
|
|
st.param.f64 [func_retval0+0], %fl0;
|
|
ret;
|
|
}
|
|
|
|
// .globl foo___
|
|
.func foo___(
|
|
.param .align 4 .b8 foo____param_0[4]
|
|
) // @foo___
|
|
{
|
|
.reg .pred %p<396>;
|
|
.reg .s16 %rc<396>;
|
|
.reg .s16 %rs<396>;
|
|
.reg .s32 %r<396>;
|
|
.reg .s64 %rl<396>;
|
|
.reg .f32 %f<396>;
|
|
.reg .f64 %fl<396>;
|
|
|
|
// BB#0: // %allocas
|
|
mov.u64 %rl0, data;
|
|
cvta.global.u64 %rl0, %rl0;
|
|
ld.param.u32 %r0, [foo____param_0];
|
|
// Callseq Start 0
|
|
{
|
|
.reg .b32 temp_param_reg;
|
|
// <end>}
|
|
.param .b32 param0;
|
|
st.param.b32 [param0+0], %r0;
|
|
.param .b32 retval0;
|
|
call.uni (retval0),
|
|
foo1___,
|
|
(
|
|
param0
|
|
);
|
|
ld.param.b32 %r0, [retval0+0];
|
|
|
|
//{
|
|
}// Callseq End 0
|
|
mov.u32 %r1, 0;
|
|
mul.wide.s32 %rl1, %r0, 4;
|
|
add.s64 %rl0, %rl0, %rl1;
|
|
st.u32 [%rl0], %r1;
|
|
ret;
|
|
}
|
|
|