Revert "Do materialize for floating point"
[oota-llvm.git] / test / CodeGen / Mips / mno-ldc1-sdc1.ll
1 ; RUN: llc -march=mipsel -relocation-model=pic -mno-ldc1-sdc1 -mcpu=mips32r2 \
2 ; RUN: < %s | FileCheck %s -check-prefix=LE-PIC
3 ; RUN: llc -march=mipsel -relocation-model=static -mno-ldc1-sdc1 < %s | \
4 ; RUN: FileCheck %s -check-prefix=LE-STATIC
5 ; RUN: llc -march=mips -relocation-model=pic -mno-ldc1-sdc1 < %s | \
6 ; RUN: FileCheck %s -check-prefix=BE-PIC
7 ; RUN: llc -march=mipsel -mcpu=mips32r2 < %s | \
8 ; RUN: FileCheck %s -check-prefix=CHECK-LDC1-SDC1
9
10 @g0 = common global double 0.000000e+00, align 8
11
12 ; LE-PIC-LABEL: test_ldc1:
13 ; LE-PIC-DAG: lw $[[R0:[0-9]+]], 0(${{[0-9]+}})
14 ; LE-PIC-DAG: lw $[[R1:[0-9]+]], 4(${{[0-9]+}})
15 ; LE-PIC-DAG: mtc1 $[[R0]], $f0
16 ; LE-PIC-DAG: mtc1 $[[R1]], $f1
17 ; LE-STATIC-LABEL: test_ldc1:
18 ; LE-STATIC-DAG: lui $[[R0:[0-9]+]], %hi(g0)
19 ; LE-STATIC-DAG: lw $[[R1:[0-9]+]], %lo(g0)($[[R0]])
20 ; LE-STATIC-DAG: addiu $[[R2:[0-9]+]], $[[R0]], %lo(g0)
21 ; LE-STATIC-DAG: lw $[[R3:[0-9]+]], 4($[[R2]])
22 ; LE-STATIC-DAG: mtc1 $[[R1]], $f0
23 ; LE-STATIC-DAG: mtc1 $[[R3]], $f1
24 ; BE-PIC-LABEL: test_ldc1:
25 ; BE-PIC-DAG: lw $[[R0:[0-9]+]], 0(${{[0-9]+}})
26 ; BE-PIC-DAG: lw $[[R1:[0-9]+]], 4(${{[0-9]+}})
27 ; BE-PIC-DAG: mtc1 $[[R1]], $f0
28 ; BE-PIC-DAG: mtc1 $[[R0]], $f1
29 ; CHECK-LDC1-SDC1-LABEL: test_ldc1:
30 ; CHECK-LDC1-SDC1: ldc1 $f{{[0-9]+}}
31
32 define double @test_ldc1() {
33 entry:
34   %0 = load double* @g0, align 8
35   ret double %0
36 }
37
38 ; LE-PIC-LABEL: test_sdc1:
39 ; LE-PIC-DAG: mfc1 $[[R0:[0-9]+]], $f12
40 ; LE-PIC-DAG: mfc1 $[[R1:[0-9]+]], $f13
41 ; LE-PIC-DAG: sw $[[R0]], 0(${{[0-9]+}})
42 ; LE-PIC-DAG: sw $[[R1]], 4(${{[0-9]+}})
43 ; LE-STATIC-LABEL: test_sdc1:
44 ; LE-STATIC-DAG: mfc1 $[[R0:[0-9]+]], $f12
45 ; LE-STATIC-DAG: mfc1 $[[R1:[0-9]+]], $f13
46 ; LE-STATIC-DAG: lui $[[R2:[0-9]+]], %hi(g0)
47 ; LE-STATIC-DAG: sw $[[R0]], %lo(g0)($[[R2]])
48 ; LE-STATIC-DAG: addiu $[[R3:[0-9]+]], $[[R2]], %lo(g0)
49 ; LE-STATIC-DAG: sw $[[R1]], 4($[[R3]])
50 ; BE-PIC-LABEL: test_sdc1:
51 ; BE-PIC-DAG: mfc1 $[[R0:[0-9]+]], $f12
52 ; BE-PIC-DAG: mfc1 $[[R1:[0-9]+]], $f13
53 ; BE-PIC-DAG: sw $[[R1]], 0(${{[0-9]+}})
54 ; BE-PIC-DAG: sw $[[R0]], 4(${{[0-9]+}})
55 ; CHECK-LDC1-SDC1-LABEL: test_sdc1:
56 ; CHECK-LDC1-SDC1: sdc1 $f{{[0-9]+}}
57
58 define void @test_sdc1(double %a) {
59 entry:
60   store double %a, double* @g0, align 8
61   ret void
62 }
63
64
65 ; LE-PIC-LABEL: test_ldxc1:
66 ; LE-PIC-DAG: lw $[[R0:[0-9]+]], 0(${{[0-9]+}})
67 ; LE-PIC-DAG: lw $[[R1:[0-9]+]], 4(${{[0-9]+}})
68 ; LE-PIC-DAG: mtc1 $[[R0]], $f0
69 ; LE-PIC-DAG: mtc1 $[[R1]], $f1
70 ; CHECK-LDC1-SDC1-LABEL: test_ldxc1:
71 ; CHECK-LDC1-SDC1: ldxc1 $f{{[0-9]+}}
72
73 define double @test_ldxc1(double* nocapture readonly %a, i32 %i) {
74 entry:
75   %arrayidx = getelementptr inbounds double* %a, i32 %i
76   %0 = load double* %arrayidx, align 8
77   ret double %0
78 }
79
80 ; LE-PIC-LABEL: test_sdxc1:
81 ; LE-PIC-DAG: mfc1 $[[R0:[0-9]+]], $f12
82 ; LE-PIC-DAG: mfc1 $[[R1:[0-9]+]], $f13
83 ; LE-PIC-DAG: sw $[[R0]], 0(${{[0-9]+}})
84 ; LE-PIC-DAG: sw $[[R1]], 4(${{[0-9]+}})
85 ; CHECK-LDC1-SDC1-LABEL: test_sdxc1:
86 ; CHECK-LDC1-SDC1: sdxc1 $f{{[0-9]+}}
87
88 define void @test_sdxc1(double %b, double* nocapture %a, i32 %i) {
89 entry:
90   %arrayidx = getelementptr inbounds double* %a, i32 %i
91   store double %b, double* %arrayidx, align 8
92   ret void
93 }