1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -O0 -mtriple=mipsel-linux-gnu -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP32 3# RUN: llc -O0 -mtriple=mipsel-linux-gnu -mattr=+fp64,+mips32r2 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=FP64 4--- | 5 6 define void @i32tof32() {entry: ret void} 7 define void @i32tof64() {entry: ret void} 8 define void @u32tof64() {entry: ret void} 9 10... 11--- 12name: i32tof32 13alignment: 4 14legalized: true 15tracksRegLiveness: true 16body: | 17 bb.1.entry: 18 liveins: $a0 19 20 ; FP32-LABEL: name: i32tof32 21 ; FP32: liveins: $a0 22 ; FP32: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0 23 ; FP32: [[SITOFP:%[0-9]+]]:fprb(s32) = G_SITOFP [[COPY]](s32) 24 ; FP32: $f0 = COPY [[SITOFP]](s32) 25 ; FP32: RetRA implicit $f0 26 ; FP64-LABEL: name: i32tof32 27 ; FP64: liveins: $a0 28 ; FP64: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0 29 ; FP64: [[SITOFP:%[0-9]+]]:fprb(s32) = G_SITOFP [[COPY]](s32) 30 ; FP64: $f0 = COPY [[SITOFP]](s32) 31 ; FP64: RetRA implicit $f0 32 %0:_(s32) = COPY $a0 33 %1:_(s32) = G_SITOFP %0(s32) 34 $f0 = COPY %1(s32) 35 RetRA implicit $f0 36 37... 38--- 39name: i32tof64 40alignment: 4 41legalized: true 42tracksRegLiveness: true 43body: | 44 bb.1.entry: 45 liveins: $a0 46 47 ; FP32-LABEL: name: i32tof64 48 ; FP32: liveins: $a0 49 ; FP32: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0 50 ; FP32: [[SITOFP:%[0-9]+]]:fprb(s64) = G_SITOFP [[COPY]](s32) 51 ; FP32: $d0 = COPY [[SITOFP]](s64) 52 ; FP32: RetRA implicit $d0 53 ; FP64-LABEL: name: i32tof64 54 ; FP64: liveins: $a0 55 ; FP64: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0 56 ; FP64: [[SITOFP:%[0-9]+]]:fprb(s64) = G_SITOFP [[COPY]](s32) 57 ; FP64: $d0 = COPY [[SITOFP]](s64) 58 ; FP64: RetRA implicit $d0 59 %0:_(s32) = COPY $a0 60 %1:_(s64) = G_SITOFP %0(s32) 61 $d0 = COPY %1(s64) 62 RetRA implicit $d0 63 64... 65--- 66name: u32tof64 67alignment: 4 68legalized: true 69tracksRegLiveness: true 70body: | 71 bb.1.entry: 72 liveins: $a0 73 74 ; FP32-LABEL: name: u32tof64 75 ; FP32: liveins: $a0 76 ; FP32: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0 77 ; FP32: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1127219200 78 ; FP32: [[MV:%[0-9]+]]:fprb(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32) 79 ; FP32: [[C1:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0x4330000000000000 80 ; FP32: [[FSUB:%[0-9]+]]:fprb(s64) = G_FSUB [[MV]], [[C1]] 81 ; FP32: $d0 = COPY [[FSUB]](s64) 82 ; FP32: RetRA implicit $d0 83 ; FP64-LABEL: name: u32tof64 84 ; FP64: liveins: $a0 85 ; FP64: [[COPY:%[0-9]+]]:gprb(s32) = COPY $a0 86 ; FP64: [[C:%[0-9]+]]:gprb(s32) = G_CONSTANT i32 1127219200 87 ; FP64: [[MV:%[0-9]+]]:fprb(s64) = G_MERGE_VALUES [[COPY]](s32), [[C]](s32) 88 ; FP64: [[C1:%[0-9]+]]:fprb(s64) = G_FCONSTANT double 0x4330000000000000 89 ; FP64: [[FSUB:%[0-9]+]]:fprb(s64) = G_FSUB [[MV]], [[C1]] 90 ; FP64: $d0 = COPY [[FSUB]](s64) 91 ; FP64: RetRA implicit $d0 92 %0:_(s32) = COPY $a0 93 %2:_(s32) = G_CONSTANT i32 1127219200 94 %3:_(s64) = G_MERGE_VALUES %0(s32), %2(s32) 95 %4:_(s64) = G_FCONSTANT double 0x4330000000000000 96 %1:_(s64) = G_FSUB %3, %4 97 $d0 = COPY %1(s64) 98 RetRA implicit $d0 99 100... 101