Skip to content

Instantly share code, notes, and snippets.

@luismarques
Created April 27, 2020 13:46
Show Gist options
  • Save luismarques/d19f9fbeed5a35dde256633b41e7eb7c to your computer and use it in GitHub Desktop.
Save luismarques/d19f9fbeed5a35dde256633b41e7eb7c to your computer and use it in GitHub Desktop.
[scenario]
filename = case-8cZhmPry.c
arch = rv32gc
abi = ilp32d
cost1 = 36
cost2 = 49
### Source:
short a;
double b;
int c() {
float d;
for (long e = 0; e < 4206; ++e)
for (long f = 0; f < 24; ++f)
a = a ? b : e;
return d;
}
### GCC:
.file "case-8cZhmPry.c"
.option nopic
.text
.align 1
.globl c
.type c, @function
c:
lui a5,%hi(b)
fld fa5,%lo(b)(a5)
lui a6,%hi(a)
lh a4,%lo(a)(a6)
fcvt.w.d a2,fa5,rtz
li a0,4096
li a1,0
slli a2,a2,16
srai a2,a2,16
addi a0,a0,110
.L2:
slli a3,a1,16
li a5,24
srai a3,a3,16
.L4:
bne a4,zero,.L6
mv a4,a3
.L3:
addi a5,a5,-1
bne a5,zero,.L4
addi a1,a1,1
bne a1,a0,.L2
sh a4,%lo(a)(a6)
li a0,0
ret
.L6:
mv a4,a2
j .L3
.size c, .-c
.globl b
.globl a
.section .sbss,"aw",@nobits
.align 3
.type b, @object
.size b, 8
b:
.zero 8
.type a, @object
.size a, 2
a:
.zero 2
.ident "GCC: (crosstool-NG 1.24.0.37-3f461da) 10.0.0 20200108 (experimental)"
.section .note.GNU-stack,"",@progbits
### Clang:
.text
.attribute 4, 16
.attribute 5, "rv32i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
.file "case-8cZhmPry.c"
.section .sdata,"aw",@progbits
.p2align 3 # -- Begin function c
.LCPI0_0:
.quad 0x3ff0000000000000 # double 1
.text
.globl c
.p2align 1
.type c,@function
c: # @c
.Lc$local:
# %bb.0:
lui a0, %hi(b)
fld ft0, %lo(b)(a0)
lui a0, %hi(a)
lhu a2, %lo(a)(a0)
fcvt.d.w ft1, zero
lui a0, 1
lui a1, %hi(.LCPI0_0)
addi a1, a1, %lo(.LCPI0_0)
fld ft2, 0(a1)
addi a0, a0, 110
lui a1, 16
addi a1, a1, -1
j .LBB0_2
.LBB0_1: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
addi a0, a0, -1
fadd.d ft1, ft1, ft2
beqz a0, .LBB0_50
.LBB0_2: # =>This Inner Loop Header: Depth=1
and a2, a2, a1
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_4
# %bb.3: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_4: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_6
# %bb.5: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_6: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_8
# %bb.7: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_8: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_10
# %bb.9: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_10: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_12
# %bb.11: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_12: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_14
# %bb.13: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_14: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_16
# %bb.15: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_16: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_18
# %bb.17: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_18: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_20
# %bb.19: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_20: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_22
# %bb.21: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_22: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_24
# %bb.23: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_24: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_26
# %bb.25: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_26: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_28
# %bb.27: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_28: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_30
# %bb.29: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_30: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_32
# %bb.31: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_32: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_34
# %bb.33: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_34: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_36
# %bb.35: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_36: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_38
# %bb.37: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_38: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_40
# %bb.39: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_40: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_42
# %bb.41: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_42: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_44
# %bb.43: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_44: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_46
# %bb.45: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_46: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_48
# %bb.47: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
.LBB0_48: # in Loop: Header=BB0_2 Depth=1
fcvt.w.d a2, ft3, rtz
seqz a2, a2
fmv.d ft3, ft1
bnez a2, .LBB0_1
# %bb.49: # in Loop: Header=BB0_2 Depth=1
fmv.d ft3, ft0
j .LBB0_1
.LBB0_50:
lui a0, %hi(a)
sh a2, %lo(a)(a0)
ret
.Lfunc_end0:
.size c, .Lfunc_end0-c
# -- End function
.type a,@object # @a
.section .sbss,"aw",@nobits
.globl a
.p2align 1
a:
.La$local:
.half 0 # 0x0
.size a, 2
.type b,@object # @b
.globl b
.p2align 3
b:
.Lb$local:
.quad 0x0000000000000000 # double 0
.size b, 8
.ident "clang version 11.0.0 "
.section ".note.GNU-stack","",@progbits
.addrsig
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment