94 lines
3.5 KiB
Plaintext
94 lines
3.5 KiB
Plaintext
; Binary emission of 64-bit floating point code.
|
|
test binemit
|
|
set is_64bit
|
|
isa intel has_sse2
|
|
|
|
; The binary encodings can be verified with the command:
|
|
;
|
|
; sed -ne 's/^ *; asm: *//p' filetests/isa/intel/binary64-float.cton | llvm-mc -show-encoding -triple=x86_64
|
|
;
|
|
|
|
function %F32() {
|
|
ebb0:
|
|
[-,%r11] v0 = iconst.i32 1
|
|
[-,%rsi] v1 = iconst.i32 2
|
|
[-,%rax] v2 = iconst.i64 11
|
|
[-,%r14] v3 = iconst.i64 12
|
|
|
|
; asm: cvtsi2ssl %r11d, %xmm5
|
|
[-,%xmm5] v10 = fcvt_from_sint.f32 v0 ; bin: f3 41 0f 2a eb
|
|
; asm: cvtsi2ssl %esi, %xmm10
|
|
[-,%xmm10] v11 = fcvt_from_sint.f32 v1 ; bin: f3 44 0f 2a d6
|
|
|
|
; asm: cvtsi2ssq %rax, %xmm5
|
|
[-,%xmm5] v12 = fcvt_from_sint.f32 v2 ; TODO: f3 48 0f 2a e8
|
|
; asm: cvtsi2ssq %r14, %xmm10
|
|
[-,%xmm10] v13 = fcvt_from_sint.f32 v3 ; TODO: f3 4d 0f 2a d6
|
|
|
|
; Binary arithmetic.
|
|
|
|
; asm: addss %xmm10, %xmm5
|
|
[-,%xmm5] v20 = fadd v10, v11 ; bin: f3 41 0f 58 ea
|
|
; asm: addss %xmm5, %xmm10
|
|
[-,%xmm10] v21 = fadd v11, v10 ; bin: f3 44 0f 58 d5
|
|
|
|
; asm: subss %xmm10, %xmm5
|
|
[-,%xmm5] v22 = fsub v10, v11 ; bin: f3 41 0f 5c ea
|
|
; asm: subss %xmm5, %xmm10
|
|
[-,%xmm10] v23 = fsub v11, v10 ; bin: f3 44 0f 5c d5
|
|
|
|
; asm: mulss %xmm10, %xmm5
|
|
[-,%xmm5] v24 = fmul v10, v11 ; bin: f3 41 0f 59 ea
|
|
; asm: mulss %xmm5, %xmm10
|
|
[-,%xmm10] v25 = fmul v11, v10 ; bin: f3 44 0f 59 d5
|
|
|
|
; asm: divss %xmm10, %xmm5
|
|
[-,%xmm5] v26 = fdiv v10, v11 ; bin: f3 41 0f 5e ea
|
|
; asm: divss %xmm5, %xmm10
|
|
[-,%xmm10] v27 = fdiv v11, v10 ; bin: f3 44 0f 5e d5
|
|
|
|
return
|
|
}
|
|
|
|
function %F64() {
|
|
ebb0:
|
|
[-,%r11] v0 = iconst.i32 1
|
|
[-,%rsi] v1 = iconst.i32 2
|
|
[-,%rax] v2 = iconst.i64 11
|
|
[-,%r14] v3 = iconst.i64 12
|
|
|
|
; asm: cvtsi2sdl %r11d, %xmm5
|
|
[-,%xmm5] v10 = fcvt_from_sint.f64 v0 ; bin: f2 41 0f 2a eb
|
|
; asm: cvtsi2sdl %esi, %xmm10
|
|
[-,%xmm10] v11 = fcvt_from_sint.f64 v1 ; bin: f2 44 0f 2a d6
|
|
|
|
; asm: cvtsi2sdq %rax, %xmm5
|
|
[-,%xmm5] v12 = fcvt_from_sint.f64 v2 ; TODO: f2 48 0f 2a e8
|
|
; asm: cvtsi2sdq %r14, %xmm10
|
|
[-,%xmm10] v13 = fcvt_from_sint.f64 v3 ; TODO: f2 4d 0f 2a d6
|
|
|
|
; Binary arithmetic.
|
|
|
|
; asm: addsd %xmm10, %xmm5
|
|
[-,%xmm5] v20 = fadd v10, v11 ; bin: f2 41 0f 58 ea
|
|
; asm: addsd %xmm5, %xmm10
|
|
[-,%xmm10] v21 = fadd v11, v10 ; bin: f2 44 0f 58 d5
|
|
|
|
; asm: subsd %xmm10, %xmm5
|
|
[-,%xmm5] v22 = fsub v10, v11 ; bin: f2 41 0f 5c ea
|
|
; asm: subsd %xmm5, %xmm10
|
|
[-,%xmm10] v23 = fsub v11, v10 ; bin: f2 44 0f 5c d5
|
|
|
|
; asm: mulsd %xmm10, %xmm5
|
|
[-,%xmm5] v24 = fmul v10, v11 ; bin: f2 41 0f 59 ea
|
|
; asm: mulsd %xmm5, %xmm10
|
|
[-,%xmm10] v25 = fmul v11, v10 ; bin: f2 44 0f 59 d5
|
|
|
|
; asm: divsd %xmm10, %xmm5
|
|
[-,%xmm5] v26 = fdiv v10, v11 ; bin: f2 41 0f 5e ea
|
|
; asm: divsd %xmm5, %xmm10
|
|
[-,%xmm10] v27 = fdiv v11, v10 ; bin: f2 44 0f 5e d5
|
|
|
|
return
|
|
}
|