Skip to content

Instantly share code, notes, and snippets.

@dmiller423
Created February 22, 2022 04:38
Show Gist options
  • Save dmiller423/89b9eac1393db17f0dd658613b436b7d to your computer and use it in GitHub Desktop.
Save dmiller423/89b9eac1393db17f0dd658613b436b7d to your computer and use it in GitHub Desktop.
static void vcopy(void *vdst, void *vsrc)
{
asm volatile (
"vl %v0, 0(%r3), 0 \n"
"vst %v0, 0(%r2), 0 \n"
);
}
"
0000000000000960 <_ZL5vcopyPvS_>:
960: b3 c1 00 2b ldgr %f2,%r11
964: b3 c1 00 0f ldgr %f0,%r15
968: e3 f0 ff 50 ff 71 lay %r15,-176(%r15)
96e: e3 00 f0 a8 00 20 cg %r0,168(%r15)
974: b9 04 00 bf lgr %r11,%r15
978: e3 20 b0 a8 00 24 stg %r2,168(%r11)
97e: e3 30 b0 a0 00 24 stg %r3,160(%r11)
984: e7 00 30 00 00 06 vl %v0,0(%r3)
98a: e7 00 20 00 00 0e vst %v0,0(%r2)
990: 07 00 nopr
992: b3 cd 00 f0 lgdr %r15,%f0
996: b3 cd 00 b2 lgdr %r11,%f2
99a: 07 fe br %r14
99c: 07 07 nopr %r7
99e: 07 07 nopr %r7
"
template<int m3> static void vcopy(S390Vector *vd, S390Vector *vs) {
asm volatile (
#if 0
"vst %[vs], %[vd], 0 \n"
#else
"vl %%v0, %[vs], 0 \n"
"vst %%v0, %[vd], 0 \n"
#endif
: [vd] "=v" (vd->v)
: [vs] "v" (vs->v)
);
}
" WITH vl , vst
0000000000000b28 <_Z5vcopyILi0EEvP10S390VectorS1_>:
b28: eb bf f0 58 00 24 stmg %r11,%r15,88(%r15)
b2e: e3 f0 ff 50 ff 71 lay %r15,-176(%r15)
b34: b9 04 00 bf lgr %r11,%r15
b38: e3 20 b0 a8 00 24 stg %r2,168(%r11)
b3e: e3 30 b0 a0 00 24 stg %r3,160(%r11)
b44: c0 20 00 00 00 96 larl %r2,c70 <_ZN9__gnu_cxxL21__default_lock_policyE+0x50>
b4a: c0 e5 ff ff fd f1 brasl %r14,72c <puts@plt>
b50: e3 10 b0 a0 00 04 lg %r1,160(%r11)
b56: e7 00 10 00 30 06 vl %v0,0(%r1),3
b5c: e7 00 00 00 00 06 vl %v0,0 // ?
b62: e7 00 00 00 00 0e vst %v0,0 // ?
b68: e3 10 b0 a8 00 04 lg %r1,168(%r11)
b6e: e7 00 10 00 30 0e vst %v0,0(%r1),3
b74: 07 00 nopr
b76: eb bf b1 08 00 04 lmg %r11,%r15,264(%r11)
b7c: 07 fe br %r14
b7e: 07 07 nopr %r7
WITH vst only
0000000000000b28 <_Z5vcopyILi0EEvP10S390VectorS1_>:
b28: eb bf f0 58 00 24 stmg %r11,%r15,88(%r15)
b2e: e3 f0 ff 50 ff 71 lay %r15,-176(%r15)
b34: b9 04 00 bf lgr %r11,%r15
b38: e3 20 b0 a8 00 24 stg %r2,168(%r11)
b3e: e3 30 b0 a0 00 24 stg %r3,160(%r11)
b44: c0 20 00 00 00 96 larl %r2,c70 <_ZN9__gnu_cxxL21__default_lock_policyE+0x50>
b4a: c0 e5 ff ff fd f1 brasl %r14,72c <puts@plt>
b50: e3 10 b0 a0 00 04 lg %r1,160(%r11)
b56: e7 00 10 00 30 06 vl %v0,0(%r1),3
b5c: e7 00 00 00 00 0e vst %v0,0 // ?
b62: e3 10 b0 a8 00 04 lg %r1,168(%r11)
b68: e7 00 10 00 30 0e vst %v0,0(%r1),3
b6e: 07 00 nopr
b70: eb bf b1 08 00 04 lmg %r11,%r15,264(%r11)
b76: 07 fe br %r14
b78: 07 07 nopr %r7
b7a: 07 07 nopr %r7
b7c: 07 07 nopr %r7
b7e: 07 07 nopr %r7
"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment