# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s
--- |

  define float @test_fadd_float(float %arg1, float %arg2) {
    %ret = fadd float %arg1, %arg2
    ret float %ret
  }

  define double @test_fadd_double(double %arg1, double %arg2) {
    %ret = fadd double %arg1, %arg2
    ret double %ret
  }

...
---
name:            test_fadd_float
alignment:       4
legalized:       false
regBankSelected: false
registers:
  - { id: 0, class: _, preferred-register: '' }
  - { id: 1, class: _, preferred-register: '' }
  - { id: 2, class: _, preferred-register: '' }
  - { id: 3, class: _, preferred-register: '' }
  - { id: 4, class: _, preferred-register: '' }
  - { id: 5, class: _, preferred-register: '' }
liveins:
fixedStack:
stack:
constants:
body:             |
  bb.1 (%ir-block.0):
    liveins: $xmm0, $xmm1

    ; CHECK-LABEL: name: test_fadd_float
    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
    ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128)
    ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
    ; CHECK: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128)
    ; CHECK: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[TRUNC]], [[TRUNC1]]
    ; CHECK: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[FADD]](s32)
    ; CHECK: $xmm0 = COPY [[ANYEXT]](s128)
    ; CHECK: RET 0, implicit $xmm0
    %2:_(s128) = COPY $xmm0
    %0:_(s32) = G_TRUNC %2(s128)
    %3:_(s128) = COPY $xmm1
    %1:_(s32) = G_TRUNC %3(s128)
    %4:_(s32) = G_FADD %0, %1
    %5:_(s128) = G_ANYEXT %4(s32)
    $xmm0 = COPY %5(s128)
    RET 0, implicit $xmm0

...
---
name:            test_fadd_double
alignment:       4
legalized:       false
regBankSelected: false
registers:
  - { id: 0, class: _, preferred-register: '' }
  - { id: 1, class: _, preferred-register: '' }
  - { id: 2, class: _, preferred-register: '' }
  - { id: 3, class: _, preferred-register: '' }
  - { id: 4, class: _, preferred-register: '' }
  - { id: 5, class: _, preferred-register: '' }
liveins:
fixedStack:
stack:
constants:
body:             |
  bb.1 (%ir-block.0):
    liveins: $xmm0, $xmm1

    ; CHECK-LABEL: name: test_fadd_double
    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0
    ; CHECK: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128)
    ; CHECK: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1
    ; CHECK: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)
    ; CHECK: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[TRUNC]], [[TRUNC1]]
    ; CHECK: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[FADD]](s64)
    ; CHECK: $xmm0 = COPY [[ANYEXT]](s128)
    ; CHECK: RET 0, implicit $xmm0
    %2:_(s128) = COPY $xmm0
    %0:_(s64) = G_TRUNC %2(s128)
    %3:_(s128) = COPY $xmm1
    %1:_(s64) = G_TRUNC %3(s128)
    %4:_(s64) = G_FADD %0, %1
    %5:_(s128) = G_ANYEXT %4(s64)
    $xmm0 = COPY %5(s128)
    RET 0, implicit $xmm0

...
