110 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2#RUN: llc -mtriple=x86_64-linux-gnu -mattr=+sse2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK_NOPIC643#RUN: llc -mtriple=x86_64-linux-gnu -mattr=+sse2 -code-model=large -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK_LARGE644#RUN: llc -mtriple=i386-linux-gnu -mattr=+sse2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK_SMALL325#RUN: llc -mtriple=i386-linux-gnu -mattr=+sse2 -code-model=large -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK_LARGE326#RUN: llc -mtriple=x86_64-linux-gnu -mattr=+sse2 -relocation-model=pic -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK_PIC647 8--- |9 define float @test_float() {10 entry:11 ret float 5.500000e+0012 }13 14 define double @test_double() {15 entry:16 ret double 5.500000e+0017 }18---19name: test_float20#21alignment: 1622legalized: true23regBankSelected: true24tracksRegLiveness: true25registers:26 - { id: 0, class: vecr, preferred-register: '' }27#28#29body: |30 bb.1.entry:31 ; CHECK_NOPIC64-LABEL: name: test_float32 ; CHECK_NOPIC64: [[MOVSSrm_alt:%[0-9]+]]:fr32 = MOVSSrm_alt $rip, 1, $noreg, %const.0, $noreg33 ; CHECK_NOPIC64-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSSrm_alt]]34 ; CHECK_NOPIC64-NEXT: $xmm0 = COPY [[COPY]]35 ; CHECK_NOPIC64-NEXT: RET 0, implicit $xmm036 ; CHECK_LARGE64-LABEL: name: test_float37 ; CHECK_LARGE64: [[MOV64ri:%[0-9]+]]:gr64 = MOV64ri %const.038 ; CHECK_LARGE64-NEXT: [[MOVSSrm_alt:%[0-9]+]]:fr32 = MOVSSrm_alt [[MOV64ri]], 1, $noreg, 0, $noreg :: (load (p0) from constant-pool, align 4)39 ; CHECK_LARGE64-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSSrm_alt]]40 ; CHECK_LARGE64-NEXT: $xmm0 = COPY [[COPY]]41 ; CHECK_LARGE64-NEXT: RET 0, implicit $xmm042 ; CHECK_SMALL32-LABEL: name: test_float43 ; CHECK_SMALL32: [[MOVSSrm_alt:%[0-9]+]]:fr32 = MOVSSrm_alt $noreg, 1, $noreg, %const.0, $noreg44 ; CHECK_SMALL32-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSSrm_alt]]45 ; CHECK_SMALL32-NEXT: $xmm0 = COPY [[COPY]]46 ; CHECK_SMALL32-NEXT: RET 0, implicit $xmm047 ; CHECK_LARGE32-LABEL: name: test_float48 ; CHECK_LARGE32: [[MOVSSrm_alt:%[0-9]+]]:fr32 = MOVSSrm_alt $noreg, 1, $noreg, %const.0, $noreg49 ; CHECK_LARGE32-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSSrm_alt]]50 ; CHECK_LARGE32-NEXT: $xmm0 = COPY [[COPY]]51 ; CHECK_LARGE32-NEXT: RET 0, implicit $xmm052 ; CHECK_PIC64-LABEL: name: test_float53 ; CHECK_PIC64: [[MOVSSrm_alt:%[0-9]+]]:fr32 = MOVSSrm_alt $rip, 1, $noreg, %const.0, $noreg54 ; CHECK_PIC64-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSSrm_alt]]55 ; CHECK_PIC64-NEXT: $xmm0 = COPY [[COPY]]56 ; CHECK_PIC64-NEXT: RET 0, implicit $xmm057 %0:vecr(s32) = G_FCONSTANT float 5.500000e+0058 %1:vecr(s128) = G_ANYEXT %0(s32)59 $xmm0 = COPY %1(s128)60 RET 0, implicit $xmm061 62...63---64name: test_double65#66alignment: 1667legalized: true68regBankSelected: true69tracksRegLiveness: true70#71#72registers:73 - { id: 0, class: vecr, preferred-register: '' }74#75#76body: |77 bb.1.entry:78 ; CHECK_NOPIC64-LABEL: name: test_double79 ; CHECK_NOPIC64: [[MOVSDrm_alt:%[0-9]+]]:fr64 = MOVSDrm_alt $rip, 1, $noreg, %const.0, $noreg80 ; CHECK_NOPIC64-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSDrm_alt]]81 ; CHECK_NOPIC64-NEXT: $xmm0 = COPY [[COPY]]82 ; CHECK_NOPIC64-NEXT: RET 0, implicit $xmm083 ; CHECK_LARGE64-LABEL: name: test_double84 ; CHECK_LARGE64: [[MOV64ri:%[0-9]+]]:gr64 = MOV64ri %const.085 ; CHECK_LARGE64-NEXT: [[MOVSDrm_alt:%[0-9]+]]:fr64 = MOVSDrm_alt [[MOV64ri]], 1, $noreg, 0, $noreg :: (load (p0) from constant-pool)86 ; CHECK_LARGE64-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSDrm_alt]]87 ; CHECK_LARGE64-NEXT: $xmm0 = COPY [[COPY]]88 ; CHECK_LARGE64-NEXT: RET 0, implicit $xmm089 ; CHECK_SMALL32-LABEL: name: test_double90 ; CHECK_SMALL32: [[MOVSDrm_alt:%[0-9]+]]:fr64 = MOVSDrm_alt $noreg, 1, $noreg, %const.0, $noreg91 ; CHECK_SMALL32-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSDrm_alt]]92 ; CHECK_SMALL32-NEXT: $xmm0 = COPY [[COPY]]93 ; CHECK_SMALL32-NEXT: RET 0, implicit $xmm094 ; CHECK_LARGE32-LABEL: name: test_double95 ; CHECK_LARGE32: [[MOVSDrm_alt:%[0-9]+]]:fr64 = MOVSDrm_alt $noreg, 1, $noreg, %const.0, $noreg96 ; CHECK_LARGE32-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSDrm_alt]]97 ; CHECK_LARGE32-NEXT: $xmm0 = COPY [[COPY]]98 ; CHECK_LARGE32-NEXT: RET 0, implicit $xmm099 ; CHECK_PIC64-LABEL: name: test_double100 ; CHECK_PIC64: [[MOVSDrm_alt:%[0-9]+]]:fr64 = MOVSDrm_alt $rip, 1, $noreg, %const.0, $noreg101 ; CHECK_PIC64-NEXT: [[COPY:%[0-9]+]]:vr128 = COPY [[MOVSDrm_alt]]102 ; CHECK_PIC64-NEXT: $xmm0 = COPY [[COPY]]103 ; CHECK_PIC64-NEXT: RET 0, implicit $xmm0104 %0:vecr(s64) = G_FCONSTANT double 5.500000e+00105 %1:vecr(s128) = G_ANYEXT %0(s64)106 $xmm0 = COPY %1(s128)107 RET 0, implicit $xmm0108 109...110