Conversion and copy stencils#

float_int#

STENCIL void float_int(int arg1) {
    // Conversion of int to float
    result_float((float)arg1);
}

arm64#

0000000000000000 <float_int>:
   0:	1e220000 	scvtf	s0, w0
   4:	14000000 	b	0 <result_float>
			4: R_AARCH64_JUMP26	result_float

armv6#

00000000 <float_int>:
   0:	ee000a10 	vmov	s0, r0
   4:	eeb80ac0 	vcvt.f32.s32	s0, s0
   8:	eafffffe 	b	0 <result_float>
			8: R_ARM_JUMP24	result_float

armv7#

00000000 <float_int>:
   0:	ee000a10 	vmov	s0, r0
   4:	eeb80ac0 	vcvt.f32.s32	s0, s0
   8:	eafffffe 	b	0 <result_float>
			8: R_ARM_JUMP24	result_float

armv7mthumb#

00000000 <float_int>:
   0:	ee00 0a10 	vmov	s0, r0
   4:	eeb8 0ac0 	vcvt.f32.s32	s0, s0
   8:	f7ff bffe 	b.w	0 <result_float>
			8: R_ARM_THM_JUMP24	result_float

armv7mthumb_fpv5#

00000000 <float_int>:
   0:	ee00 0a10 	vmov	s0, r0
   4:	eeb8 0ac0 	vcvt.f32.s32	s0, s0
   8:	f7ff bffe 	b.w	0 <result_float>
			8: R_ARM_THM_JUMP24	result_float

armv7thumb#

00000000 <float_int>:
   0:	ee00 0a10 	vmov	s0, r0
   4:	eeb8 0ac0 	vcvt.f32.s32	s0, s0
   8:	f7ff bffe 	b.w	0 <result_float>
			8: R_ARM_THM_JUMP24	result_float

armv81mthumb#

00000000 <float_int>:
   0:	ee00 0a10 	vmov	s0, r0
   4:	eeb8 0ac0 	vcvt.f32.s32	s0, s0
   8:	f7ff bffe 	b.w	0 <result_float>
			8: R_ARM_THM_JUMP24	result_float

riscv32#

00000000 <float_int>:
   0:	d0057553          	fcvt.s.w	fa0,a0
   4:	00000317          	auipc	t1,0x0
			4: R_RISCV_CALL_PLT	result_float
   8:	00030067          	jr	t1 # 4 <float_int+0x4>

riscv64#

0000000000000000 <float_int>:
   0:	d0057553          	fcvt.s.w	fa0,a0
   4:	00000317          	auipc	t1,0x0
			4: R_RISCV_CALL_PLT	result_float
   8:	00030067          	jr	t1 # 4 <float_int+0x4>

tricore#

00000000 <float_int>:
   0:	4b 04 41 41 	itof %d4,%d4
   4:	1d 00 00 00 	j 4 <float_int+0x4>
			4: R_TRICORE_24REL	result_float

x86#

00000000 <float_int>:
   0:	db 44 24 04          	fildl  0x4(%esp)
   4:	d9 5c 24 04          	fstps  0x4(%esp)
   8:	e9 fc ff ff ff       	jmp    9 <float_int+0x9>
			9: R_386_PC32	result_float

x86_64#

0000000000000000 <float_int>:
   0:	66 0f ef c0          	pxor   %xmm0,%xmm0
   4:	f3 0f 2a c7          	cvtsi2ss %edi,%xmm0
   8:	e9 00 00 00 00       	jmp    d <.LC3+0x1>
			9: R_X86_64_PLT32	result_float-0x4

int_float#

STENCIL void int_float(float arg1) {
    // Conversion of float to int
    result_int((int)arg1);
}

arm64#

0000000000000000 <int_float>:
   0:	1e380000 	fcvtzs	w0, s0
   4:	14000000 	b	0 <result_int>
			4: R_AARCH64_JUMP26	result_int

armv6#

00000000 <int_float>:
   0:	eefd7ac0 	vcvt.s32.f32	s15, s0
   4:	ee170a90 	vmov	r0, s15
   8:	eafffffe 	b	0 <result_int>
			8: R_ARM_JUMP24	result_int

armv7#

00000000 <int_float>:
   0:	eefd7ac0 	vcvt.s32.f32	s15, s0
   4:	ee170a90 	vmov	r0, s15
   8:	eafffffe 	b	0 <result_int>
			8: R_ARM_JUMP24	result_int

armv7mthumb#

00000000 <int_float>:
   0:	eefd 7ac0 	vcvt.s32.f32	s15, s0
   4:	ee17 0a90 	vmov	r0, s15
   8:	f7ff bffe 	b.w	0 <result_int>
			8: R_ARM_THM_JUMP24	result_int

armv7mthumb_fpv5#

00000000 <int_float>:
   0:	eefd 7ac0 	vcvt.s32.f32	s15, s0
   4:	ee17 0a90 	vmov	r0, s15
   8:	f7ff bffe 	b.w	0 <result_int>
			8: R_ARM_THM_JUMP24	result_int

armv7thumb#

00000000 <int_float>:
   0:	eefd 7ac0 	vcvt.s32.f32	s15, s0
   4:	ee17 0a90 	vmov	r0, s15
   8:	f7ff bffe 	b.w	0 <result_int>
			8: R_ARM_THM_JUMP24	result_int

armv81mthumb#

00000000 <int_float>:
   0:	eefd 7ac0 	vcvt.s32.f32	s15, s0
   4:	ee17 0a90 	vmov	r0, s15
   8:	f7ff bffe 	b.w	0 <result_int>
			8: R_ARM_THM_JUMP24	result_int

riscv32#

00000000 <int_float>:
   0:	c0051553          	fcvt.w.s	a0,fa0,rtz
   4:	00000317          	auipc	t1,0x0
			4: R_RISCV_CALL_PLT	result_int
   8:	00030067          	jr	t1 # 4 <int_float+0x4>

riscv64#

0000000000000000 <int_float>:
   0:	c0051553          	fcvt.w.s	a0,fa0,rtz
   4:	2501                	sext.w	a0,a0
   6:	00000317          	auipc	t1,0x0
			6: R_RISCV_CALL_PLT	result_int
   a:	00030067          	jr	t1 # 6 <int_float+0x6>

tricore#

00000000 <int_float>:
   0:	4b 04 31 41 	ftoiz %d4,%d4
   4:	1d 00 00 00 	j 4 <int_float+0x4>
			4: R_TRICORE_24REL	result_int

x86#

00000000 <int_float>:
   0:	83 ec 1c             	sub    $0x1c,%esp
   3:	d9 7c 24 0e          	fnstcw 0xe(%esp)
   7:	d9 44 24 20          	flds   0x20(%esp)
   b:	0f b7 44 24 0e       	movzwl 0xe(%esp),%eax
  10:	80 cc 0c             	or     $0xc,%ah
  13:	66 89 44 24 0c       	mov    %ax,0xc(%esp)
  18:	d9 6c 24 0c          	fldcw  0xc(%esp)
  1c:	db 5c 24 20          	fistpl 0x20(%esp)
  20:	d9 6c 24 0e          	fldcw  0xe(%esp)
  24:	83 c4 1c             	add    $0x1c,%esp
  27:	e9 fc ff ff ff       	jmp    28 <int_float+0x28>
			28: R_386_PC32	result_int

x86_64#

0000000000000000 <int_float>:
   0:	f3 0f 2c f8          	cvttss2si %xmm0,%edi
   4:	e9 00 00 00 00       	jmp    9 <.LC2+0x1>
			5: R_X86_64_PLT32	result_int-0x4

float_intarr#

STENCIL void float_intarr(void) {
    // Element-wise conversion of int array to float
    aux_arr_float_int(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_float_ref();
}

arm64#

0000000000000000 <float_intarr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <float_intarr>
			20: R_AARCH64_CALL26	aux_arr_float_int
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_float_ref>
			28: R_AARCH64_JUMP26	result_float_ref

armv6#

00000000 <float_intarr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <float_intarr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <float_intarr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <float_intarr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <float_intarr>
			14: R_ARM_CALL	aux_arr_float_int
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_float_ref>
			1c: R_ARM_JUMP24	result_float_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <float_intarr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <float_intarr>
			20: R_ARM_CALL	aux_arr_float_int
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_float_ref>
			28: R_ARM_JUMP24	result_float_ref

armv7mthumb#

00000000 <float_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <float_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <float_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <float_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <float_intarr>
			a: R_ARM_THM_CALL	aux_arr_float_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_float_ref>
			12: R_ARM_THM_JUMP24	result_float_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <float_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <float_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <float_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <float_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <float_intarr>
			a: R_ARM_THM_CALL	aux_arr_float_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_float_ref>
			12: R_ARM_THM_JUMP24	result_float_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <float_intarr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <float_intarr>
			1c: R_ARM_THM_CALL	aux_arr_float_int
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_float_ref>
			24: R_ARM_THM_JUMP24	result_float_ref

armv81mthumb#

00000000 <float_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <float_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <float_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <float_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <float_intarr>
			a: R_ARM_THM_CALL	aux_arr_float_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_float_ref>
			12: R_ARM_THM_JUMP24	result_float_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <float_intarr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <float_intarr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_float_int
  20:	000080e7          	jalr	ra # 1c <float_intarr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_float_ref
  2c:	00030067          	jr	t1 # 28 <float_intarr+0x28>

riscv64#

0000000000000000 <float_intarr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <float_intarr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_float_int
  20:	000080e7          	jalr	ra # 1c <float_intarr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_float_ref
  2c:	00030067          	jr	t1 # 28 <float_intarr+0x28>

tricore#

00000000 <float_intarr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <float_intarr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <float_intarr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <float_intarr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <float_intarr+0x18>
			18: R_TRICORE_24REL	aux_arr_float_int
  1c:	1d 00 00 00 	j 1c <float_intarr+0x1c>
			1c: R_TRICORE_24REL	result_float_ref

x86#

00000000 <float_intarr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <float_intarr+0x14>
			14: R_386_PC32	aux_arr_float_int
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <float_intarr+0x1c>
			1c: R_386_PC32	result_float_ref

x86_64#

0000000000000000 <float_intarr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <float_intarr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <float_intarr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <float_intarr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <float_intarr+0x20>
			1c: R_X86_64_PLT32	aux_arr_float_int-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_float_ref-0x4

int_floatarr#

STENCIL void int_floatarr(void) {
    // Element-wise conversion of float array to int
    aux_arr_int_float(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_int_ref();
}

arm64#

0000000000000000 <int_floatarr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <int_floatarr>
			20: R_AARCH64_CALL26	aux_arr_int_float
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_int_ref>
			28: R_AARCH64_JUMP26	result_int_ref

armv6#

00000000 <int_floatarr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <int_floatarr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <int_floatarr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <int_floatarr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <int_floatarr>
			14: R_ARM_CALL	aux_arr_int_float
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_int_ref>
			1c: R_ARM_JUMP24	result_int_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <int_floatarr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <int_floatarr>
			20: R_ARM_CALL	aux_arr_int_float
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_int_ref>
			28: R_ARM_JUMP24	result_int_ref

armv7mthumb#

00000000 <int_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <int_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <int_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <int_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <int_floatarr>
			a: R_ARM_THM_CALL	aux_arr_int_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <int_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <int_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <int_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <int_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <int_floatarr>
			a: R_ARM_THM_CALL	aux_arr_int_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <int_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <int_floatarr>
			1c: R_ARM_THM_CALL	aux_arr_int_float
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_int_ref>
			24: R_ARM_THM_JUMP24	result_int_ref

armv81mthumb#

00000000 <int_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <int_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <int_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <int_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <int_floatarr>
			a: R_ARM_THM_CALL	aux_arr_int_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <int_floatarr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <int_floatarr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_int_float
  20:	000080e7          	jalr	ra # 1c <int_floatarr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <int_floatarr+0x28>

riscv64#

0000000000000000 <int_floatarr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <int_floatarr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_int_float
  20:	000080e7          	jalr	ra # 1c <int_floatarr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <int_floatarr+0x28>

tricore#

00000000 <int_floatarr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <int_floatarr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <int_floatarr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <int_floatarr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <int_floatarr+0x18>
			18: R_TRICORE_24REL	aux_arr_int_float
  1c:	1d 00 00 00 	j 1c <int_floatarr+0x1c>
			1c: R_TRICORE_24REL	result_int_ref

x86#

00000000 <int_floatarr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <int_floatarr+0x14>
			14: R_386_PC32	aux_arr_int_float
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <int_floatarr+0x1c>
			1c: R_386_PC32	result_int_ref

x86_64#

0000000000000000 <int_floatarr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <int_floatarr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <int_floatarr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <int_floatarr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <int_floatarr+0x20>
			1c: R_X86_64_PLT32	aux_arr_int_float-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_int_ref-0x4

bool_intarr#

STENCIL void bool_intarr(void) {
    // Element-wise conversion of int array to bool
    aux_arr_bool_int(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_int_ref();
}

arm64#

0000000000000000 <bool_intarr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <bool_intarr>
			20: R_AARCH64_CALL26	aux_arr_bool_int
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_int_ref>
			28: R_AARCH64_JUMP26	result_int_ref

armv6#

00000000 <bool_intarr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <bool_intarr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <bool_intarr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <bool_intarr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <bool_intarr>
			14: R_ARM_CALL	aux_arr_bool_int
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_int_ref>
			1c: R_ARM_JUMP24	result_int_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <bool_intarr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <bool_intarr>
			20: R_ARM_CALL	aux_arr_bool_int
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_int_ref>
			28: R_ARM_JUMP24	result_int_ref

armv7mthumb#

00000000 <bool_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <bool_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <bool_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <bool_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <bool_intarr>
			a: R_ARM_THM_CALL	aux_arr_bool_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <bool_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <bool_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <bool_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <bool_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <bool_intarr>
			a: R_ARM_THM_CALL	aux_arr_bool_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <bool_intarr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <bool_intarr>
			1c: R_ARM_THM_CALL	aux_arr_bool_int
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_int_ref>
			24: R_ARM_THM_JUMP24	result_int_ref

armv81mthumb#

00000000 <bool_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <bool_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <bool_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <bool_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <bool_intarr>
			a: R_ARM_THM_CALL	aux_arr_bool_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <bool_intarr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <bool_intarr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_bool_int
  20:	000080e7          	jalr	ra # 1c <bool_intarr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <bool_intarr+0x28>

riscv64#

0000000000000000 <bool_intarr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <bool_intarr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_bool_int
  20:	000080e7          	jalr	ra # 1c <bool_intarr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <bool_intarr+0x28>

tricore#

00000000 <bool_intarr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <bool_intarr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <bool_intarr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <bool_intarr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <bool_intarr+0x18>
			18: R_TRICORE_24REL	aux_arr_bool_int
  1c:	1d 00 00 00 	j 1c <bool_intarr+0x1c>
			1c: R_TRICORE_24REL	result_int_ref

x86#

00000000 <bool_intarr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <bool_intarr+0x14>
			14: R_386_PC32	aux_arr_bool_int
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <bool_intarr+0x1c>
			1c: R_386_PC32	result_int_ref

x86_64#

0000000000000000 <bool_intarr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <bool_intarr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <bool_intarr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <bool_intarr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <bool_intarr+0x20>
			1c: R_X86_64_PLT32	aux_arr_bool_int-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_int_ref-0x4

bool_floatarr#

STENCIL void bool_floatarr(void) {
    // Element-wise conversion of float array to bool
    aux_arr_bool_float(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_int_ref();
}

arm64#

0000000000000000 <bool_floatarr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <bool_floatarr>
			20: R_AARCH64_CALL26	aux_arr_bool_float
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_int_ref>
			28: R_AARCH64_JUMP26	result_int_ref

armv6#

00000000 <bool_floatarr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <bool_floatarr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <bool_floatarr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <bool_floatarr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <bool_floatarr>
			14: R_ARM_CALL	aux_arr_bool_float
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_int_ref>
			1c: R_ARM_JUMP24	result_int_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <bool_floatarr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <bool_floatarr>
			20: R_ARM_CALL	aux_arr_bool_float
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_int_ref>
			28: R_ARM_JUMP24	result_int_ref

armv7mthumb#

00000000 <bool_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <bool_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <bool_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <bool_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <bool_floatarr>
			a: R_ARM_THM_CALL	aux_arr_bool_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <bool_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <bool_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <bool_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <bool_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <bool_floatarr>
			a: R_ARM_THM_CALL	aux_arr_bool_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <bool_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <bool_floatarr>
			1c: R_ARM_THM_CALL	aux_arr_bool_float
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_int_ref>
			24: R_ARM_THM_JUMP24	result_int_ref

armv81mthumb#

00000000 <bool_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <bool_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <bool_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <bool_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <bool_floatarr>
			a: R_ARM_THM_CALL	aux_arr_bool_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <bool_floatarr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <bool_floatarr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_bool_float
  20:	000080e7          	jalr	ra # 1c <bool_floatarr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <bool_floatarr+0x28>

riscv64#

0000000000000000 <bool_floatarr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <bool_floatarr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_bool_float
  20:	000080e7          	jalr	ra # 1c <bool_floatarr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <bool_floatarr+0x28>

tricore#

00000000 <bool_floatarr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <bool_floatarr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <bool_floatarr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <bool_floatarr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <bool_floatarr+0x18>
			18: R_TRICORE_24REL	aux_arr_bool_float
  1c:	1d 00 00 00 	j 1c <bool_floatarr+0x1c>
			1c: R_TRICORE_24REL	result_int_ref

x86#

00000000 <bool_floatarr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <bool_floatarr+0x14>
			14: R_386_PC32	aux_arr_bool_float
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <bool_floatarr+0x1c>
			1c: R_386_PC32	result_int_ref

x86_64#

0000000000000000 <bool_floatarr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <bool_floatarr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <bool_floatarr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <bool_floatarr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <bool_floatarr+0x20>
			1c: R_X86_64_PLT32	aux_arr_bool_float-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_int_ref-0x4

float_bytearr#

STENCIL void float_bytearr(void) {
    // Element-wise conversion of byte array to float
    aux_arr_float_byte(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_float_ref();
}

arm64#

0000000000000000 <float_bytearr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <float_bytearr>
			20: R_AARCH64_CALL26	aux_arr_float_byte
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_float_ref>
			28: R_AARCH64_JUMP26	result_float_ref

armv6#

00000000 <float_bytearr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <float_bytearr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <float_bytearr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <float_bytearr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <float_bytearr>
			14: R_ARM_CALL	aux_arr_float_byte
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_float_ref>
			1c: R_ARM_JUMP24	result_float_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <float_bytearr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <float_bytearr>
			20: R_ARM_CALL	aux_arr_float_byte
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_float_ref>
			28: R_ARM_JUMP24	result_float_ref

armv7mthumb#

00000000 <float_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <float_bytearr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <float_bytearr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <float_bytearr+0x20>)
   a:	f7ff fffe 	bl	0 <float_bytearr>
			a: R_ARM_THM_CALL	aux_arr_float_byte
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_float_ref>
			12: R_ARM_THM_JUMP24	result_float_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <float_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <float_bytearr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <float_bytearr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <float_bytearr+0x20>)
   a:	f7ff fffe 	bl	0 <float_bytearr>
			a: R_ARM_THM_CALL	aux_arr_float_byte
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_float_ref>
			12: R_ARM_THM_JUMP24	result_float_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <float_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <float_bytearr>
			1c: R_ARM_THM_CALL	aux_arr_float_byte
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_float_ref>
			24: R_ARM_THM_JUMP24	result_float_ref

armv81mthumb#

00000000 <float_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <float_bytearr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <float_bytearr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <float_bytearr+0x20>)
   a:	f7ff fffe 	bl	0 <float_bytearr>
			a: R_ARM_THM_CALL	aux_arr_float_byte
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_float_ref>
			12: R_ARM_THM_JUMP24	result_float_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <float_bytearr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <float_bytearr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_float_byte
  20:	000080e7          	jalr	ra # 1c <float_bytearr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_float_ref
  2c:	00030067          	jr	t1 # 28 <float_bytearr+0x28>

riscv64#

0000000000000000 <float_bytearr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <float_bytearr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_float_byte
  20:	000080e7          	jalr	ra # 1c <float_bytearr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_float_ref
  2c:	00030067          	jr	t1 # 28 <float_bytearr+0x28>

tricore#

00000000 <float_bytearr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <float_bytearr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <float_bytearr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <float_bytearr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <float_bytearr+0x18>
			18: R_TRICORE_24REL	aux_arr_float_byte
  1c:	1d 00 00 00 	j 1c <float_bytearr+0x1c>
			1c: R_TRICORE_24REL	result_float_ref

x86#

00000000 <float_bytearr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <float_bytearr+0x14>
			14: R_386_PC32	aux_arr_float_byte
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <float_bytearr+0x1c>
			1c: R_386_PC32	result_float_ref

x86_64#

0000000000000000 <float_bytearr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <float_bytearr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <float_bytearr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <float_bytearr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <float_bytearr+0x20>
			1c: R_X86_64_PLT32	aux_arr_float_byte-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_float_ref-0x4

int_bytearr#

STENCIL void int_bytearr(void) {
    // Element-wise conversion of byte array to int
    aux_arr_int_byte(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_int_ref();
}

arm64#

0000000000000000 <int_bytearr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <int_bytearr>
			20: R_AARCH64_CALL26	aux_arr_int_byte
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_int_ref>
			28: R_AARCH64_JUMP26	result_int_ref

armv6#

00000000 <int_bytearr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <int_bytearr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <int_bytearr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <int_bytearr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <int_bytearr>
			14: R_ARM_CALL	aux_arr_int_byte
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_int_ref>
			1c: R_ARM_JUMP24	result_int_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <int_bytearr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <int_bytearr>
			20: R_ARM_CALL	aux_arr_int_byte
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_int_ref>
			28: R_ARM_JUMP24	result_int_ref

armv7mthumb#

00000000 <int_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <int_bytearr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <int_bytearr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <int_bytearr+0x20>)
   a:	f7ff fffe 	bl	0 <int_bytearr>
			a: R_ARM_THM_CALL	aux_arr_int_byte
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <int_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <int_bytearr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <int_bytearr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <int_bytearr+0x20>)
   a:	f7ff fffe 	bl	0 <int_bytearr>
			a: R_ARM_THM_CALL	aux_arr_int_byte
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <int_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <int_bytearr>
			1c: R_ARM_THM_CALL	aux_arr_int_byte
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_int_ref>
			24: R_ARM_THM_JUMP24	result_int_ref

armv81mthumb#

00000000 <int_bytearr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <int_bytearr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <int_bytearr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <int_bytearr+0x20>)
   a:	f7ff fffe 	bl	0 <int_bytearr>
			a: R_ARM_THM_CALL	aux_arr_int_byte
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_int_ref>
			12: R_ARM_THM_JUMP24	result_int_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <int_bytearr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <int_bytearr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_int_byte
  20:	000080e7          	jalr	ra # 1c <int_bytearr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <int_bytearr+0x28>

riscv64#

0000000000000000 <int_bytearr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <int_bytearr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_int_byte
  20:	000080e7          	jalr	ra # 1c <int_bytearr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_int_ref
  2c:	00030067          	jr	t1 # 28 <int_bytearr+0x28>

tricore#

00000000 <int_bytearr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <int_bytearr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <int_bytearr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <int_bytearr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <int_bytearr+0x18>
			18: R_TRICORE_24REL	aux_arr_int_byte
  1c:	1d 00 00 00 	j 1c <int_bytearr+0x1c>
			1c: R_TRICORE_24REL	result_int_ref

x86#

00000000 <int_bytearr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <int_bytearr+0x14>
			14: R_386_PC32	aux_arr_int_byte
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <int_bytearr+0x1c>
			1c: R_386_PC32	result_int_ref

x86_64#

0000000000000000 <int_bytearr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <int_bytearr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <int_bytearr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <int_bytearr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <int_bytearr+0x20>
			1c: R_X86_64_PLT32	aux_arr_int_byte-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_int_ref-0x4

byte_intarr#

STENCIL void byte_intarr(void) {
    // Element-wise conversion of int array to byte with saturation, nan is converted to 0
    aux_arr_byte_int(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_byte_ref();
}

arm64#

0000000000000000 <byte_intarr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <byte_intarr>
			20: R_AARCH64_CALL26	aux_arr_byte_int
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_byte_ref>
			28: R_AARCH64_JUMP26	result_byte_ref

armv6#

00000000 <byte_intarr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <byte_intarr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <byte_intarr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <byte_intarr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <byte_intarr>
			14: R_ARM_CALL	aux_arr_byte_int
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_byte_ref>
			1c: R_ARM_JUMP24	result_byte_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <byte_intarr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <byte_intarr>
			20: R_ARM_CALL	aux_arr_byte_int
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_byte_ref>
			28: R_ARM_JUMP24	result_byte_ref

armv7mthumb#

00000000 <byte_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <byte_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <byte_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <byte_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <byte_intarr>
			a: R_ARM_THM_CALL	aux_arr_byte_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_byte_ref>
			12: R_ARM_THM_JUMP24	result_byte_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <byte_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <byte_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <byte_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <byte_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <byte_intarr>
			a: R_ARM_THM_CALL	aux_arr_byte_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_byte_ref>
			12: R_ARM_THM_JUMP24	result_byte_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <byte_intarr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <byte_intarr>
			1c: R_ARM_THM_CALL	aux_arr_byte_int
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_byte_ref>
			24: R_ARM_THM_JUMP24	result_byte_ref

armv81mthumb#

00000000 <byte_intarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <byte_intarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <byte_intarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <byte_intarr+0x20>)
   a:	f7ff fffe 	bl	0 <byte_intarr>
			a: R_ARM_THM_CALL	aux_arr_byte_int
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_byte_ref>
			12: R_ARM_THM_JUMP24	result_byte_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <byte_intarr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <byte_intarr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_byte_int
  20:	000080e7          	jalr	ra # 1c <byte_intarr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_byte_ref
  2c:	00030067          	jr	t1 # 28 <byte_intarr+0x28>

riscv64#

0000000000000000 <byte_intarr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <byte_intarr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_byte_int
  20:	000080e7          	jalr	ra # 1c <byte_intarr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_byte_ref
  2c:	00030067          	jr	t1 # 28 <byte_intarr+0x28>

tricore#

00000000 <byte_intarr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <byte_intarr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <byte_intarr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <byte_intarr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <byte_intarr+0x18>
			18: R_TRICORE_24REL	aux_arr_byte_int
  1c:	1d 00 00 00 	j 1c <byte_intarr+0x1c>
			1c: R_TRICORE_24REL	result_byte_ref

x86#

00000000 <byte_intarr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <byte_intarr+0x14>
			14: R_386_PC32	aux_arr_byte_int
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <byte_intarr+0x1c>
			1c: R_386_PC32	result_byte_ref

x86_64#

0000000000000000 <byte_intarr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <byte_intarr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <byte_intarr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <byte_intarr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <byte_intarr+0x20>
			1c: R_X86_64_PLT32	aux_arr_byte_int-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_byte_ref-0x4

byte_floatarr#

STENCIL void byte_floatarr(void) {
    // Element-wise conversion of float array to byte with saturation, nan is converted to 0
    aux_arr_byte_float(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1));
    result_byte_ref();
}

arm64#

0000000000000000 <byte_floatarr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	b9400042 	ldr	w2, [x2]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <byte_floatarr>
			20: R_AARCH64_CALL26	aux_arr_byte_float
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_byte_ref>
			28: R_AARCH64_JUMP26	result_byte_ref

armv6#

00000000 <byte_floatarr>:
   0:	e59f3018 	ldr	r3, [pc, #24]	@ 20 <byte_floatarr+0x20>
   4:	e92d4010 	push	{r4, lr}
   8:	e59f1014 	ldr	r1, [pc, #20]	@ 24 <byte_floatarr+0x24>
   c:	e59f0014 	ldr	r0, [pc, #20]	@ 28 <byte_floatarr+0x28>
  10:	e5932000 	ldr	r2, [r3]
  14:	ebfffffe 	bl	0 <byte_floatarr>
			14: R_ARM_CALL	aux_arr_byte_float
  18:	e8bd4010 	pop	{r4, lr}
  1c:	eafffffe 	b	0 <result_byte_ref>
			1c: R_ARM_JUMP24	result_byte_ref
	...
			20: R_ARM_ABS32	ref_arg1
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7#

00000000 <byte_floatarr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg1
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg1
   8:	e92d4010 	push	{r4, lr}
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e5932000 	ldr	r2, [r3]
  18:	e3000000 	movw	r0, #0
			18: R_ARM_MOVW_ABS_NC	ref_arg0
  1c:	e3400000 	movt	r0, #0
			1c: R_ARM_MOVT_ABS	ref_arg0
  20:	ebfffffe 	bl	0 <byte_floatarr>
			20: R_ARM_CALL	aux_arr_byte_float
  24:	e8bd4010 	pop	{r4, lr}
  28:	eafffffe 	b	0 <result_byte_ref>
			28: R_ARM_JUMP24	result_byte_ref

armv7mthumb#

00000000 <byte_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <byte_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <byte_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <byte_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <byte_floatarr>
			a: R_ARM_THM_CALL	aux_arr_byte_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_byte_ref>
			12: R_ARM_THM_JUMP24	result_byte_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <byte_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <byte_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <byte_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <byte_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <byte_floatarr>
			a: R_ARM_THM_CALL	aux_arr_byte_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_byte_ref>
			12: R_ARM_THM_JUMP24	result_byte_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <byte_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0300 	movw	r3, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0300 	movt	r3, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	681a      	ldr	r2, [r3, #0]
  1c:	f7ff fffe 	bl	0 <byte_floatarr>
			1c: R_ARM_THM_CALL	aux_arr_byte_float
  20:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  24:	f7ff bffe 	b.w	0 <result_byte_ref>
			24: R_ARM_THM_JUMP24	result_byte_ref

armv81mthumb#

00000000 <byte_floatarr>:
   0:	b508      	push	{r3, lr}
   2:	4b05      	ldr	r3, [pc, #20]	@ (18 <byte_floatarr+0x18>)
   4:	4905      	ldr	r1, [pc, #20]	@ (1c <byte_floatarr+0x1c>)
   6:	681a      	ldr	r2, [r3, #0]
   8:	4805      	ldr	r0, [pc, #20]	@ (20 <byte_floatarr+0x20>)
   a:	f7ff fffe 	bl	0 <byte_floatarr>
			a: R_ARM_THM_CALL	aux_arr_byte_float
   e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  12:	f7ff bffe 	b.w	0 <result_byte_ref>
			12: R_ARM_THM_JUMP24	result_byte_ref
  16:	bf00      	nop
	...
			18: R_ARM_ABS32	ref_arg1
			1c: R_ARM_ABS32	ref_out
			20: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <byte_floatarr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg1
   4:	00062603          	lw	a2,0(a2) # 0 <byte_floatarr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	1141                	addi	sp,sp,-16
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_byte_float
  20:	000080e7          	jalr	ra # 1c <byte_floatarr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_byte_ref
  2c:	00030067          	jr	t1 # 28 <byte_floatarr+0x28>

riscv64#

0000000000000000 <byte_floatarr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00062603          	lw	a2,0(a2) # 2 <byte_floatarr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_byte_float
  20:	000080e7          	jalr	ra # 1c <byte_floatarr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_byte_ref
  2c:	00030067          	jr	t1 # 28 <byte_floatarr+0x28>

tricore#

00000000 <byte_floatarr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <byte_floatarr>>
			4: R_TRICORE_LO2	ref_arg1
   8:	91 00 00 50 	movh.a %a5,0
			8: R_TRICORE_HIADJ	ref_out
   c:	91 00 00 40 	movh.a %a4,0
			c: R_TRICORE_HIADJ	ref_arg0
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <byte_floatarr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <byte_floatarr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <byte_floatarr+0x18>
			18: R_TRICORE_24REL	aux_arr_byte_float
  1c:	1d 00 00 00 	j 1c <byte_floatarr+0x1c>
			1c: R_TRICORE_24REL	result_byte_ref

x86#

00000000 <byte_floatarr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg1
   9:	68 00 00 00 00       	push   $0x0
			a: R_386_32	ref_out
   e:	68 00 00 00 00       	push   $0x0
			f: R_386_32	ref_arg0
  13:	e8 fc ff ff ff       	call   14 <byte_floatarr+0x14>
			14: R_386_PC32	aux_arr_byte_float
  18:	83 c4 18             	add    $0x18,%esp
  1b:	e9 fc ff ff ff       	jmp    1c <byte_floatarr+0x1c>
			1c: R_386_PC32	result_byte_ref

x86_64#

0000000000000000 <byte_floatarr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # b <byte_floatarr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	8b 10                	mov    (%rax),%edx
   d:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 14 <byte_floatarr+0x14>
			10: R_X86_64_PC32	ref_out-0x4
  14:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1b <byte_floatarr+0x1b>
			17: R_X86_64_PC32	ref_arg0-0x4
  1b:	e8 00 00 00 00       	call   20 <byte_floatarr+0x20>
			1c: R_X86_64_PLT32	aux_arr_byte_float-0x4
  20:	48 83 c4 08          	add    $0x8,%rsp
  24:	e9 00 00 00 00       	jmp    29 <.LC1+0x1>
			25: R_X86_64_PLT32	result_byte_ref-0x4

copy32_arr#

STENCIL void copy32_arr(void) {
    // Strided copy of 32 bit elements
    aux_arr_copy32(REF(ref_arg0), REF(ref_out), REF(ref_arg1));
    result_void();
}

arm64#

0000000000000000 <copy32_arr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	91000042 	add	x2, x2, #0x0
			10: R_AARCH64_ADD_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <copy32_arr>
			20: R_AARCH64_CALL26	aux_arr_copy32
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_void>
			28: R_AARCH64_JUMP26	result_void

armv6#

00000000 <copy32_arr>:
   0:	e92d4010 	push	{r4, lr}
   4:	e59f2010 	ldr	r2, [pc, #16]	@ 1c <copy32_arr+0x1c>
   8:	e59f1010 	ldr	r1, [pc, #16]	@ 20 <copy32_arr+0x20>
   c:	e59f0010 	ldr	r0, [pc, #16]	@ 24 <copy32_arr+0x24>
  10:	ebfffffe 	bl	0 <copy32_arr>
			10: R_ARM_CALL	aux_arr_copy32
  14:	e8bd4010 	pop	{r4, lr}
  18:	eafffffe 	b	0 <result_void>
			18: R_ARM_JUMP24	result_void
	...
			1c: R_ARM_ABS32	ref_arg1
			20: R_ARM_ABS32	ref_out
			24: R_ARM_ABS32	ref_arg0

armv7#

00000000 <copy32_arr>:
   0:	e92d4010 	push	{r4, lr}
   4:	e3002000 	movw	r2, #0
			4: R_ARM_MOVW_ABS_NC	ref_arg1
   8:	e3402000 	movt	r2, #0
			8: R_ARM_MOVT_ABS	ref_arg1
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e3000000 	movw	r0, #0
			14: R_ARM_MOVW_ABS_NC	ref_arg0
  18:	e3400000 	movt	r0, #0
			18: R_ARM_MOVT_ABS	ref_arg0
  1c:	ebfffffe 	bl	0 <copy32_arr>
			1c: R_ARM_CALL	aux_arr_copy32
  20:	e8bd4010 	pop	{r4, lr}
  24:	eafffffe 	b	0 <result_void>
			24: R_ARM_JUMP24	result_void

armv7mthumb#

00000000 <copy32_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a04      	ldr	r2, [pc, #16]	@ (14 <copy32_arr+0x14>)
   4:	4904      	ldr	r1, [pc, #16]	@ (18 <copy32_arr+0x18>)
   6:	4805      	ldr	r0, [pc, #20]	@ (1c <copy32_arr+0x1c>)
   8:	f7ff fffe 	bl	0 <copy32_arr>
			8: R_ARM_THM_CALL	aux_arr_copy32
   c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  10:	f7ff bffe 	b.w	0 <result_void>
			10: R_ARM_THM_JUMP24	result_void
	...
			14: R_ARM_ABS32	ref_arg1
			18: R_ARM_ABS32	ref_out
			1c: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <copy32_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a04      	ldr	r2, [pc, #16]	@ (14 <copy32_arr+0x14>)
   4:	4904      	ldr	r1, [pc, #16]	@ (18 <copy32_arr+0x18>)
   6:	4805      	ldr	r0, [pc, #20]	@ (1c <copy32_arr+0x1c>)
   8:	f7ff fffe 	bl	0 <copy32_arr>
			8: R_ARM_THM_CALL	aux_arr_copy32
   c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  10:	f7ff bffe 	b.w	0 <result_void>
			10: R_ARM_THM_JUMP24	result_void
	...
			14: R_ARM_ABS32	ref_arg1
			18: R_ARM_ABS32	ref_out
			1c: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <copy32_arr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0200 	movw	r2, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0200 	movt	r2, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	f7ff fffe 	bl	0 <copy32_arr>
			1a: R_ARM_THM_CALL	aux_arr_copy32
  1e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  22:	f7ff bffe 	b.w	0 <result_void>
			22: R_ARM_THM_JUMP24	result_void
  26:	bf00      	nop

armv81mthumb#

00000000 <copy32_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a04      	ldr	r2, [pc, #16]	@ (14 <copy32_arr+0x14>)
   4:	4904      	ldr	r1, [pc, #16]	@ (18 <copy32_arr+0x18>)
   6:	4805      	ldr	r0, [pc, #20]	@ (1c <copy32_arr+0x1c>)
   8:	f7ff fffe 	bl	0 <copy32_arr>
			8: R_ARM_THM_CALL	aux_arr_copy32
   c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  10:	f7ff bffe 	b.w	0 <result_void>
			10: R_ARM_THM_JUMP24	result_void
	...
			14: R_ARM_ABS32	ref_arg1
			18: R_ARM_ABS32	ref_out
			1c: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <copy32_arr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00060613          	mv	a2,a2
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_copy32
  20:	000080e7          	jalr	ra # 1c <copy32_arr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_void
  2c:	00030067          	jr	t1 # 28 <copy32_arr+0x28>

riscv64#

0000000000000000 <copy32_arr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00060613          	mv	a2,a2
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_copy32
  20:	000080e7          	jalr	ra # 1c <copy32_arr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_void
  2c:	00030067          	jr	t1 # 28 <copy32_arr+0x28>

tricore#

00000000 <copy32_arr>:
   0:	91 00 00 60 	movh.a %a6,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	91 00 00 50 	movh.a %a5,0
			4: R_TRICORE_HIADJ	ref_out
   8:	91 00 00 40 	movh.a %a4,0
			8: R_TRICORE_HIADJ	ref_arg0
   c:	d9 66 00 00 	lea %a6,[%a6]0 <0 <copy32_arr>>
			c: R_TRICORE_LO2	ref_arg1
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <copy32_arr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <copy32_arr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <copy32_arr+0x18>
			18: R_TRICORE_24REL	aux_arr_copy32
  1c:	1d 00 00 00 	j 1c <copy32_arr+0x1c>
			1c: R_TRICORE_24REL	result_void

x86#

00000000 <copy32_arr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	68 00 00 00 00       	push   $0x0
			4: R_386_32	ref_arg1
   8:	68 00 00 00 00       	push   $0x0
			9: R_386_32	ref_out
   d:	68 00 00 00 00       	push   $0x0
			e: R_386_32	ref_arg0
  12:	e8 fc ff ff ff       	call   13 <copy32_arr+0x13>
			13: R_386_PC32	aux_arr_copy32
  17:	83 c4 18             	add    $0x18,%esp
  1a:	e9 fc ff ff ff       	jmp    1b <copy32_arr+0x1b>
			1b: R_386_PC32	result_void

x86_64#

0000000000000000 <copy32_arr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 15 00 00 00 00 	lea    0x0(%rip),%rdx        # b <copy32_arr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 12 <copy32_arr+0x12>
			e: R_X86_64_PC32	ref_out-0x4
  12:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 19 <copy32_arr+0x19>
			15: R_X86_64_PC32	ref_arg0-0x4
  19:	e8 00 00 00 00       	call   1e <copy32_arr+0x1e>
			1a: R_X86_64_PLT32	aux_arr_copy32-0x4
  1e:	48 83 c4 08          	add    $0x8,%rsp
  22:	e9 00 00 00 00       	jmp    27 <.LC11+0x3>
			23: R_X86_64_PLT32	result_void-0x4

copy8_arr#

STENCIL void copy8_arr(void) {
    // Strided copy of bytes
    aux_arr_copy8(REF(ref_arg0), REF(ref_out), REF(ref_arg1));
    result_void();
}

arm64#

0000000000000000 <copy8_arr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000002 	adrp	x2, 0 <ref_arg1>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   8:	90000001 	adrp	x1, 0 <ref_out>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_out
   c:	910003fd 	mov	x29, sp
  10:	91000042 	add	x2, x2, #0x0
			10: R_AARCH64_ADD_ABS_LO12_NC	ref_arg1
  14:	91000021 	add	x1, x1, #0x0
			14: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  18:	90000000 	adrp	x0, 0 <ref_arg0>
			18: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  1c:	91000000 	add	x0, x0, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  20:	94000000 	bl	0 <copy8_arr>
			20: R_AARCH64_CALL26	aux_arr_copy8
  24:	a8c17bfd 	ldp	x29, x30, [sp], #16
  28:	14000000 	b	0 <result_void>
			28: R_AARCH64_JUMP26	result_void

armv6#

00000000 <copy8_arr>:
   0:	e92d4010 	push	{r4, lr}
   4:	e59f2010 	ldr	r2, [pc, #16]	@ 1c <copy8_arr+0x1c>
   8:	e59f1010 	ldr	r1, [pc, #16]	@ 20 <copy8_arr+0x20>
   c:	e59f0010 	ldr	r0, [pc, #16]	@ 24 <copy8_arr+0x24>
  10:	ebfffffe 	bl	0 <copy8_arr>
			10: R_ARM_CALL	aux_arr_copy8
  14:	e8bd4010 	pop	{r4, lr}
  18:	eafffffe 	b	0 <result_void>
			18: R_ARM_JUMP24	result_void
	...
			1c: R_ARM_ABS32	ref_arg1
			20: R_ARM_ABS32	ref_out
			24: R_ARM_ABS32	ref_arg0

armv7#

00000000 <copy8_arr>:
   0:	e92d4010 	push	{r4, lr}
   4:	e3002000 	movw	r2, #0
			4: R_ARM_MOVW_ABS_NC	ref_arg1
   8:	e3402000 	movt	r2, #0
			8: R_ARM_MOVT_ABS	ref_arg1
   c:	e3001000 	movw	r1, #0
			c: R_ARM_MOVW_ABS_NC	ref_out
  10:	e3401000 	movt	r1, #0
			10: R_ARM_MOVT_ABS	ref_out
  14:	e3000000 	movw	r0, #0
			14: R_ARM_MOVW_ABS_NC	ref_arg0
  18:	e3400000 	movt	r0, #0
			18: R_ARM_MOVT_ABS	ref_arg0
  1c:	ebfffffe 	bl	0 <copy8_arr>
			1c: R_ARM_CALL	aux_arr_copy8
  20:	e8bd4010 	pop	{r4, lr}
  24:	eafffffe 	b	0 <result_void>
			24: R_ARM_JUMP24	result_void

armv7mthumb#

00000000 <copy8_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a04      	ldr	r2, [pc, #16]	@ (14 <copy8_arr+0x14>)
   4:	4904      	ldr	r1, [pc, #16]	@ (18 <copy8_arr+0x18>)
   6:	4805      	ldr	r0, [pc, #20]	@ (1c <copy8_arr+0x1c>)
   8:	f7ff fffe 	bl	0 <copy8_arr>
			8: R_ARM_THM_CALL	aux_arr_copy8
   c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  10:	f7ff bffe 	b.w	0 <result_void>
			10: R_ARM_THM_JUMP24	result_void
	...
			14: R_ARM_ABS32	ref_arg1
			18: R_ARM_ABS32	ref_out
			1c: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <copy8_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a04      	ldr	r2, [pc, #16]	@ (14 <copy8_arr+0x14>)
   4:	4904      	ldr	r1, [pc, #16]	@ (18 <copy8_arr+0x18>)
   6:	4805      	ldr	r0, [pc, #20]	@ (1c <copy8_arr+0x1c>)
   8:	f7ff fffe 	bl	0 <copy8_arr>
			8: R_ARM_THM_CALL	aux_arr_copy8
   c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  10:	f7ff bffe 	b.w	0 <result_void>
			10: R_ARM_THM_JUMP24	result_void
	...
			14: R_ARM_ABS32	ref_arg1
			18: R_ARM_ABS32	ref_out
			1c: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <copy8_arr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0200 	movw	r2, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0200 	movt	r2, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0100 	movw	r1, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_out
   e:	f2c0 0100 	movt	r1, #0
			e: R_ARM_THM_MOVT_ABS	ref_out
  12:	f240 0000 	movw	r0, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  16:	f2c0 0000 	movt	r0, #0
			16: R_ARM_THM_MOVT_ABS	ref_arg0
  1a:	f7ff fffe 	bl	0 <copy8_arr>
			1a: R_ARM_THM_CALL	aux_arr_copy8
  1e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  22:	f7ff bffe 	b.w	0 <result_void>
			22: R_ARM_THM_JUMP24	result_void
  26:	bf00      	nop

armv81mthumb#

00000000 <copy8_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a04      	ldr	r2, [pc, #16]	@ (14 <copy8_arr+0x14>)
   4:	4904      	ldr	r1, [pc, #16]	@ (18 <copy8_arr+0x18>)
   6:	4805      	ldr	r0, [pc, #20]	@ (1c <copy8_arr+0x1c>)
   8:	f7ff fffe 	bl	0 <copy8_arr>
			8: R_ARM_THM_CALL	aux_arr_copy8
   c:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  10:	f7ff bffe 	b.w	0 <result_void>
			10: R_ARM_THM_JUMP24	result_void
	...
			14: R_ARM_ABS32	ref_arg1
			18: R_ARM_ABS32	ref_out
			1c: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <copy8_arr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00060613          	mv	a2,a2
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	c606                	sw	ra,12(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_copy8
  20:	000080e7          	jalr	ra # 1c <copy8_arr+0x1c>
  24:	40b2                	lw	ra,12(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_void
  2c:	00030067          	jr	t1 # 28 <copy8_arr+0x28>

riscv64#

0000000000000000 <copy8_arr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000617          	auipc	a2,0x0
			2: R_RISCV_PCREL_HI20	ref_arg1
   6:	00060613          	mv	a2,a2
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000597          	auipc	a1,0x0
			a: R_RISCV_PCREL_HI20	ref_out
   e:	00058593          	mv	a1,a1
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000517          	auipc	a0,0x0
			12: R_RISCV_PCREL_HI20	ref_arg0
  16:	00050513          	mv	a0,a0
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	e406                	sd	ra,8(sp)
  1c:	00000097          	auipc	ra,0x0
			1c: R_RISCV_CALL_PLT	aux_arr_copy8
  20:	000080e7          	jalr	ra # 1c <copy8_arr+0x1c>
  24:	60a2                	ld	ra,8(sp)
  26:	0141                	addi	sp,sp,16
  28:	00000317          	auipc	t1,0x0
			28: R_RISCV_CALL_PLT	result_void
  2c:	00030067          	jr	t1 # 28 <copy8_arr+0x28>

tricore#

00000000 <copy8_arr>:
   0:	91 00 00 60 	movh.a %a6,0
			0: R_TRICORE_HIADJ	ref_arg1
   4:	91 00 00 50 	movh.a %a5,0
			4: R_TRICORE_HIADJ	ref_out
   8:	91 00 00 40 	movh.a %a4,0
			8: R_TRICORE_HIADJ	ref_arg0
   c:	d9 66 00 00 	lea %a6,[%a6]0 <0 <copy8_arr>>
			c: R_TRICORE_LO2	ref_arg1
  10:	d9 55 00 00 	lea %a5,[%a5]0 <0 <copy8_arr>>
			10: R_TRICORE_LO2	ref_out
  14:	d9 44 00 00 	lea %a4,[%a4]0 <0 <copy8_arr>>
			14: R_TRICORE_LO2	ref_arg0
  18:	6d 00 00 00 	call 18 <copy8_arr+0x18>
			18: R_TRICORE_24REL	aux_arr_copy8
  1c:	1d 00 00 00 	j 1c <copy8_arr+0x1c>
			1c: R_TRICORE_24REL	result_void

x86#

00000000 <copy8_arr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	68 00 00 00 00       	push   $0x0
			4: R_386_32	ref_arg1
   8:	68 00 00 00 00       	push   $0x0
			9: R_386_32	ref_out
   d:	68 00 00 00 00       	push   $0x0
			e: R_386_32	ref_arg0
  12:	e8 fc ff ff ff       	call   13 <copy8_arr+0x13>
			13: R_386_PC32	aux_arr_copy8
  17:	83 c4 18             	add    $0x18,%esp
  1a:	e9 fc ff ff ff       	jmp    1b <copy8_arr+0x1b>
			1b: R_386_PC32	result_void

x86_64#

0000000000000000 <copy8_arr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 15 00 00 00 00 	lea    0x0(%rip),%rdx        # b <copy8_arr+0xb>
			7: R_X86_64_PC32	ref_arg1-0x4
   b:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 12 <copy8_arr+0x12>
			e: R_X86_64_PC32	ref_out-0x4
  12:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 19 <copy8_arr+0x19>
			15: R_X86_64_PC32	ref_arg0-0x4
  19:	e8 00 00 00 00       	call   1e <copy8_arr+0x1e>
			1a: R_X86_64_PLT32	aux_arr_copy8-0x4
  1e:	48 83 c4 08          	add    $0x8,%rsp
  22:	e9 00 00 00 00       	jmp    27 <.LC11+0x3>
			23: R_X86_64_PLT32	result_void-0x4

put32_arr#

SHORT_LOOP STENCIL void put32_arr(void) {
    // Writes the m elements of ref_arg1 in place to the elements i * m to i * m + m - 1
    // of a ring buffer (ref_out is the memory of the buffer ref_arg0, i = ref_arg2, m = ref_arg3)
    const int *a = REF(ref_arg1);
    int m = *(int *)REF(ref_arg3);
    int *o = (int *)REF(ref_out) + *(int *)REF(ref_arg2) * m;
    for (int i = 0; i < m; i++) o[i] = a[i];
    result_void();
}

arm64#

0000000000000000 <put32_arr>:
   0:	90000001 	adrp	x1, 0 <ref_arg3>
			0: R_AARCH64_ADR_PREL_PG_HI21	ref_arg3
   4:	90000000 	adrp	x0, 0 <ref_arg2>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg2
   8:	b9400023 	ldr	w3, [x1]
			8: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg3
   c:	b9400002 	ldr	w2, [x0]
			c: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg2
  10:	1b027c62 	mul	w2, w3, w2
  14:	7100007f 	cmp	w3, #0x0
  18:	540001ad 	b.le	4c <put32_arr+0x4c>
  1c:	90000000 	adrp	x0, 0 <ref_out>
			1c: R_AARCH64_ADR_PREL_PG_HI21	ref_out
  20:	90000004 	adrp	x4, 0 <ref_arg1>
			20: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
  24:	91000000 	add	x0, x0, #0x0
			24: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  28:	937e7c63 	sbfiz	x3, x3, #2, #32
  2c:	91000084 	add	x4, x4, #0x0
			2c: R_AARCH64_ADD_ABS_LO12_NC	ref_arg1
  30:	8b22c802 	add	x2, x0, w2, sxtw #2
  34:	d2800000 	mov	x0, #0x0                   	// #0
  38:	b8606881 	ldr	w1, [x4, x0]
  3c:	b8206841 	str	w1, [x2, x0]
  40:	91001000 	add	x0, x0, #0x4
  44:	eb00007f 	cmp	x3, x0
  48:	54ffff81 	b.ne	38 <put32_arr+0x38>  // b.any
  4c:	14000000 	b	0 <result_void>
			4c: R_AARCH64_JUMP26	result_void

armv6#

00000000 <put32_arr>:
   0:	e59f2038 	ldr	r2, [pc, #56]	@ 40 <put32_arr+0x40>
   4:	e59f3038 	ldr	r3, [pc, #56]	@ 44 <put32_arr+0x44>
   8:	e5920000 	ldr	r0, [r2]
   c:	e5933000 	ldr	r3, [r3]
  10:	e3500000 	cmp	r0, #0
  14:	e0010093 	mul	r1, r3, r0
  18:	da000007 	ble	3c <put32_arr+0x3c>
  1c:	e59f3024 	ldr	r3, [pc, #36]	@ 48 <put32_arr+0x48>
  20:	e59f2024 	ldr	r2, [pc, #36]	@ 4c <put32_arr+0x4c>
  24:	e0830100 	add	r0, r3, r0, lsl #2
  28:	e0822101 	add	r2, r2, r1, lsl #2
  2c:	e4931004 	ldr	r1, [r3], #4
  30:	e1530000 	cmp	r3, r0
  34:	e4821004 	str	r1, [r2], #4
  38:	1afffffb 	bne	2c <put32_arr+0x2c>
  3c:	eafffffe 	b	0 <result_void>
			3c: R_ARM_JUMP24	result_void
	...
			40: R_ARM_ABS32	ref_arg3
			44: R_ARM_ABS32	ref_arg2
			48: R_ARM_ABS32	ref_arg1
			4c: R_ARM_ABS32	ref_out

armv7#

00000000 <put32_arr>:
   0:	e3002000 	movw	r2, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg3
   4:	e3402000 	movt	r2, #0
			4: R_ARM_MOVT_ABS	ref_arg3
   8:	e3003000 	movw	r3, #0
			8: R_ARM_MOVW_ABS_NC	ref_arg2
   c:	e3403000 	movt	r3, #0
			c: R_ARM_MOVT_ABS	ref_arg2
  10:	e5920000 	ldr	r0, [r2]
  14:	e5933000 	ldr	r3, [r3]
  18:	e3500000 	cmp	r0, #0
  1c:	e0010093 	mul	r1, r3, r0
  20:	da000009 	ble	4c <put32_arr+0x4c>
  24:	e3003000 	movw	r3, #0
			24: R_ARM_MOVW_ABS_NC	ref_arg1
  28:	e3403000 	movt	r3, #0
			28: R_ARM_MOVT_ABS	ref_arg1
  2c:	e3002000 	movw	r2, #0
			2c: R_ARM_MOVW_ABS_NC	ref_out
  30:	e3402000 	movt	r2, #0
			30: R_ARM_MOVT_ABS	ref_out
  34:	e0822101 	add	r2, r2, r1, lsl #2
  38:	e0830100 	add	r0, r3, r0, lsl #2
  3c:	e4931004 	ldr	r1, [r3], #4
  40:	e4821004 	str	r1, [r2], #4
  44:	e1530000 	cmp	r3, r0
  48:	1afffffb 	bne	3c <put32_arr+0x3c>
  4c:	eafffffe 	b	0 <result_void>
			4c: R_ARM_JUMP24	result_void

armv7mthumb#

00000000 <put32_arr>:
   0:	4a0c      	ldr	r2, [pc, #48]	@ (34 <put32_arr+0x34>)
   2:	4b0d      	ldr	r3, [pc, #52]	@ (38 <put32_arr+0x38>)
   4:	6810      	ldr	r0, [r2, #0]
   6:	6819      	ldr	r1, [r3, #0]
   8:	2800      	cmp	r0, #0
   a:	fb00 f101 	mul.w	r1, r0, r1
   e:	dd0e      	ble.n	2e <put32_arr+0x2e>
  10:	4b0a      	ldr	r3, [pc, #40]	@ (3c <put32_arr+0x3c>)
  12:	4a0b      	ldr	r2, [pc, #44]	@ (40 <put32_arr+0x40>)
  14:	f101 4180 	add.w	r1, r1, #1073741824	@ 0x40000000
  18:	3901      	subs	r1, #1
  1a:	eb02 0281 	add.w	r2, r2, r1, lsl #2
  1e:	eb03 0080 	add.w	r0, r3, r0, lsl #2
  22:	f853 1b04 	ldr.w	r1, [r3], #4
  26:	f842 1f04 	str.w	r1, [r2, #4]!
  2a:	4283      	cmp	r3, r0
  2c:	d1f9      	bne.n	22 <put32_arr+0x22>
  2e:	f7ff bffe 	b.w	0 <result_void>
			2e: R_ARM_THM_JUMP24	result_void
  32:	bf00      	nop
	...
			34: R_ARM_ABS32	ref_arg3
			38: R_ARM_ABS32	ref_arg2
			3c: R_ARM_ABS32	ref_arg1
			40: R_ARM_ABS32	ref_out

armv7mthumb_fpv5#

00000000 <put32_arr>:
   0:	4a0c      	ldr	r2, [pc, #48]	@ (34 <put32_arr+0x34>)
   2:	4b0d      	ldr	r3, [pc, #52]	@ (38 <put32_arr+0x38>)
   4:	6810      	ldr	r0, [r2, #0]
   6:	6819      	ldr	r1, [r3, #0]
   8:	2800      	cmp	r0, #0
   a:	fb00 f101 	mul.w	r1, r0, r1
   e:	dd0e      	ble.n	2e <put32_arr+0x2e>
  10:	f06f 4c40 	mvn.w	ip, #3221225472	@ 0xc0000000
  14:	4b09      	ldr	r3, [pc, #36]	@ (3c <put32_arr+0x3c>)
  16:	4a0a      	ldr	r2, [pc, #40]	@ (40 <put32_arr+0x40>)
  18:	448c      	add	ip, r1
  1a:	eb03 0080 	add.w	r0, r3, r0, lsl #2
  1e:	eb02 028c 	add.w	r2, r2, ip, lsl #2
  22:	f853 1b04 	ldr.w	r1, [r3], #4
  26:	4283      	cmp	r3, r0
  28:	f842 1f04 	str.w	r1, [r2, #4]!
  2c:	d1f9      	bne.n	22 <put32_arr+0x22>
  2e:	f7ff bffe 	b.w	0 <result_void>
			2e: R_ARM_THM_JUMP24	result_void
  32:	bf00      	nop
	...
			34: R_ARM_ABS32	ref_arg3
			38: R_ARM_ABS32	ref_arg2
			3c: R_ARM_ABS32	ref_arg1
			40: R_ARM_ABS32	ref_out

armv7thumb#

00000000 <put32_arr>:
   0:	f240 0200 	movw	r2, #0
			0: R_ARM_THM_MOVW_ABS_NC	ref_arg3
   4:	f2c0 0200 	movt	r2, #0
			4: R_ARM_THM_MOVT_ABS	ref_arg3
   8:	f240 0300 	movw	r3, #0
			8: R_ARM_THM_MOVW_ABS_NC	ref_arg2
   c:	f2c0 0300 	movt	r3, #0
			c: R_ARM_THM_MOVT_ABS	ref_arg2
  10:	6810      	ldr	r0, [r2, #0]
  12:	6819      	ldr	r1, [r3, #0]
  14:	2800      	cmp	r0, #0
  16:	fb00 f101 	mul.w	r1, r0, r1
  1a:	dd11      	ble.n	40 <put32_arr+0x40>
  1c:	f240 0300 	movw	r3, #0
			1c: R_ARM_THM_MOVW_ABS_NC	ref_arg1
  20:	f2c0 0300 	movt	r3, #0
			20: R_ARM_THM_MOVT_ABS	ref_arg1
  24:	f240 0200 	movw	r2, #0
			24: R_ARM_THM_MOVW_ABS_NC	ref_out
  28:	f2c0 0200 	movt	r2, #0
			28: R_ARM_THM_MOVT_ABS	ref_out
  2c:	eb02 0281 	add.w	r2, r2, r1, lsl #2
  30:	eb03 0080 	add.w	r0, r3, r0, lsl #2
  34:	f853 1b04 	ldr.w	r1, [r3], #4
  38:	f842 1b04 	str.w	r1, [r2], #4
  3c:	4283      	cmp	r3, r0
  3e:	d1f9      	bne.n	34 <put32_arr+0x34>
  40:	f7ff bffe 	b.w	0 <result_void>
			40: R_ARM_THM_JUMP24	result_void

armv81mthumb#

00000000 <put32_arr>:
   0:	4b12      	ldr	r3, [pc, #72]	@ (4c <put32_arr+0x4c>)
   2:	4a13      	ldr	r2, [pc, #76]	@ (50 <put32_arr+0x50>)
   4:	681b      	ldr	r3, [r3, #0]
   6:	6811      	ldr	r1, [r2, #0]
   8:	2b00      	cmp	r3, #0
   a:	fb03 f101 	mul.w	r1, r3, r1
   e:	dd1b      	ble.n	48 <put32_arr+0x48>
  10:	b500      	push	{lr}
  12:	ea4f 0e83 	mov.w	lr, r3, lsl #2
  16:	f1ae 0e04 	sub.w	lr, lr, #4
  1a:	ea4f 0e9e 	mov.w	lr, lr, lsr #2
  1e:	f10e 0e01 	add.w	lr, lr, #1
  22:	f04e e001 	dls	lr, lr
  26:	4b0b      	ldr	r3, [pc, #44]	@ (54 <put32_arr+0x54>)
  28:	f101 4180 	add.w	r1, r1, #1073741824	@ 0x40000000
  2c:	3901      	subs	r1, #1
  2e:	4a0a      	ldr	r2, [pc, #40]	@ (58 <put32_arr+0x58>)
  30:	eb03 0381 	add.w	r3, r3, r1, lsl #2
  34:	f852 1b04 	ldr.w	r1, [r2], #4
  38:	f843 1f04 	str.w	r1, [r3, #4]!
  3c:	f00f c007 	le	lr, 34 <put32_arr+0x34>
  40:	f85d eb04 	ldr.w	lr, [sp], #4
  44:	f7ff bffe 	b.w	0 <result_void>
			44: R_ARM_THM_JUMP24	result_void
  48:	f7ff bffe 	b.w	0 <result_void>
			48: R_ARM_THM_JUMP24	result_void
	...
			4c: R_ARM_ABS32	ref_arg3
			50: R_ARM_ABS32	ref_arg2
			54: R_ARM_ABS32	ref_out
			58: R_ARM_ABS32	ref_arg1

riscv32#

00000000 <put32_arr>:
   0:	00000717          	auipc	a4,0x0
			0: R_RISCV_PCREL_HI20	ref_arg3
   4:	00072703          	lw	a4,0(a4) # 0 <put32_arr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	02e05c63          	blez	a4,40 <put32_arr+0x40>
   c:	00000797          	auipc	a5,0x0
			c: R_RISCV_PCREL_HI20	ref_arg2
  10:	0007a783          	lw	a5,0(a5) # c <put32_arr+0xc>
			10: R_RISCV_PCREL_LO12_I	.L0 
  14:	00271613          	slli	a2,a4,0x2
  18:	00000697          	auipc	a3,0x0
			18: R_RISCV_PCREL_HI20	ref_out
  1c:	00068693          	mv	a3,a3
			1c: R_RISCV_PCREL_LO12_I	.L0 
  20:	02f70733          	mul	a4,a4,a5
  24:	00000797          	auipc	a5,0x0
			24: R_RISCV_PCREL_HI20	ref_arg1
  28:	00078793          	mv	a5,a5
			28: R_RISCV_PCREL_LO12_I	.L0 
  2c:	963e                	add	a2,a2,a5
  2e:	070a                	slli	a4,a4,0x2
  30:	9736                	add	a4,a4,a3
  32:	4394                	lw	a3,0(a5)
  34:	0791                	addi	a5,a5,4 # 28 <put32_arr+0x28>
  36:	0711                	addi	a4,a4,4
  38:	fed72e23          	sw	a3,-4(a4)
  3c:	fec79be3          	bne	a5,a2,32 <put32_arr+0x32>
  40:	00000317          	auipc	t1,0x0
			40: R_RISCV_CALL_PLT	result_void
  44:	00030067          	jr	t1 # 40 <put32_arr+0x40>

riscv64#

0000000000000000 <put32_arr>:
   0:	00000617          	auipc	a2,0x0
			0: R_RISCV_PCREL_HI20	ref_arg3
   4:	00062603          	lw	a2,0(a2) # 0 <put32_arr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	00000717          	auipc	a4,0x0
			8: R_RISCV_PCREL_HI20	ref_arg2
   c:	00072703          	lw	a4,0(a4) # 8 <put32_arr+0x8>
			c: R_RISCV_PCREL_LO12_I	.L0 
  10:	02c7073b          	mulw	a4,a4,a2
  14:	02c05563          	blez	a2,3e <put32_arr+0x3e>
  18:	00000797          	auipc	a5,0x0
			18: R_RISCV_PCREL_HI20	ref_arg1
  1c:	00078793          	mv	a5,a5
			1c: R_RISCV_PCREL_LO12_I	.L0 
  20:	070a                	slli	a4,a4,0x2
  22:	060a                	slli	a2,a2,0x2
  24:	00000697          	auipc	a3,0x0
			24: R_RISCV_PCREL_HI20	ref_out
  28:	00068693          	mv	a3,a3
			28: R_RISCV_PCREL_LO12_I	.L0 
  2c:	9736                	add	a4,a4,a3
  2e:	963e                	add	a2,a2,a5
  30:	4394                	lw	a3,0(a5)
  32:	0791                	addi	a5,a5,4 # 1c <put32_arr+0x1c>
  34:	0711                	addi	a4,a4,4
  36:	fed72e23          	sw	a3,-4(a4)
  3a:	fec79be3          	bne	a5,a2,30 <put32_arr+0x30>
  3e:	00000317          	auipc	t1,0x0
			3e: R_RISCV_CALL_PLT	result_void
  42:	00030067          	jr	t1 # 3e <put32_arr+0x3e>

tricore#

00000000 <put32_arr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg3
   4:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <put32_arr>>
			4: R_TRICORE_LO2	ref_arg3
   8:	91 00 00 20 	movh.a %a2,0
			8: R_TRICORE_HIADJ	ref_arg2
   c:	19 22 00 00 	ld.w %d2,[%a2]0 <0 <put32_arr>>
			c: R_TRICORE_LO2	ref_arg2
  10:	e2 42       	mul %d2,%d4
  12:	bf 14 73 00 	jlt %d4,1,f8 <put32_arr+0xf8>
  16:	91 00 00 30 	movh.a %a3,0
			16: R_TRICORE_HIADJ	ref_out
  1a:	8f 22 00 30 	sh %d3,%d2,2
  1e:	91 00 00 20 	movh.a %a2,0
			1e: R_TRICORE_HIADJ	ref_arg1
  22:	d9 33 00 00 	lea %a3,[%a3]0 <0 <put32_arr>>
			22: R_TRICORE_LO2	ref_out
  26:	8f 74 00 21 	and %d2,%d4,7
  2a:	01 33 00 36 	addsc.a %a3,%a3,%d3,0
  2e:	d9 22 00 00 	lea %a2,[%a2]0 <0 <put32_arr>>
			2e: R_TRICORE_LO2	ref_arg1
  32:	82 03       	mov %d3,0
  34:	df 02 3a 00 	jeq %d2,0,a8 <put32_arr+0xa8>
  38:	df 12 2f 00 	jeq %d2,1,96 <put32_arr+0x96>
  3c:	df 22 26 00 	jeq %d2,2,88 <put32_arr+0x88>
  40:	df 32 1d 00 	jeq %d2,3,7a <put32_arr+0x7a>
  44:	df 42 14 00 	jeq %d2,4,6c <put32_arr+0x6c>
  48:	df 52 0b 00 	jeq %d2,5,5e <put32_arr+0x5e>
  4c:	df 62 59 80 	jne %d2,6,fe <put32_arr+0xfe>
  50:	40 24       	mov.aa %a4,%a2
  52:	54 42       	ld.w %d2,[%a4]
  54:	40 34       	mov.aa %a4,%a3
  56:	b0 42       	add.a %a2,4
  58:	b0 43       	add.a %a3,4
  5a:	74 42       	st.w [%a4],%d2
  5c:	c2 13       	add %d3,1
  5e:	40 24       	mov.aa %a4,%a2
  60:	54 42       	ld.w %d2,[%a4]
  62:	40 34       	mov.aa %a4,%a3
  64:	b0 42       	add.a %a2,4
  66:	b0 43       	add.a %a3,4
  68:	74 42       	st.w [%a4],%d2
  6a:	c2 13       	add %d3,1
  6c:	40 24       	mov.aa %a4,%a2
  6e:	54 42       	ld.w %d2,[%a4]
  70:	40 34       	mov.aa %a4,%a3
  72:	b0 42       	add.a %a2,4
  74:	b0 43       	add.a %a3,4
  76:	74 42       	st.w [%a4],%d2
  78:	c2 13       	add %d3,1
  7a:	40 24       	mov.aa %a4,%a2
  7c:	54 42       	ld.w %d2,[%a4]
  7e:	40 34       	mov.aa %a4,%a3
  80:	b0 42       	add.a %a2,4
  82:	b0 43       	add.a %a3,4
  84:	74 42       	st.w [%a4],%d2
  86:	c2 13       	add %d3,1
  88:	40 24       	mov.aa %a4,%a2
  8a:	54 42       	ld.w %d2,[%a4]
  8c:	40 34       	mov.aa %a4,%a3
  8e:	b0 42       	add.a %a2,4
  90:	b0 43       	add.a %a3,4
  92:	74 42       	st.w [%a4],%d2
  94:	c2 13       	add %d3,1
  96:	40 24       	mov.aa %a4,%a2
  98:	54 42       	ld.w %d2,[%a4]
  9a:	40 34       	mov.aa %a4,%a3
  9c:	74 42       	st.w [%a4],%d2
  9e:	c2 13       	add %d3,1
  a0:	b0 42       	add.a %a2,4
  a2:	b0 43       	add.a %a3,4
  a4:	5f 34 2a 00 	jeq %d4,%d3,f8 <put32_arr+0xf8>
  a8:	40 25       	mov.aa %a5,%a2
  aa:	40 34       	mov.aa %a4,%a3
  ac:	b0 45       	add.a %a5,4
  ae:	54 22       	ld.w %d2,[%a2]
  b0:	74 32       	st.w [%a3],%d2
  b2:	b0 44       	add.a %a4,4
  b4:	54 52       	ld.w %d2,[%a5]
  b6:	74 42       	st.w [%a4],%d2
  b8:	19 52 04 00 	ld.w %d2,[%a5]4
  bc:	59 42 04 00 	st.w [%a4]4,%d2
  c0:	19 52 08 00 	ld.w %d2,[%a5]8
  c4:	59 42 08 00 	st.w [%a4]8,%d2
  c8:	19 52 0c 00 	ld.w %d2,[%a5]12
  cc:	59 42 0c 00 	st.w [%a4]12,%d2
  d0:	19 52 10 00 	ld.w %d2,[%a5]16
  d4:	59 42 10 00 	st.w [%a4]16,%d2
  d8:	19 52 14 00 	ld.w %d2,[%a5]20
  dc:	59 42 14 00 	st.w [%a4]20,%d2
  e0:	19 52 18 00 	ld.w %d2,[%a5]24
  e4:	59 42 18 00 	st.w [%a4]24,%d2
  e8:	1b 83 00 30 	addi %d3,%d3,8
  ec:	d9 52 1c 00 	lea %a2,[%a5]28
  f0:	d9 43 1c 00 	lea %a3,[%a4]28
  f4:	5f 34 da ff 	jne %d4,%d3,a8 <put32_arr+0xa8>
  f8:	6d 00 00 00 	call f8 <put32_arr+0xf8>
			f8: R_TRICORE_24REL	result_void
  fc:	00 90       	ret 
  fe:	40 24       	mov.aa %a4,%a2
 100:	54 42       	ld.w %d2,[%a4]
 102:	40 34       	mov.aa %a4,%a3
 104:	b0 42       	add.a %a2,4
 106:	b0 43       	add.a %a3,4
 108:	74 42       	st.w [%a4],%d2
 10a:	82 13       	mov %d3,1
 10c:	3c a2       	j 50 <put32_arr+0x50>

x86#

00000000 <put32_arr>:
   0:	53                   	push   %ebx
   1:	8b 0d 00 00 00 00    	mov    0x0,%ecx
			3: R_386_32	ref_arg3
   7:	8b 1d 00 00 00 00    	mov    0x0,%ebx
			9: R_386_32	ref_arg2
   d:	0f af d9             	imul   %ecx,%ebx
  10:	85 c9                	test   %ecx,%ecx
  12:	7e 21                	jle    35 <put32_arr+0x35>
  14:	c1 e3 02             	shl    $0x2,%ebx
  17:	31 c0                	xor    %eax,%eax
  19:	8d b4 26 00 00 00 00 	lea    0x0(%esi,%eiz,1),%esi
  20:	8b 14 85 00 00 00 00 	mov    0x0(,%eax,4),%edx
			23: R_386_32	ref_arg1
  27:	89 94 83 00 00 00 00 	mov    %edx,0x0(%ebx,%eax,4)
			2a: R_386_32	ref_out
  2e:	83 c0 01             	add    $0x1,%eax
  31:	39 c1                	cmp    %eax,%ecx
  33:	75 eb                	jne    20 <put32_arr+0x20>
  35:	5b                   	pop    %ebx
  36:	e9 fc ff ff ff       	jmp    37 <put32_arr+0x37>
			37: R_386_PC32	result_void

x86_64#

0000000000000000 <put32_arr>:
   0:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # 7 <put32_arr+0x7>
			3: R_X86_64_PC32	ref_arg3-0x4
   7:	48 63 08             	movslq (%rax),%rcx
   a:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # 11 <put32_arr+0x11>
			d: R_X86_64_PC32	ref_arg2-0x4
  11:	8b 38                	mov    (%rax),%edi
  13:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 1a <put32_arr+0x1a>
			16: R_X86_64_PC32	ref_arg1-0x4
  1a:	0f af f9             	imul   %ecx,%edi
  1d:	48 8d 15 00 00 00 00 	lea    0x0(%rip),%rdx        # 24 <put32_arr+0x24>
			20: R_X86_64_PC32	ref_out-0x4
  24:	48 63 c7             	movslq %edi,%rax
  27:	85 c9                	test   %ecx,%ecx
  29:	7e 1c                	jle    47 <put32_arr+0x47>
  2b:	48 8d 3c 82          	lea    (%rdx,%rax,4),%rdi
  2f:	48 c1 e1 02          	shl    $0x2,%rcx
  33:	31 c0                	xor    %eax,%eax
  35:	0f 1f 00             	nopl   (%rax)
  38:	8b 14 06             	mov    (%rsi,%rax,1),%edx
  3b:	89 14 07             	mov    %edx,(%rdi,%rax,1)
  3e:	48 83 c0 04          	add    $0x4,%rax
  42:	48 39 c1             	cmp    %rax,%rcx
  45:	75 f1                	jne    38 <put32_arr+0x38>
  47:	e9 00 00 00 00       	jmp    4c <.LC4>
			48: R_X86_64_PLT32	result_void-0x4

roll32_arr#

STENCIL void roll32_arr(void) {
    // Copies the ring buffer ref_arg0 of n elements (ref_arg2) starting at the element ref_arg1
    aux_arr_roll32(REF(ref_arg0), REF(ref_out), *(int *)REF(ref_arg1), *(int *)REF(ref_arg2));
    result_void();
}

arm64#

0000000000000000 <roll32_arr>:
   0:	a9bf7bfd 	stp	x29, x30, [sp, #-16]!
   4:	90000003 	adrp	x3, 0 <ref_arg2>
			4: R_AARCH64_ADR_PREL_PG_HI21	ref_arg2
   8:	90000002 	adrp	x2, 0 <ref_arg1>
			8: R_AARCH64_ADR_PREL_PG_HI21	ref_arg1
   c:	910003fd 	mov	x29, sp
  10:	b9400063 	ldr	w3, [x3]
			10: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg2
  14:	90000001 	adrp	x1, 0 <ref_out>
			14: R_AARCH64_ADR_PREL_PG_HI21	ref_out
  18:	b9400042 	ldr	w2, [x2]
			18: R_AARCH64_LDST32_ABS_LO12_NC	ref_arg1
  1c:	91000021 	add	x1, x1, #0x0
			1c: R_AARCH64_ADD_ABS_LO12_NC	ref_out
  20:	90000000 	adrp	x0, 0 <ref_arg0>
			20: R_AARCH64_ADR_PREL_PG_HI21	ref_arg0
  24:	91000000 	add	x0, x0, #0x0
			24: R_AARCH64_ADD_ABS_LO12_NC	ref_arg0
  28:	94000000 	bl	0 <roll32_arr>
			28: R_AARCH64_CALL26	aux_arr_roll32
  2c:	a8c17bfd 	ldp	x29, x30, [sp], #16
  30:	14000000 	b	0 <result_void>
			30: R_AARCH64_JUMP26	result_void

armv6#

00000000 <roll32_arr>:
   0:	e59f3020 	ldr	r3, [pc, #32]	@ 28 <roll32_arr+0x28>
   4:	e59f2020 	ldr	r2, [pc, #32]	@ 2c <roll32_arr+0x2c>
   8:	e92d4010 	push	{r4, lr}
   c:	e59f101c 	ldr	r1, [pc, #28]	@ 30 <roll32_arr+0x30>
  10:	e5933000 	ldr	r3, [r3]
  14:	e5922000 	ldr	r2, [r2]
  18:	e59f0014 	ldr	r0, [pc, #20]	@ 34 <roll32_arr+0x34>
  1c:	ebfffffe 	bl	0 <roll32_arr>
			1c: R_ARM_CALL	aux_arr_roll32
  20:	e8bd4010 	pop	{r4, lr}
  24:	eafffffe 	b	0 <result_void>
			24: R_ARM_JUMP24	result_void
	...
			28: R_ARM_ABS32	ref_arg2
			2c: R_ARM_ABS32	ref_arg1
			30: R_ARM_ABS32	ref_out
			34: R_ARM_ABS32	ref_arg0

armv7#

00000000 <roll32_arr>:
   0:	e3003000 	movw	r3, #0
			0: R_ARM_MOVW_ABS_NC	ref_arg2
   4:	e3403000 	movt	r3, #0
			4: R_ARM_MOVT_ABS	ref_arg2
   8:	e3002000 	movw	r2, #0
			8: R_ARM_MOVW_ABS_NC	ref_arg1
   c:	e3402000 	movt	r2, #0
			c: R_ARM_MOVT_ABS	ref_arg1
  10:	e92d4010 	push	{r4, lr}
  14:	e3001000 	movw	r1, #0
			14: R_ARM_MOVW_ABS_NC	ref_out
  18:	e3401000 	movt	r1, #0
			18: R_ARM_MOVT_ABS	ref_out
  1c:	e5933000 	ldr	r3, [r3]
  20:	e3000000 	movw	r0, #0
			20: R_ARM_MOVW_ABS_NC	ref_arg0
  24:	e3400000 	movt	r0, #0
			24: R_ARM_MOVT_ABS	ref_arg0
  28:	e5922000 	ldr	r2, [r2]
  2c:	ebfffffe 	bl	0 <roll32_arr>
			2c: R_ARM_CALL	aux_arr_roll32
  30:	e8bd4010 	pop	{r4, lr}
  34:	eafffffe 	b	0 <result_void>
			34: R_ARM_JUMP24	result_void

armv7mthumb#

00000000 <roll32_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a06      	ldr	r2, [pc, #24]	@ (1c <roll32_arr+0x1c>)
   4:	4b06      	ldr	r3, [pc, #24]	@ (20 <roll32_arr+0x20>)
   6:	6812      	ldr	r2, [r2, #0]
   8:	681b      	ldr	r3, [r3, #0]
   a:	4906      	ldr	r1, [pc, #24]	@ (24 <roll32_arr+0x24>)
   c:	4806      	ldr	r0, [pc, #24]	@ (28 <roll32_arr+0x28>)
   e:	f7ff fffe 	bl	0 <roll32_arr>
			e: R_ARM_THM_CALL	aux_arr_roll32
  12:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  16:	f7ff bffe 	b.w	0 <result_void>
			16: R_ARM_THM_JUMP24	result_void
  1a:	bf00      	nop
	...
			1c: R_ARM_ABS32	ref_arg1
			20: R_ARM_ABS32	ref_arg2
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7mthumb_fpv5#

00000000 <roll32_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a06      	ldr	r2, [pc, #24]	@ (1c <roll32_arr+0x1c>)
   4:	4b06      	ldr	r3, [pc, #24]	@ (20 <roll32_arr+0x20>)
   6:	4907      	ldr	r1, [pc, #28]	@ (24 <roll32_arr+0x24>)
   8:	681b      	ldr	r3, [r3, #0]
   a:	4807      	ldr	r0, [pc, #28]	@ (28 <roll32_arr+0x28>)
   c:	6812      	ldr	r2, [r2, #0]
   e:	f7ff fffe 	bl	0 <roll32_arr>
			e: R_ARM_THM_CALL	aux_arr_roll32
  12:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  16:	f7ff bffe 	b.w	0 <result_void>
			16: R_ARM_THM_JUMP24	result_void
  1a:	bf00      	nop
	...
			1c: R_ARM_ABS32	ref_arg1
			20: R_ARM_ABS32	ref_arg2
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

armv7thumb#

00000000 <roll32_arr>:
   0:	b508      	push	{r3, lr}
   2:	f240 0200 	movw	r2, #0
			2: R_ARM_THM_MOVW_ABS_NC	ref_arg1
   6:	f2c0 0200 	movt	r2, #0
			6: R_ARM_THM_MOVT_ABS	ref_arg1
   a:	f240 0300 	movw	r3, #0
			a: R_ARM_THM_MOVW_ABS_NC	ref_arg2
   e:	f2c0 0300 	movt	r3, #0
			e: R_ARM_THM_MOVT_ABS	ref_arg2
  12:	f240 0100 	movw	r1, #0
			12: R_ARM_THM_MOVW_ABS_NC	ref_out
  16:	f2c0 0100 	movt	r1, #0
			16: R_ARM_THM_MOVT_ABS	ref_out
  1a:	6812      	ldr	r2, [r2, #0]
  1c:	f240 0000 	movw	r0, #0
			1c: R_ARM_THM_MOVW_ABS_NC	ref_arg0
  20:	f2c0 0000 	movt	r0, #0
			20: R_ARM_THM_MOVT_ABS	ref_arg0
  24:	681b      	ldr	r3, [r3, #0]
  26:	f7ff fffe 	bl	0 <roll32_arr>
			26: R_ARM_THM_CALL	aux_arr_roll32
  2a:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  2e:	f7ff bffe 	b.w	0 <result_void>
			2e: R_ARM_THM_JUMP24	result_void
  32:	bf00      	nop

armv81mthumb#

00000000 <roll32_arr>:
   0:	b508      	push	{r3, lr}
   2:	4a06      	ldr	r2, [pc, #24]	@ (1c <roll32_arr+0x1c>)
   4:	4b06      	ldr	r3, [pc, #24]	@ (20 <roll32_arr+0x20>)
   6:	6812      	ldr	r2, [r2, #0]
   8:	681b      	ldr	r3, [r3, #0]
   a:	4906      	ldr	r1, [pc, #24]	@ (24 <roll32_arr+0x24>)
   c:	4806      	ldr	r0, [pc, #24]	@ (28 <roll32_arr+0x28>)
   e:	f7ff fffe 	bl	0 <roll32_arr>
			e: R_ARM_THM_CALL	aux_arr_roll32
  12:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  16:	f7ff bffe 	b.w	0 <result_void>
			16: R_ARM_THM_JUMP24	result_void
  1a:	bf00      	nop
	...
			1c: R_ARM_ABS32	ref_arg1
			20: R_ARM_ABS32	ref_arg2
			24: R_ARM_ABS32	ref_out
			28: R_ARM_ABS32	ref_arg0

riscv32#

00000000 <roll32_arr>:
   0:	00000697          	auipc	a3,0x0
			0: R_RISCV_PCREL_HI20	ref_arg2
   4:	0006a683          	lw	a3,0(a3) # 0 <roll32_arr>
			4: R_RISCV_PCREL_LO12_I	.L0 
   8:	00000617          	auipc	a2,0x0
			8: R_RISCV_PCREL_HI20	ref_arg1
   c:	00062603          	lw	a2,0(a2) # 8 <roll32_arr+0x8>
			c: R_RISCV_PCREL_LO12_I	.L0 
  10:	1141                	addi	sp,sp,-16
  12:	00000597          	auipc	a1,0x0
			12: R_RISCV_PCREL_HI20	ref_out
  16:	00058593          	mv	a1,a1
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	00000517          	auipc	a0,0x0
			1a: R_RISCV_PCREL_HI20	ref_arg0
  1e:	00050513          	mv	a0,a0
			1e: R_RISCV_PCREL_LO12_I	.L0 
  22:	c606                	sw	ra,12(sp)
  24:	00000097          	auipc	ra,0x0
			24: R_RISCV_CALL_PLT	aux_arr_roll32
  28:	000080e7          	jalr	ra # 24 <roll32_arr+0x24>
  2c:	40b2                	lw	ra,12(sp)
  2e:	0141                	addi	sp,sp,16
  30:	00000317          	auipc	t1,0x0
			30: R_RISCV_CALL_PLT	result_void
  34:	00030067          	jr	t1 # 30 <roll32_arr+0x30>

riscv64#

0000000000000000 <roll32_arr>:
   0:	1141                	addi	sp,sp,-16
   2:	00000697          	auipc	a3,0x0
			2: R_RISCV_PCREL_HI20	ref_arg2
   6:	0006a683          	lw	a3,0(a3) # 2 <roll32_arr+0x2>
			6: R_RISCV_PCREL_LO12_I	.L0 
   a:	00000617          	auipc	a2,0x0
			a: R_RISCV_PCREL_HI20	ref_arg1
   e:	00062603          	lw	a2,0(a2) # a <roll32_arr+0xa>
			e: R_RISCV_PCREL_LO12_I	.L0 
  12:	00000597          	auipc	a1,0x0
			12: R_RISCV_PCREL_HI20	ref_out
  16:	00058593          	mv	a1,a1
			16: R_RISCV_PCREL_LO12_I	.L0 
  1a:	00000517          	auipc	a0,0x0
			1a: R_RISCV_PCREL_HI20	ref_arg0
  1e:	00050513          	mv	a0,a0
			1e: R_RISCV_PCREL_LO12_I	.L0 
  22:	e406                	sd	ra,8(sp)
  24:	00000097          	auipc	ra,0x0
			24: R_RISCV_CALL_PLT	aux_arr_roll32
  28:	000080e7          	jalr	ra # 24 <roll32_arr+0x24>
  2c:	60a2                	ld	ra,8(sp)
  2e:	0141                	addi	sp,sp,16
  30:	00000317          	auipc	t1,0x0
			30: R_RISCV_CALL_PLT	result_void
  34:	00030067          	jr	t1 # 30 <roll32_arr+0x30>

tricore#

00000000 <roll32_arr>:
   0:	91 00 00 20 	movh.a %a2,0
			0: R_TRICORE_HIADJ	ref_arg2
   4:	19 25 00 00 	ld.w %d5,[%a2]0 <0 <roll32_arr>>
			4: R_TRICORE_LO2	ref_arg2
   8:	91 00 00 20 	movh.a %a2,0
			8: R_TRICORE_HIADJ	ref_arg1
   c:	19 24 00 00 	ld.w %d4,[%a2]0 <0 <roll32_arr>>
			c: R_TRICORE_LO2	ref_arg1
  10:	91 00 00 50 	movh.a %a5,0
			10: R_TRICORE_HIADJ	ref_out
  14:	91 00 00 40 	movh.a %a4,0
			14: R_TRICORE_HIADJ	ref_arg0
  18:	d9 55 00 00 	lea %a5,[%a5]0 <0 <roll32_arr>>
			18: R_TRICORE_LO2	ref_out
  1c:	d9 44 00 00 	lea %a4,[%a4]0 <0 <roll32_arr>>
			1c: R_TRICORE_LO2	ref_arg0
  20:	6d 00 00 00 	call 20 <roll32_arr+0x20>
			20: R_TRICORE_24REL	aux_arr_roll32
  24:	1d 00 00 00 	j 24 <roll32_arr+0x24>
			24: R_TRICORE_24REL	result_void

x86#

00000000 <roll32_arr>:
   0:	83 ec 0c             	sub    $0xc,%esp
   3:	ff 35 00 00 00 00    	push   0x0
			5: R_386_32	ref_arg2
   9:	ff 35 00 00 00 00    	push   0x0
			b: R_386_32	ref_arg1
   f:	68 00 00 00 00       	push   $0x0
			10: R_386_32	ref_out
  14:	68 00 00 00 00       	push   $0x0
			15: R_386_32	ref_arg0
  19:	e8 fc ff ff ff       	call   1a <roll32_arr+0x1a>
			1a: R_386_PC32	aux_arr_roll32
  1e:	83 c4 1c             	add    $0x1c,%esp
  21:	e9 fc ff ff ff       	jmp    22 <roll32_arr+0x22>
			22: R_386_PC32	result_void

x86_64#

0000000000000000 <roll32_arr>:
   0:	48 83 ec 08          	sub    $0x8,%rsp
   4:	48 8d 15 00 00 00 00 	lea    0x0(%rip),%rdx        # b <roll32_arr+0xb>
			7: R_X86_64_PC32	ref_arg2-0x4
   b:	48 8d 05 00 00 00 00 	lea    0x0(%rip),%rax        # 12 <roll32_arr+0x12>
			e: R_X86_64_PC32	ref_arg1-0x4
  12:	8b 0a                	mov    (%rdx),%ecx
  14:	8b 10                	mov    (%rax),%edx
  16:	48 8d 35 00 00 00 00 	lea    0x0(%rip),%rsi        # 1d <roll32_arr+0x1d>
			19: R_X86_64_PC32	ref_out-0x4
  1d:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 24 <roll32_arr+0x24>
			20: R_X86_64_PC32	ref_arg0-0x4
  24:	e8 00 00 00 00       	call   29 <roll32_arr+0x29>
			25: R_X86_64_PLT32	aux_arr_roll32-0x4
  29:	48 83 c4 08          	add    $0x8,%rsp
  2d:	e9 00 00 00 00       	jmp    32 <.LC0+0x2>
			2e: R_X86_64_PLT32	result_void-0x4