Jim Stichnoth | 5bc2b1d | 2014-05-22 13:38:48 -0700 | [diff] [blame] | 1 | ; Trivial smoke test of bitcast between integer and FP types. |
| 2 | |
Jim Stichnoth | 729dbd0 | 2015-02-25 14:48:43 -0800 | [diff] [blame] | 3 | ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s |
| 4 | ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 5 | |
Jim Stichnoth | 033dda7 | 2016-10-03 07:56:25 -0700 | [diff] [blame] | 6 | ; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \ |
| 7 | ; RUN: --target arm32 -i %s --args -O2 \ |
| 8 | ; RUN: | %if --need=target_ARM32 --command FileCheck %s \ |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 9 | ; RUN: --check-prefix=ARM32 |
| 10 | |
Jim Stichnoth | 033dda7 | 2016-10-03 07:56:25 -0700 | [diff] [blame] | 11 | ; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \ |
| 12 | ; RUN: --target arm32 -i %s --args -Om1 \ |
| 13 | ; RUN: | %if --need=target_ARM32 --command FileCheck %s \ |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 14 | ; RUN: --check-prefix=ARM32 |
| 15 | |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 16 | ; RUN: %if --need=target_MIPS32 --need=allow_dump \ |
| 17 | ; RUN: --command %p2i --filetype=asm \ |
| 18 | ; RUN: --target mips32 -i %s --args -O2 \ |
| 19 | ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ |
| 20 | ; RUN: --command FileCheck %s \ |
| 21 | ; RUN: --check-prefix=MIPS32 --check-prefix=MIPS32-O2 |
| 22 | |
| 23 | ; RUN: %if --need=target_MIPS32 --need=allow_dump \ |
| 24 | ; RUN: --command %p2i --filetype=asm \ |
| 25 | ; RUN: --target mips32 -i %s --args -Om1 \ |
| 26 | ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ |
| 27 | ; RUN: --command FileCheck %s \ |
| 28 | ; RUN: --check-prefix=MIPS32 --check-prefix=MIPS32-OM1 |
| 29 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 30 | define internal i32 @cast_f2i(float %f) { |
| 31 | entry: |
| 32 | %v0 = bitcast float %f to i32 |
| 33 | ret i32 %v0 |
| 34 | } |
Jan Voung | 1ee3416 | 2014-06-24 13:43:30 -0700 | [diff] [blame] | 35 | ; CHECK-LABEL: cast_f2i |
Jim Stichnoth | a1410df | 2016-06-16 10:02:48 -0700 | [diff] [blame] | 36 | ; CHECK: movd eax |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 37 | ; ARM32-LABEL: cast_f2i |
| 38 | ; ARM32: vmov r{{[0-9]+}}, s{{[0-9]+}} |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 39 | ; MIPS32-LABEL: cast_f2i |
| 40 | ; MIPS32-O2: mfc1 $v0, $f{{[0-9]+}} |
| 41 | ; MIPS32-OM1: swc1 |
| 42 | ; MIPS32-OM1: lw |
Jim Stichnoth | d97c7df | 2014-06-04 11:57:08 -0700 | [diff] [blame] | 43 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 44 | define internal float @cast_i2f(i32 %i) { |
| 45 | entry: |
| 46 | %v0 = bitcast i32 %i to float |
| 47 | ret float %v0 |
| 48 | } |
Jan Voung | 1ee3416 | 2014-06-24 13:43:30 -0700 | [diff] [blame] | 49 | ; CHECK-LABEL: cast_i2f |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 50 | ; CHECK: fld DWORD PTR |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 51 | ; ARM32-LABEL: cast_i2f |
| 52 | ; ARM32: vmov s{{[0-9]+}}, r{{[0-9]+}} |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 53 | ; MIPS32-LABEL: cast_i2f |
| 54 | ; MIPS32-O2: mtc1 $a0, $f{{[0-9]+}} |
| 55 | ; MIPS32-OM1: sw |
| 56 | ; MIPS32-OM1: lwc1 |
Jim Stichnoth | d97c7df | 2014-06-04 11:57:08 -0700 | [diff] [blame] | 57 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 58 | define internal i64 @cast_d2ll(double %d) { |
| 59 | entry: |
| 60 | %v0 = bitcast double %d to i64 |
| 61 | ret i64 %v0 |
| 62 | } |
Jan Voung | 1ee3416 | 2014-06-24 13:43:30 -0700 | [diff] [blame] | 63 | ; CHECK-LABEL: cast_d2ll |
| 64 | ; CHECK: mov edx |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 65 | ; ARM32-LABEL: cast_d2ll |
| 66 | ; ARM32: vmov r{{[0-9]+}}, r{{[0-9]+}}, d{{[0-9]+}} |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 67 | ; MIPS32-LABEL: cast_d2ll |
Jaydeep Patil | 2bbda7f | 2017-01-10 21:48:58 -0800 | [diff] [blame] | 68 | ; MIPS32-O2: swc1 $f13, {{.*}} |
| 69 | ; MIPS32-O2: swc1 $f12, {{.*}} |
| 70 | ; MIPS32-O2: lw $v0, {{.*}} |
| 71 | ; MIPS32-O2: lw $v1, {{.*}} |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 72 | ; MIPS32-OM1: sdc1 |
| 73 | ; MIPS32-OM1: lw |
| 74 | ; MIPS32-OM1: lw |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 75 | |
Jan Voung | 1ee3416 | 2014-06-24 13:43:30 -0700 | [diff] [blame] | 76 | define internal i64 @cast_d2ll_const() { |
| 77 | entry: |
| 78 | %v0 = bitcast double 0x12345678901234 to i64 |
| 79 | ret i64 %v0 |
| 80 | } |
| 81 | ; CHECK-LABEL: cast_d2ll_const |
Jim Stichnoth | e922c23 | 2016-04-09 08:54:20 -0700 | [diff] [blame] | 82 | ; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x0 {{.*}} {{.*}}0012345678901234 |
| 83 | ; CHECK: mov e{{..}},{{(DWORD PTR )?}}ds:0x4 {{.*}} {{.*}}0012345678901234 |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 84 | ; ARM32-LABEL: cast_d2ll_const |
Jim Stichnoth | 033dda7 | 2016-10-03 07:56:25 -0700 | [diff] [blame] | 85 | ; ARM32-DAG: movw [[ADDR:r[0-9]+]], #{{.*_MOVW_}} |
| 86 | ; ARM32-DAG: movt [[ADDR]], #{{.*_MOVT_}} |
John Porto | ba6a67c | 2015-09-25 15:19:45 -0700 | [diff] [blame] | 87 | ; ARM32-DAG: vldr [[DREG:d[0-9]+]], {{\[}}[[ADDR]]{{\]}} |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 88 | ; ARM32: vmov r{{[0-9]+}}, r{{[0-9]+}}, [[DREG]] |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 89 | ; MIPS32-LABEL: cast_d2ll_const |
| 90 | ; MIPS32: lui {{.*}}, %hi(.L$double$0012345678901234) |
| 91 | ; MIPS32: ldc1 {{.*}}, %lo(.L$double$0012345678901234)({{.*}}) |
Jaydeep Patil | 2bbda7f | 2017-01-10 21:48:58 -0800 | [diff] [blame] | 92 | ; MIPS32: swc1 $f{{[0-9]+}}, {{.*}} |
| 93 | ; MIPS32: swc1 $f{{[0-9]+}}, {{.*}} |
| 94 | ; MIPS32: lw $v0, {{.*}} |
| 95 | ; MIPS32: lw $v1, {{.*}} |
Jim Stichnoth | d97c7df | 2014-06-04 11:57:08 -0700 | [diff] [blame] | 96 | |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 97 | define internal double @cast_ll2d(i64 %ll) { |
| 98 | entry: |
| 99 | %v0 = bitcast i64 %ll to double |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 100 | ret double %v0 |
| 101 | } |
Jan Voung | 1ee3416 | 2014-06-24 13:43:30 -0700 | [diff] [blame] | 102 | ; CHECK-LABEL: cast_ll2d |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 103 | ; CHECK: fld QWORD PTR |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 104 | ; ARM32-LABEL: cast_ll2d |
| 105 | ; ARM32: vmov d{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}} |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 106 | ; MIPS32-LABEL: cast_ll2d |
| 107 | ; MIPS32-O2: mtc1 $a0, $f{{[0-9]+}} |
| 108 | ; MIPS32-O2: mtc1 $a1, $f{{[0-9]+}} |
| 109 | ; MIPS32-OM1: sw |
| 110 | ; MIPS32-OM1: sw |
| 111 | ; MIPS32-OM1: ldc1 |
Jim Stichnoth | f7c9a14 | 2014-04-29 10:52:43 -0700 | [diff] [blame] | 112 | |
Jan Voung | 1ee3416 | 2014-06-24 13:43:30 -0700 | [diff] [blame] | 113 | define internal double @cast_ll2d_const() { |
| 114 | entry: |
| 115 | %v0 = bitcast i64 12345678901234 to double |
| 116 | ret double %v0 |
| 117 | } |
| 118 | ; CHECK-LABEL: cast_ll2d_const |
Jan Voung | a2703ae | 2015-02-19 11:27:44 -0800 | [diff] [blame] | 119 | ; CHECK: mov {{.*}},0x73ce2ff2 |
| 120 | ; CHECK: mov {{.*}},0xb3a |
| 121 | ; CHECK: fld QWORD PTR |
John Porto | f977f71 | 2015-09-14 16:28:33 -0700 | [diff] [blame] | 122 | ; ARM32-LABEL: cast_ll2d_const |
| 123 | ; ARM32-DAG: movw [[REG0:r[0-9]+]], #12274 |
| 124 | ; ARM32-DAG: movt [[REG0:r[0-9]+]], #29646 |
| 125 | ; ARM32-DAG: movw [[REG1:r[0-9]+]], #2874 |
| 126 | ; ARM32: vmov d{{[0-9]+}}, [[REG0]], [[REG1]] |
Sagar Thakur | b001cc4 | 2016-10-11 23:36:01 -0700 | [diff] [blame] | 127 | ; MIPS32-LABEL: cast_ll2d_const |
| 128 | ; MIPS32: lui {{.*}}, 29646 |
| 129 | ; MIPS32: ori {{.*}}, {{.*}}, 12274 |
| 130 | ; MIPS32: addiu {{.*}}, $zero, 2874 |
| 131 | ; MIPS32-O2: mtc1 {{.*}}, $f{{[0-9]+}} |
| 132 | ; MIPS32-O2: mtc1 {{.*}}, $f{{[0-9]+}} |
| 133 | ; MIPS32-OM1: sw |
| 134 | ; MIPS32-OM1: sw |
| 135 | ; MIPS32-OM1: ldc1 |