From 79f02e42dd98a09a1e2cd6e05b7a97c1c273fa15 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Tue, 27 Mar 2018 11:21:37 -0700 Subject: [PATCH] Use movss/movsd rather than movd/movq for floating-point loads and stores. While there may be CPUs that have a domain crossing penalty here, this also helps the generated code look more like the code produced by other compilers. --- .../filetests/isa/intel/binary32-float.cton | 144 ++++++++-------- .../filetests/isa/intel/binary64-float.cton | 160 +++++++++--------- lib/cretonne/meta/isa/intel/encodings.py | 40 ++--- 3 files changed, 172 insertions(+), 172 deletions(-) diff --git a/cranelift/filetests/isa/intel/binary32-float.cton b/cranelift/filetests/isa/intel/binary32-float.cton index 94db28d26e..95e132cf6e 100644 --- a/cranelift/filetests/isa/intel/binary32-float.cton +++ b/cranelift/filetests/isa/intel/binary32-float.cton @@ -147,48 +147,48 @@ ebb0: ; Load/Store - ; asm: movd (%ecx), %xmm5 - [-,%xmm5] v100 = load.f32 v0 ; bin: 66 0f 6e 29 - ; asm: movd (%esi), %xmm2 - [-,%xmm2] v101 = load.f32 v1 ; bin: 66 0f 6e 16 - ; asm: movd 50(%ecx), %xmm5 - [-,%xmm5] v110 = load.f32 v0+50 ; bin: 66 0f 6e 69 32 - ; asm: movd -50(%esi), %xmm2 - [-,%xmm2] v111 = load.f32 v1-50 ; bin: 66 0f 6e 56 ce - ; asm: movd 10000(%ecx), %xmm5 - [-,%xmm5] v120 = load.f32 v0+10000 ; bin: 66 0f 6e a9 00002710 - ; asm: movd -10000(%esi), %xmm2 - [-,%xmm2] v121 = load.f32 v1-10000 ; bin: 66 0f 6e 96 ffffd8f0 + ; asm: movss (%ecx), %xmm5 + [-,%xmm5] v100 = load.f32 v0 ; bin: f3 0f 10 29 + ; asm: movss (%esi), %xmm2 + [-,%xmm2] v101 = load.f32 v1 ; bin: f3 0f 10 16 + ; asm: movss 50(%ecx), %xmm5 + [-,%xmm5] v110 = load.f32 v0+50 ; bin: f3 0f 10 69 32 + ; asm: movss -50(%esi), %xmm2 + [-,%xmm2] v111 = load.f32 v1-50 ; bin: f3 0f 10 56 ce + ; asm: movss 10000(%ecx), %xmm5 + [-,%xmm5] v120 = load.f32 v0+10000 ; bin: f3 0f 10 a9 00002710 + ; asm: movss -10000(%esi), %xmm2 + [-,%xmm2] v121 = load.f32 v1-10000 ; bin: f3 0f 10 96 ffffd8f0 - ; asm: movd %xmm5, (%ecx) - [-] store.f32 v100, v0 ; bin: 66 0f 7e 29 - ; asm: movd %xmm2, (%esi) - [-] store.f32 v101, v1 ; bin: 66 0f 7e 16 - ; asm: movd %xmm5, 50(%ecx) - [-] store.f32 v100, v0+50 ; bin: 66 0f 7e 69 32 - ; asm: movd %xmm2, -50(%esi) - [-] store.f32 v101, v1-50 ; bin: 66 0f 7e 56 ce - ; asm: movd %xmm5, 10000(%ecx) - [-] store.f32 v100, v0+10000 ; bin: 66 0f 7e a9 00002710 - ; asm: movd %xmm2, -10000(%esi) - [-] store.f32 v101, v1-10000 ; bin: 66 0f 7e 96 ffffd8f0 + ; asm: movss %xmm5, (%ecx) + [-] store.f32 v100, v0 ; bin: f3 0f 11 29 + ; asm: movss %xmm2, (%esi) + [-] store.f32 v101, v1 ; bin: f3 0f 11 16 + ; asm: movss %xmm5, 50(%ecx) + [-] store.f32 v100, v0+50 ; bin: f3 0f 11 69 32 + ; asm: movss %xmm2, -50(%esi) + [-] store.f32 v101, v1-50 ; bin: f3 0f 11 56 ce + ; asm: movss %xmm5, 10000(%ecx) + [-] store.f32 v100, v0+10000 ; bin: f3 0f 11 a9 00002710 + ; asm: movss %xmm2, -10000(%esi) + [-] store.f32 v101, v1-10000 ; bin: f3 0f 11 96 ffffd8f0 ; Spill / Fill. - ; asm: movd %xmm5, 1032(%esp) - [-,ss1] v200 = spill v100 ; bin: 66 0f 7e ac 24 00000408 - ; asm: movd %xmm2, 1032(%esp) - [-,ss1] v201 = spill v101 ; bin: 66 0f 7e 94 24 00000408 + ; asm: movss %xmm5, 1032(%esp) + [-,ss1] v200 = spill v100 ; bin: f3 0f 11 ac 24 00000408 + ; asm: movss %xmm2, 1032(%esp) + [-,ss1] v201 = spill v101 ; bin: f3 0f 11 94 24 00000408 - ; asm: movd 1032(%esp), %xmm5 - [-,%xmm5] v210 = fill v200 ; bin: 66 0f 6e ac 24 00000408 - ; asm: movd 1032(%esp), %xmm2 - [-,%xmm2] v211 = fill v201 ; bin: 66 0f 6e 94 24 00000408 + ; asm: movss 1032(%esp), %xmm5 + [-,%xmm5] v210 = fill v200 ; bin: f3 0f 10 ac 24 00000408 + ; asm: movss 1032(%esp), %xmm2 + [-,%xmm2] v211 = fill v201 ; bin: f3 0f 10 94 24 00000408 - ; asm: movd %xmm5, 1032(%rsp) - regspill v100, %xmm5 -> ss1 ; bin: 66 0f 7e ac 24 00000408 - ; asm: movd 1032(%rsp), %xmm5 - regfill v100, ss1 -> %xmm5 ; bin: 66 0f 6e ac 24 00000408 + ; asm: movss %xmm5, 1032(%rsp) + regspill v100, %xmm5 -> ss1 ; bin: f3 0f 11 ac 24 00000408 + ; asm: movss 1032(%rsp), %xmm5 + regfill v100, ss1 -> %xmm5 ; bin: f3 0f 10 ac 24 00000408 ; Comparisons. ; @@ -362,48 +362,48 @@ ebb0: ; Load/Store - ; asm: movq (%ecx), %xmm5 - [-,%xmm5] v100 = load.f64 v0 ; bin: f3 0f 7e 29 - ; asm: movq (%esi), %xmm2 - [-,%xmm2] v101 = load.f64 v1 ; bin: f3 0f 7e 16 - ; asm: movq 50(%ecx), %xmm5 - [-,%xmm5] v110 = load.f64 v0+50 ; bin: f3 0f 7e 69 32 - ; asm: movq -50(%esi), %xmm2 - [-,%xmm2] v111 = load.f64 v1-50 ; bin: f3 0f 7e 56 ce - ; asm: movq 10000(%ecx), %xmm5 - [-,%xmm5] v120 = load.f64 v0+10000 ; bin: f3 0f 7e a9 00002710 - ; asm: movq -10000(%esi), %xmm2 - [-,%xmm2] v121 = load.f64 v1-10000 ; bin: f3 0f 7e 96 ffffd8f0 + ; asm: movsd (%ecx), %xmm5 + [-,%xmm5] v100 = load.f64 v0 ; bin: f2 0f 10 29 + ; asm: movsd (%esi), %xmm2 + [-,%xmm2] v101 = load.f64 v1 ; bin: f2 0f 10 16 + ; asm: movsd 50(%ecx), %xmm5 + [-,%xmm5] v110 = load.f64 v0+50 ; bin: f2 0f 10 69 32 + ; asm: movsd -50(%esi), %xmm2 + [-,%xmm2] v111 = load.f64 v1-50 ; bin: f2 0f 10 56 ce + ; asm: movsd 10000(%ecx), %xmm5 + [-,%xmm5] v120 = load.f64 v0+10000 ; bin: f2 0f 10 a9 00002710 + ; asm: movsd -10000(%esi), %xmm2 + [-,%xmm2] v121 = load.f64 v1-10000 ; bin: f2 0f 10 96 ffffd8f0 - ; asm: movq %xmm5, (%ecx) - [-] store.f64 v100, v0 ; bin: 66 0f d6 29 - ; asm: movq %xmm2, (%esi) - [-] store.f64 v101, v1 ; bin: 66 0f d6 16 - ; asm: movq %xmm5, 50(%ecx) - [-] store.f64 v100, v0+50 ; bin: 66 0f d6 69 32 - ; asm: movq %xmm2, -50(%esi) - [-] store.f64 v101, v1-50 ; bin: 66 0f d6 56 ce - ; asm: movq %xmm5, 10000(%ecx) - [-] store.f64 v100, v0+10000 ; bin: 66 0f d6 a9 00002710 - ; asm: movq %xmm2, -10000(%esi) - [-] store.f64 v101, v1-10000 ; bin: 66 0f d6 96 ffffd8f0 + ; asm: movsd %xmm5, (%ecx) + [-] store.f64 v100, v0 ; bin: f2 0f 11 29 + ; asm: movsd %xmm2, (%esi) + [-] store.f64 v101, v1 ; bin: f2 0f 11 16 + ; asm: movsd %xmm5, 50(%ecx) + [-] store.f64 v100, v0+50 ; bin: f2 0f 11 69 32 + ; asm: movsd %xmm2, -50(%esi) + [-] store.f64 v101, v1-50 ; bin: f2 0f 11 56 ce + ; asm: movsd %xmm5, 10000(%ecx) + [-] store.f64 v100, v0+10000 ; bin: f2 0f 11 a9 00002710 + ; asm: movsd %xmm2, -10000(%esi) + [-] store.f64 v101, v1-10000 ; bin: f2 0f 11 96 ffffd8f0 ; Spill / Fill. - ; asm: movq %xmm5, 1032(%esp) - [-,ss1] v200 = spill v100 ; bin: 66 0f d6 ac 24 00000408 - ; asm: movq %xmm2, 1032(%esp) - [-,ss1] v201 = spill v101 ; bin: 66 0f d6 94 24 00000408 + ; asm: movsd %xmm5, 1032(%esp) + [-,ss1] v200 = spill v100 ; bin: f2 0f 11 ac 24 00000408 + ; asm: movsd %xmm2, 1032(%esp) + [-,ss1] v201 = spill v101 ; bin: f2 0f 11 94 24 00000408 - ; asm: movq 1032(%esp), %xmm5 - [-,%xmm5] v210 = fill v200 ; bin: f3 0f 7e ac 24 00000408 - ; asm: movq 1032(%esp), %xmm2 - [-,%xmm2] v211 = fill v201 ; bin: f3 0f 7e 94 24 00000408 + ; asm: movsd 1032(%esp), %xmm5 + [-,%xmm5] v210 = fill v200 ; bin: f2 0f 10 ac 24 00000408 + ; asm: movsd 1032(%esp), %xmm2 + [-,%xmm2] v211 = fill v201 ; bin: f2 0f 10 94 24 00000408 - ; asm: movq %xmm5, 1032(%rsp) - regspill v100, %xmm5 -> ss1 ; bin: 66 0f d6 ac 24 00000408 - ; asm: movq 1032(%rsp), %xmm5 - regfill v100, ss1 -> %xmm5 ; bin: f3 0f 7e ac 24 00000408 + ; asm: movsd %xmm5, 1032(%rsp) + regspill v100, %xmm5 -> ss1 ; bin: f2 0f 11 ac 24 00000408 + ; asm: movsd 1032(%rsp), %xmm5 + regfill v100, ss1 -> %xmm5 ; bin: f2 0f 10 ac 24 00000408 ; Comparisons. ; diff --git a/cranelift/filetests/isa/intel/binary64-float.cton b/cranelift/filetests/isa/intel/binary64-float.cton index b362b7eb4a..47db5b197f 100644 --- a/cranelift/filetests/isa/intel/binary64-float.cton +++ b/cranelift/filetests/isa/intel/binary64-float.cton @@ -157,52 +157,52 @@ ebb0: ; Load/Store - ; asm: movd (%r14), %xmm5 - [-,%xmm5] v100 = load.f32 v3 ; bin: 66 41 0f 6e 2e - ; asm: movd (%rax), %xmm10 - [-,%xmm10] v101 = load.f32 v2 ; bin: 66 44 0f 6e 10 - ; asm: movd 50(%r14), %xmm5 - [-,%xmm5] v110 = load.f32 v3+50 ; bin: 66 41 0f 6e 6e 32 - ; asm: movd -50(%rax), %xmm10 - [-,%xmm10] v111 = load.f32 v2-50 ; bin: 66 44 0f 6e 50 ce - ; asm: movd 10000(%r14), %xmm5 - [-,%xmm5] v120 = load.f32 v3+10000 ; bin: 66 41 0f 6e ae 00002710 - ; asm: movd -10000(%rax), %xmm10 - [-,%xmm10] v121 = load.f32 v2-10000 ; bin: 66 44 0f 6e 90 ffffd8f0 + ; asm: movss (%r14), %xmm5 + [-,%xmm5] v100 = load.f32 v3 ; bin: f3 41 0f 10 2e + ; asm: movss (%rax), %xmm10 + [-,%xmm10] v101 = load.f32 v2 ; bin: f3 44 0f 10 10 + ; asm: movss 50(%r14), %xmm5 + [-,%xmm5] v110 = load.f32 v3+50 ; bin: f3 41 0f 10 6e 32 + ; asm: movss -50(%rax), %xmm10 + [-,%xmm10] v111 = load.f32 v2-50 ; bin: f3 44 0f 10 50 ce + ; asm: movss 10000(%r14), %xmm5 + [-,%xmm5] v120 = load.f32 v3+10000 ; bin: f3 41 0f 10 ae 00002710 + ; asm: movss -10000(%rax), %xmm10 + [-,%xmm10] v121 = load.f32 v2-10000 ; bin: f3 44 0f 10 90 ffffd8f0 - ; asm: movd %xmm5, (%r14) - [-] store.f32 v100, v3 ; bin: 66 41 0f 7e 2e - ; asm: movd %xmm10, (%rax) - [-] store.f32 v101, v2 ; bin: 66 44 0f 7e 10 - ; asm: movd %xmm5, (%r13) - [-] store.f32 v100, v4 ; bin: 66 41 0f 7e 6d 00 - ; asm: movd %xmm10, (%r13) - [-] store.f32 v101, v4 ; bin: 66 45 0f 7e 55 00 - ; asm: movd %xmm5, 50(%r14) - [-] store.f32 v100, v3+50 ; bin: 66 41 0f 7e 6e 32 - ; asm: movd %xmm10, -50(%rax) - [-] store.f32 v101, v2-50 ; bin: 66 44 0f 7e 50 ce - ; asm: movd %xmm5, 10000(%r14) - [-] store.f32 v100, v3+10000 ; bin: 66 41 0f 7e ae 00002710 - ; asm: movd %xmm10, -10000(%rax) - [-] store.f32 v101, v2-10000 ; bin: 66 44 0f 7e 90 ffffd8f0 + ; asm: movss %xmm5, (%r14) + [-] store.f32 v100, v3 ; bin: f3 41 0f 11 2e + ; asm: movss %xmm10, (%rax) + [-] store.f32 v101, v2 ; bin: f3 44 0f 11 10 + ; asm: movss %xmm5, (%r13) + [-] store.f32 v100, v4 ; bin: f3 41 0f 11 6d 00 + ; asm: movss %xmm10, (%r13) + [-] store.f32 v101, v4 ; bin: f3 45 0f 11 55 00 + ; asm: movss %xmm5, 50(%r14) + [-] store.f32 v100, v3+50 ; bin: f3 41 0f 11 6e 32 + ; asm: movss %xmm10, -50(%rax) + [-] store.f32 v101, v2-50 ; bin: f3 44 0f 11 50 ce + ; asm: movss %xmm5, 10000(%r14) + [-] store.f32 v100, v3+10000 ; bin: f3 41 0f 11 ae 00002710 + ; asm: movss %xmm10, -10000(%rax) + [-] store.f32 v101, v2-10000 ; bin: f3 44 0f 11 90 ffffd8f0 ; Spill / Fill. - ; asm: movd %xmm5, 1032(%rsp) - [-,ss1] v200 = spill v100 ; bin: 66 0f 7e ac 24 00000408 - ; asm: movd %xmm10, 1032(%rsp) - [-,ss1] v201 = spill v101 ; bin: 66 44 0f 7e 94 24 00000408 + ; asm: movss %xmm5, 1032(%rsp) + [-,ss1] v200 = spill v100 ; bin: f3 0f 11 ac 24 00000408 + ; asm: movss %xmm10, 1032(%rsp) + [-,ss1] v201 = spill v101 ; bin: f3 44 0f 11 94 24 00000408 - ; asm: movd 1032(%rsp), %xmm5 - [-,%xmm5] v210 = fill v200 ; bin: 66 0f 6e ac 24 00000408 - ; asm: movd 1032(%rsp), %xmm10 - [-,%xmm10] v211 = fill v201 ; bin: 66 44 0f 6e 94 24 00000408 + ; asm: movss 1032(%rsp), %xmm5 + [-,%xmm5] v210 = fill v200 ; bin: f3 0f 10 ac 24 00000408 + ; asm: movss 1032(%rsp), %xmm10 + [-,%xmm10] v211 = fill v201 ; bin: f3 44 0f 10 94 24 00000408 - ; asm: movd %xmm5, 1032(%rsp) - regspill v100, %xmm5 -> ss1 ; bin: 66 0f 7e ac 24 00000408 - ; asm: movd 1032(%rsp), %xmm5 - regfill v100, ss1 -> %xmm5 ; bin: 66 0f 6e ac 24 00000408 + ; asm: movss %xmm5, 1032(%rsp) + regspill v100, %xmm5 -> ss1 ; bin: f3 0f 11 ac 24 00000408 + ; asm: movss 1032(%rsp), %xmm5 + regfill v100, ss1 -> %xmm5 ; bin: f3 0f 10 ac 24 00000408 ; Comparisons. ; @@ -392,52 +392,52 @@ ebb0: ; Load/Store - ; asm: movq (%r14), %xmm5 - [-,%xmm5] v100 = load.f64 v3 ; bin: f3 41 0f 7e 2e - ; asm: movq (%rax), %xmm10 - [-,%xmm10] v101 = load.f64 v2 ; bin: f3 44 0f 7e 10 - ; asm: movq 50(%r14), %xmm5 - [-,%xmm5] v110 = load.f64 v3+50 ; bin: f3 41 0f 7e 6e 32 - ; asm: movq -50(%rax), %xmm10 - [-,%xmm10] v111 = load.f64 v2-50 ; bin: f3 44 0f 7e 50 ce - ; asm: movq 10000(%r14), %xmm5 - [-,%xmm5] v120 = load.f64 v3+10000 ; bin: f3 41 0f 7e ae 00002710 - ; asm: movq -10000(%rax), %xmm10 - [-,%xmm10] v121 = load.f64 v2-10000 ; bin: f3 44 0f 7e 90 ffffd8f0 + ; asm: movsd (%r14), %xmm5 + [-,%xmm5] v100 = load.f64 v3 ; bin: f2 41 0f 10 2e + ; asm: movsd (%rax), %xmm10 + [-,%xmm10] v101 = load.f64 v2 ; bin: f2 44 0f 10 10 + ; asm: movsd 50(%r14), %xmm5 + [-,%xmm5] v110 = load.f64 v3+50 ; bin: f2 41 0f 10 6e 32 + ; asm: movsd -50(%rax), %xmm10 + [-,%xmm10] v111 = load.f64 v2-50 ; bin: f2 44 0f 10 50 ce + ; asm: movsd 10000(%r14), %xmm5 + [-,%xmm5] v120 = load.f64 v3+10000 ; bin: f2 41 0f 10 ae 00002710 + ; asm: movsd -10000(%rax), %xmm10 + [-,%xmm10] v121 = load.f64 v2-10000 ; bin: f2 44 0f 10 90 ffffd8f0 - ; asm: movq %xmm5, (%r14) - [-] store.f64 v100, v3 ; bin: 66 41 0f d6 2e - ; asm: movq %xmm10, (%rax) - [-] store.f64 v101, v2 ; bin: 66 44 0f d6 10 - ; asm: movq %xmm5, (%r13) - [-] store.f64 v100, v4 ; bin: 66 41 0f d6 6d 00 - ; asm: movq %xmm10, (%r13) - [-] store.f64 v101, v4 ; bin: 66 45 0f d6 55 00 - ; asm: movq %xmm5, 50(%r14) - [-] store.f64 v100, v3+50 ; bin: 66 41 0f d6 6e 32 - ; asm: movq %xmm10, -50(%rax) - [-] store.f64 v101, v2-50 ; bin: 66 44 0f d6 50 ce - ; asm: movq %xmm5, 10000(%r14) - [-] store.f64 v100, v3+10000 ; bin: 66 41 0f d6 ae 00002710 - ; asm: movq %xmm10, -10000(%rax) - [-] store.f64 v101, v2-10000 ; bin: 66 44 0f d6 90 ffffd8f0 + ; asm: movsd %xmm5, (%r14) + [-] store.f64 v100, v3 ; bin: f2 41 0f 11 2e + ; asm: movsd %xmm10, (%rax) + [-] store.f64 v101, v2 ; bin: f2 44 0f 11 10 + ; asm: movsd %xmm5, (%r13) + [-] store.f64 v100, v4 ; bin: f2 41 0f 11 6d 00 + ; asm: movsd %xmm10, (%r13) + [-] store.f64 v101, v4 ; bin: f2 45 0f 11 55 00 + ; asm: movsd %xmm5, 50(%r14) + [-] store.f64 v100, v3+50 ; bin: f2 41 0f 11 6e 32 + ; asm: movsd %xmm10, -50(%rax) + [-] store.f64 v101, v2-50 ; bin: f2 44 0f 11 50 ce + ; asm: movsd %xmm5, 10000(%r14) + [-] store.f64 v100, v3+10000 ; bin: f2 41 0f 11 ae 00002710 + ; asm: movsd %xmm10, -10000(%rax) + [-] store.f64 v101, v2-10000 ; bin: f2 44 0f 11 90 ffffd8f0 ; Spill / Fill. - ; asm: movq %xmm5, 1032(%rsp) - [-,ss1] v200 = spill v100 ; bin: 66 0f d6 ac 24 00000408 - ; asm: movq %xmm10, 1032(%rsp) - [-,ss1] v201 = spill v101 ; bin: 66 44 0f d6 94 24 00000408 + ; asm: movsd %xmm5, 1032(%rsp) + [-,ss1] v200 = spill v100 ; bin: f2 0f 11 ac 24 00000408 + ; asm: movsd %xmm10, 1032(%rsp) + [-,ss1] v201 = spill v101 ; bin: f2 44 0f 11 94 24 00000408 - ; asm: movq 1032(%rsp), %xmm5 - [-,%xmm5] v210 = fill v200 ; bin: f3 0f 7e ac 24 00000408 - ; asm: movq 1032(%rsp), %xmm10 - [-,%xmm10] v211 = fill v201 ; bin: f3 44 0f 7e 94 24 00000408 + ; asm: movsd 1032(%rsp), %xmm5 + [-,%xmm5] v210 = fill v200 ; bin: f2 0f 10 ac 24 00000408 + ; asm: movsd 1032(%rsp), %xmm10 + [-,%xmm10] v211 = fill v201 ; bin: f2 44 0f 10 94 24 00000408 - ; asm: movq %xmm5, 1032(%rsp) - regspill v100, %xmm5 -> ss1 ; bin: 66 0f d6 ac 24 00000408 - ; asm: movq 1032(%rsp), %xmm5 - regfill v100, ss1 -> %xmm5 ; bin: f3 0f 7e ac 24 00000408 + ; asm: movsd %xmm5, 1032(%rsp) + regspill v100, %xmm5 -> ss1 ; bin: f2 0f 11 ac 24 00000408 + ; asm: movsd 1032(%rsp), %xmm5 + regfill v100, ss1 -> %xmm5 ; bin: f2 0f 10 ac 24 00000408 ; Comparisons. ; diff --git a/lib/cretonne/meta/isa/intel/encodings.py b/lib/cretonne/meta/isa/intel/encodings.py index afb544cb9a..fca2ce8699 100644 --- a/lib/cretonne/meta/isa/intel/encodings.py +++ b/lib/cretonne/meta/isa/intel/encodings.py @@ -259,31 +259,31 @@ X86_64.enc(base.adjust_sp_imm, *r.adjustsp32.rex(0x81, w=1)) # Float loads and stores. # -enc_both(base.load.f32.any, r.fld, 0x66, 0x0f, 0x6e) -enc_both(base.load.f32.any, r.fldDisp8, 0x66, 0x0f, 0x6e) -enc_both(base.load.f32.any, r.fldDisp32, 0x66, 0x0f, 0x6e) +enc_both(base.load.f32.any, r.fld, 0xf3, 0x0f, 0x10) +enc_both(base.load.f32.any, r.fldDisp8, 0xf3, 0x0f, 0x10) +enc_both(base.load.f32.any, r.fldDisp32, 0xf3, 0x0f, 0x10) -enc_both(base.load.f64.any, r.fld, 0xf3, 0x0f, 0x7e) -enc_both(base.load.f64.any, r.fldDisp8, 0xf3, 0x0f, 0x7e) -enc_both(base.load.f64.any, r.fldDisp32, 0xf3, 0x0f, 0x7e) +enc_both(base.load.f64.any, r.fld, 0xf2, 0x0f, 0x10) +enc_both(base.load.f64.any, r.fldDisp8, 0xf2, 0x0f, 0x10) +enc_both(base.load.f64.any, r.fldDisp32, 0xf2, 0x0f, 0x10) -enc_both(base.store.f32.any, r.fst, 0x66, 0x0f, 0x7e) -enc_both(base.store.f32.any, r.fstDisp8, 0x66, 0x0f, 0x7e) -enc_both(base.store.f32.any, r.fstDisp32, 0x66, 0x0f, 0x7e) +enc_both(base.store.f32.any, r.fst, 0xf3, 0x0f, 0x11) +enc_both(base.store.f32.any, r.fstDisp8, 0xf3, 0x0f, 0x11) +enc_both(base.store.f32.any, r.fstDisp32, 0xf3, 0x0f, 0x11) -enc_both(base.store.f64.any, r.fst, 0x66, 0x0f, 0xd6) -enc_both(base.store.f64.any, r.fstDisp8, 0x66, 0x0f, 0xd6) -enc_both(base.store.f64.any, r.fstDisp32, 0x66, 0x0f, 0xd6) +enc_both(base.store.f64.any, r.fst, 0xf2, 0x0f, 0x11) +enc_both(base.store.f64.any, r.fstDisp8, 0xf2, 0x0f, 0x11) +enc_both(base.store.f64.any, r.fstDisp32, 0xf2, 0x0f, 0x11) -enc_both(base.fill.f32, r.ffillSib32, 0x66, 0x0f, 0x6e) -enc_both(base.regfill.f32, r.fregfill32, 0x66, 0x0f, 0x6e) -enc_both(base.fill.f64, r.ffillSib32, 0xf3, 0x0f, 0x7e) -enc_both(base.regfill.f64, r.fregfill32, 0xf3, 0x0f, 0x7e) +enc_both(base.fill.f32, r.ffillSib32, 0xf3, 0x0f, 0x10) +enc_both(base.regfill.f32, r.fregfill32, 0xf3, 0x0f, 0x10) +enc_both(base.fill.f64, r.ffillSib32, 0xf2, 0x0f, 0x10) +enc_both(base.regfill.f64, r.fregfill32, 0xf2, 0x0f, 0x10) -enc_both(base.spill.f32, r.fspillSib32, 0x66, 0x0f, 0x7e) -enc_both(base.regspill.f32, r.fregspill32, 0x66, 0x0f, 0x7e) -enc_both(base.spill.f64, r.fspillSib32, 0x66, 0x0f, 0xd6) -enc_both(base.regspill.f64, r.fregspill32, 0x66, 0x0f, 0xd6) +enc_both(base.spill.f32, r.fspillSib32, 0xf3, 0x0f, 0x11) +enc_both(base.regspill.f32, r.fregspill32, 0xf3, 0x0f, 0x11) +enc_both(base.spill.f64, r.fspillSib32, 0xf2, 0x0f, 0x11) +enc_both(base.regspill.f64, r.fregspill32, 0xf2, 0x0f, 0x11) # # Function addresses.