@@ -89,100 +89,59 @@ entry:
89
89
}
90
90
91
91
define i128 @test_copysign (ppc_fp128 %x , ppc_fp128 %y ) nounwind {
92
- ; PPC64-P8-LE-LABEL: test_copysign:
93
- ; PPC64-P8-LE: # %bb.0: # %entry
94
- ; PPC64-P8-LE-NEXT: mflr 0
95
- ; PPC64-P8-LE-NEXT: stdu 1, -32(1)
96
- ; PPC64-P8-LE-NEXT: std 0, 48(1)
97
- ; PPC64-P8-LE-NEXT: bl copysignl
98
- ; PPC64-P8-LE-NEXT: nop
99
- ; PPC64-P8-LE-NEXT: mffprd 3, 1
100
- ; PPC64-P8-LE-NEXT: mffprd 4, 2
101
- ; PPC64-P8-LE-NEXT: addi 1, 1, 32
102
- ; PPC64-P8-LE-NEXT: ld 0, 16(1)
103
- ; PPC64-P8-LE-NEXT: mtlr 0
104
- ; PPC64-P8-LE-NEXT: blr
105
- ;
106
- ; PPC64-LE-LABEL: test_copysign:
107
- ; PPC64-LE: # %bb.0: # %entry
108
- ; PPC64-LE-NEXT: mflr 0
109
- ; PPC64-LE-NEXT: stdu 1, -48(1)
110
- ; PPC64-LE-NEXT: std 0, 64(1)
111
- ; PPC64-LE-NEXT: bl copysignl
112
- ; PPC64-LE-NEXT: nop
113
- ; PPC64-LE-NEXT: stfd 1, 32(1)
114
- ; PPC64-LE-NEXT: stfd 2, 40(1)
115
- ; PPC64-LE-NEXT: ld 3, 32(1)
116
- ; PPC64-LE-NEXT: ld 4, 40(1)
117
- ; PPC64-LE-NEXT: addi 1, 1, 48
118
- ; PPC64-LE-NEXT: ld 0, 16(1)
119
- ; PPC64-LE-NEXT: mtlr 0
120
- ; PPC64-LE-NEXT: blr
121
- ;
122
- ; PPC64-P8-BE-LABEL: test_copysign:
123
- ; PPC64-P8-BE: # %bb.0: # %entry
124
- ; PPC64-P8-BE-NEXT: mflr 0
125
- ; PPC64-P8-BE-NEXT: stdu 1, -112(1)
126
- ; PPC64-P8-BE-NEXT: std 0, 128(1)
127
- ; PPC64-P8-BE-NEXT: bl copysignl
128
- ; PPC64-P8-BE-NEXT: nop
129
- ; PPC64-P8-BE-NEXT: mffprd 3, 1
130
- ; PPC64-P8-BE-NEXT: mffprd 4, 2
131
- ; PPC64-P8-BE-NEXT: addi 1, 1, 112
132
- ; PPC64-P8-BE-NEXT: ld 0, 16(1)
133
- ; PPC64-P8-BE-NEXT: mtlr 0
134
- ; PPC64-P8-BE-NEXT: blr
92
+ ; PPC64-P8-LABEL: test_copysign:
93
+ ; PPC64-P8: # %bb.0: # %entry
94
+ ; PPC64-P8-NEXT: xscpsgndp 0, 3, 1
95
+ ; PPC64-P8-NEXT: xscmpudp 0, 1, 0
96
+ ; PPC64-P8-NEXT: beq 0, .LBB2_2
97
+ ; PPC64-P8-NEXT: # %bb.1: # %entry
98
+ ; PPC64-P8-NEXT: xsnegdp 2, 2
99
+ ; PPC64-P8-NEXT: .LBB2_2: # %entry
100
+ ; PPC64-P8-NEXT: mffprd 3, 0
101
+ ; PPC64-P8-NEXT: mffprd 4, 2
102
+ ; PPC64-P8-NEXT: blr
135
103
;
136
- ; PPC64-BE-LABEL: test_copysign:
137
- ; PPC64-BE: # %bb.0: # %entry
138
- ; PPC64-BE-NEXT: mflr 0
139
- ; PPC64-BE-NEXT: stdu 1, -128(1)
140
- ; PPC64-BE-NEXT: std 0, 144(1)
141
- ; PPC64-BE-NEXT: bl copysignl
142
- ; PPC64-BE-NEXT: nop
143
- ; PPC64-BE-NEXT: stfd 1, 112(1)
144
- ; PPC64-BE-NEXT: stfd 2, 120(1)
145
- ; PPC64-BE-NEXT: ld 3, 112(1)
146
- ; PPC64-BE-NEXT: ld 4, 120(1)
147
- ; PPC64-BE-NEXT: addi 1, 1, 128
148
- ; PPC64-BE-NEXT: ld 0, 16(1)
149
- ; PPC64-BE-NEXT: mtlr 0
150
- ; PPC64-BE-NEXT: blr
104
+ ; PPC64-LABEL: test_copysign:
105
+ ; PPC64: # %bb.0: # %entry
106
+ ; PPC64-NEXT: xscpsgndp 0, 3, 1
107
+ ; PPC64-NEXT: xscmpudp 0, 1, 0
108
+ ; PPC64-NEXT: beq 0, .LBB2_2
109
+ ; PPC64-NEXT: # %bb.1: # %entry
110
+ ; PPC64-NEXT: xsnegdp 2, 2
111
+ ; PPC64-NEXT: .LBB2_2: # %entry
112
+ ; PPC64-NEXT: stfd 0, -16(1)
113
+ ; PPC64-NEXT: stfd 2, -8(1)
114
+ ; PPC64-NEXT: ld 3, -16(1)
115
+ ; PPC64-NEXT: ld 4, -8(1)
116
+ ; PPC64-NEXT: blr
151
117
;
152
118
; PPC32-LABEL: test_copysign:
153
119
; PPC32: # %bb.0: # %entry
154
- ; PPC32-NEXT: mflr 0
155
- ; PPC32-NEXT: stwu 1, -80(1)
156
- ; PPC32-NEXT: stw 0, 84(1)
157
- ; PPC32-NEXT: stfd 1, 32(1)
158
- ; PPC32-NEXT: lwz 3, 36(1)
159
- ; PPC32-NEXT: stfd 2, 24(1)
160
- ; PPC32-NEXT: stw 3, 52(1)
161
- ; PPC32-NEXT: lwz 3, 32(1)
162
- ; PPC32-NEXT: stfd 3, 56(1)
163
- ; PPC32-NEXT: stw 3, 48(1)
164
- ; PPC32-NEXT: lwz 3, 28(1)
165
- ; PPC32-NEXT: lfd 4, 64(1)
166
- ; PPC32-NEXT: stw 3, 44(1)
167
- ; PPC32-NEXT: lwz 3, 24(1)
168
- ; PPC32-NEXT: lfd 1, 48(1)
169
- ; PPC32-NEXT: stw 3, 40(1)
170
- ; PPC32-NEXT: lwz 3, 60(1)
171
- ; PPC32-NEXT: lfd 2, 40(1)
172
- ; PPC32-NEXT: stw 3, 76(1)
173
- ; PPC32-NEXT: lwz 3, 56(1)
174
- ; PPC32-NEXT: stw 3, 72(1)
175
- ; PPC32-NEXT: lfd 3, 72(1)
176
- ; PPC32-NEXT: bl copysignl
177
- ; PPC32-NEXT: stfd 1, 8(1)
120
+ ; PPC32-NEXT: stwu 1, -32(1)
121
+ ; PPC32-NEXT: stfd 3, 8(1)
122
+ ; PPC32-NEXT: lbz 3, 8(1)
123
+ ; PPC32-NEXT: srwi 3, 3, 7
124
+ ; PPC32-NEXT: andi. 3, 3, 1
125
+ ; PPC32-NEXT: bc 12, 1, .LBB2_2
126
+ ; PPC32-NEXT: # %bb.1: # %entry
127
+ ; PPC32-NEXT: fabs 0, 1
128
+ ; PPC32-NEXT: fcmpu 0, 1, 0
129
+ ; PPC32-NEXT: bne 0, .LBB2_3
130
+ ; PPC32-NEXT: b .LBB2_4
131
+ ; PPC32-NEXT: .LBB2_2:
132
+ ; PPC32-NEXT: fnabs 0, 1
133
+ ; PPC32-NEXT: fcmpu 0, 1, 0
134
+ ; PPC32-NEXT: beq 0, .LBB2_4
135
+ ; PPC32-NEXT: .LBB2_3: # %entry
136
+ ; PPC32-NEXT: fneg 2, 2
137
+ ; PPC32-NEXT: .LBB2_4: # %entry
138
+ ; PPC32-NEXT: stfd 0, 24(1)
178
139
; PPC32-NEXT: stfd 2, 16(1)
179
- ; PPC32-NEXT: lwz 3, 8 (1)
180
- ; PPC32-NEXT: lwz 4, 12 (1)
140
+ ; PPC32-NEXT: lwz 3, 24 (1)
141
+ ; PPC32-NEXT: lwz 4, 28 (1)
181
142
; PPC32-NEXT: lwz 5, 16(1)
182
143
; PPC32-NEXT: lwz 6, 20(1)
183
- ; PPC32-NEXT: lwz 0, 84(1)
184
- ; PPC32-NEXT: addi 1, 1, 80
185
- ; PPC32-NEXT: mtlr 0
144
+ ; PPC32-NEXT: addi 1, 1, 32
186
145
; PPC32-NEXT: blr
187
146
entry:
188
147
%0 = tail call ppc_fp128 @llvm.copysign.ppcf128 (ppc_fp128 %x , ppc_fp128 %y )
@@ -236,3 +195,8 @@ entry:
236
195
237
196
declare ppc_fp128 @llvm.fabs.ppcf128 (ppc_fp128 )
238
197
declare ppc_fp128 @llvm.copysign.ppcf128 (ppc_fp128 , ppc_fp128 )
198
+ ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
199
+ ; PPC64-BE: {{.*}}
200
+ ; PPC64-LE: {{.*}}
201
+ ; PPC64-P8-BE: {{.*}}
202
+ ; PPC64-P8-LE: {{.*}}
0 commit comments