@@ -143,60 +143,82 @@ int v4() { return __builtin_cpu_supports("x86-64-v4"); }
143143// CHECK-PPC-NEXT: br label [[RETURN]]
144144// CHECK-PPC: if.else5:
145145// CHECK-PPC-NEXT: [[CPU_IS6:%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
146- // CHECK-PPC-NEXT: [[TMP9:%.*]] = icmp eq i32 [[CPU_IS6]], 45
147- // CHECK-PPC-NEXT: br i1 [[TMP9]], label [[IF_THEN7:%.*]], label [[IF_ELSE9 :%.*]]
146+ // CHECK-PPC-NEXT: [[TMP9:%.*]] = icmp eq i32 [[CPU_IS6]], 39
147+ // CHECK-PPC-NEXT: br i1 [[TMP9]], label [[IF_THEN7:%.*]], label [[IF_ELSE8 :%.*]]
148148// CHECK-PPC: if.then7:
149149// CHECK-PPC-NEXT: [[TMP10:%.*]] = load i32, ptr [[A_ADDR]], align 4
150- // CHECK-PPC-NEXT: [[ADD8 :%.*]] = add nsw i32 [[TMP10]], 3
151- // CHECK-PPC-NEXT: store i32 [[ADD8 ]], ptr [[RETVAL]], align 4
150+ // CHECK-PPC-NEXT: [[MUL :%.*]] = mul nsw i32 [[TMP10]], 3
151+ // CHECK-PPC-NEXT: store i32 [[MUL ]], ptr [[RETVAL]], align 4
152152// CHECK-PPC-NEXT: br label [[RETURN]]
153- // CHECK-PPC: if.else9 :
154- // CHECK-PPC-NEXT: [[CPU_IS10 :%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
155- // CHECK-PPC-NEXT: [[TMP11:%.*]] = icmp eq i32 [[CPU_IS10 ]], 46
156- // CHECK-PPC-NEXT: br i1 [[TMP11]], label [[IF_THEN11 :%.*]], label [[IF_ELSE13 :%.*]]
157- // CHECK-PPC: if.then11 :
153+ // CHECK-PPC: if.else8 :
154+ // CHECK-PPC-NEXT: [[CPU_IS9 :%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
155+ // CHECK-PPC-NEXT: [[TMP11:%.*]] = icmp eq i32 [[CPU_IS9 ]], 33
156+ // CHECK-PPC-NEXT: br i1 [[TMP11]], label [[IF_THEN10 :%.*]], label [[IF_ELSE12 :%.*]]
157+ // CHECK-PPC: if.then10 :
158158// CHECK-PPC-NEXT: [[TMP12:%.*]] = load i32, ptr [[A_ADDR]], align 4
159- // CHECK-PPC-NEXT: [[SUB12 :%.*]] = sub nsw i32 [[TMP12]], 3
160- // CHECK-PPC-NEXT: store i32 [[SUB12 ]], ptr [[RETVAL]], align 4
159+ // CHECK-PPC-NEXT: [[MUL11 :%.*]] = mul nsw i32 [[TMP12]], 4
160+ // CHECK-PPC-NEXT: store i32 [[MUL11 ]], ptr [[RETVAL]], align 4
161161// CHECK-PPC-NEXT: br label [[RETURN]]
162- // CHECK-PPC: if.else13 :
163- // CHECK-PPC-NEXT: [[CPU_IS14 :%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
164- // CHECK-PPC-NEXT: [[TMP13:%.*]] = icmp eq i32 [[CPU_IS14 ]], 47
165- // CHECK-PPC-NEXT: br i1 [[TMP13]], label [[IF_THEN15 :%.*]], label [[IF_ELSE17 :%.*]]
166- // CHECK-PPC: if.then15 :
162+ // CHECK-PPC: if.else12 :
163+ // CHECK-PPC-NEXT: [[CPU_IS13 :%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
164+ // CHECK-PPC-NEXT: [[TMP13:%.*]] = icmp eq i32 [[CPU_IS13 ]], 45
165+ // CHECK-PPC-NEXT: br i1 [[TMP13]], label [[IF_THEN14 :%.*]], label [[IF_ELSE16 :%.*]]
166+ // CHECK-PPC: if.then14 :
167167// CHECK-PPC-NEXT: [[TMP14:%.*]] = load i32, ptr [[A_ADDR]], align 4
168- // CHECK-PPC-NEXT: [[ADD16 :%.*]] = add nsw i32 [[TMP14]], 7
169- // CHECK-PPC-NEXT: store i32 [[ADD16 ]], ptr [[RETVAL]], align 4
168+ // CHECK-PPC-NEXT: [[ADD15 :%.*]] = add nsw i32 [[TMP14]], 3
169+ // CHECK-PPC-NEXT: store i32 [[ADD15 ]], ptr [[RETVAL]], align 4
170170// CHECK-PPC-NEXT: br label [[RETURN]]
171- // CHECK-PPC: if.else17 :
172- // CHECK-PPC-NEXT: [[CPU_IS18 :%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
173- // CHECK-PPC-NEXT: [[TMP15:%.*]] = icmp eq i32 [[CPU_IS18 ]], 48
174- // CHECK-PPC-NEXT: br i1 [[TMP15]], label [[IF_THEN19 :%.*]], label [[IF_END :%.*]]
175- // CHECK-PPC: if.then19 :
171+ // CHECK-PPC: if.else16 :
172+ // CHECK-PPC-NEXT: [[CPU_IS17 :%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
173+ // CHECK-PPC-NEXT: [[TMP15:%.*]] = icmp eq i32 [[CPU_IS17 ]], 46
174+ // CHECK-PPC-NEXT: br i1 [[TMP15]], label [[IF_THEN18 :%.*]], label [[IF_ELSE20 :%.*]]
175+ // CHECK-PPC: if.then18 :
176176// CHECK-PPC-NEXT: [[TMP16:%.*]] = load i32, ptr [[A_ADDR]], align 4
177- // CHECK-PPC-NEXT: [[SUB20:%.*]] = sub nsw i32 [[TMP16]], 7
178- // CHECK-PPC-NEXT: store i32 [[SUB20]], ptr [[RETVAL]], align 4
177+ // CHECK-PPC-NEXT: [[SUB19:%.*]] = sub nsw i32 [[TMP16]], 3
178+ // CHECK-PPC-NEXT: store i32 [[SUB19]], ptr [[RETVAL]], align 4
179+ // CHECK-PPC-NEXT: br label [[RETURN]]
180+ // CHECK-PPC: if.else20:
181+ // CHECK-PPC-NEXT: [[CPU_IS21:%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
182+ // CHECK-PPC-NEXT: [[TMP17:%.*]] = icmp eq i32 [[CPU_IS21]], 47
183+ // CHECK-PPC-NEXT: br i1 [[TMP17]], label [[IF_THEN22:%.*]], label [[IF_ELSE24:%.*]]
184+ // CHECK-PPC: if.then22:
185+ // CHECK-PPC-NEXT: [[TMP18:%.*]] = load i32, ptr [[A_ADDR]], align 4
186+ // CHECK-PPC-NEXT: [[ADD23:%.*]] = add nsw i32 [[TMP18]], 7
187+ // CHECK-PPC-NEXT: store i32 [[ADD23]], ptr [[RETVAL]], align 4
188+ // CHECK-PPC-NEXT: br label [[RETURN]]
189+ // CHECK-PPC: if.else24:
190+ // CHECK-PPC-NEXT: [[CPU_IS25:%.*]] = call i32 @llvm.ppc.fixed.addr.ld(i32 3)
191+ // CHECK-PPC-NEXT: [[TMP19:%.*]] = icmp eq i32 [[CPU_IS25]], 48
192+ // CHECK-PPC-NEXT: br i1 [[TMP19]], label [[IF_THEN26:%.*]], label [[IF_END:%.*]]
193+ // CHECK-PPC: if.then26:
194+ // CHECK-PPC-NEXT: [[TMP20:%.*]] = load i32, ptr [[A_ADDR]], align 4
195+ // CHECK-PPC-NEXT: [[SUB27:%.*]] = sub nsw i32 [[TMP20]], 7
196+ // CHECK-PPC-NEXT: store i32 [[SUB27]], ptr [[RETVAL]], align 4
179197// CHECK-PPC-NEXT: br label [[RETURN]]
180198// CHECK-PPC: if.end:
181- // CHECK-PPC-NEXT: br label [[IF_END21:%.*]]
182- // CHECK-PPC: if.end21:
183- // CHECK-PPC-NEXT: br label [[IF_END22:%.*]]
184- // CHECK-PPC: if.end22:
185- // CHECK-PPC-NEXT: br label [[IF_END23:%.*]]
186- // CHECK-PPC: if.end23:
187- // CHECK-PPC-NEXT: br label [[IF_END24:%.*]]
188- // CHECK-PPC: if.end24:
189- // CHECK-PPC-NEXT: br label [[IF_END25:%.*]]
190- // CHECK-PPC: if.end25:
191- // CHECK-PPC-NEXT: br label [[IF_END26:%.*]]
192- // CHECK-PPC: if.end26:
193- // CHECK-PPC-NEXT: [[TMP17:%.*]] = load i32, ptr [[A_ADDR]], align 4
194- // CHECK-PPC-NEXT: [[ADD27:%.*]] = add nsw i32 [[TMP17]], 5
195- // CHECK-PPC-NEXT: store i32 [[ADD27]], ptr [[RETVAL]], align 4
199+ // CHECK-PPC-NEXT: br label [[IF_END28:%.*]]
200+ // CHECK-PPC: if.end28:
201+ // CHECK-PPC-NEXT: br label [[IF_END29:%.*]]
202+ // CHECK-PPC: if.end29:
203+ // CHECK-PPC-NEXT: br label [[IF_END30:%.*]]
204+ // CHECK-PPC: if.end30:
205+ // CHECK-PPC-NEXT: br label [[IF_END31:%.*]]
206+ // CHECK-PPC: if.end31:
207+ // CHECK-PPC-NEXT: br label [[IF_END32:%.*]]
208+ // CHECK-PPC: if.end32:
209+ // CHECK-PPC-NEXT: br label [[IF_END33:%.*]]
210+ // CHECK-PPC: if.end33:
211+ // CHECK-PPC-NEXT: br label [[IF_END34:%.*]]
212+ // CHECK-PPC: if.end34:
213+ // CHECK-PPC-NEXT: br label [[IF_END35:%.*]]
214+ // CHECK-PPC: if.end35:
215+ // CHECK-PPC-NEXT: [[TMP21:%.*]] = load i32, ptr [[A_ADDR]], align 4
216+ // CHECK-PPC-NEXT: [[ADD36:%.*]] = add nsw i32 [[TMP21]], 5
217+ // CHECK-PPC-NEXT: store i32 [[ADD36]], ptr [[RETVAL]], align 4
196218// CHECK-PPC-NEXT: br label [[RETURN]]
197219// CHECK-PPC: return:
198- // CHECK-PPC-NEXT: [[TMP18 :%.*]] = load i32, ptr [[RETVAL]], align 4
199- // CHECK-PPC-NEXT: ret i32 [[TMP18 ]]
220+ // CHECK-PPC-NEXT: [[TMP22 :%.*]] = load i32, ptr [[RETVAL]], align 4
221+ // CHECK-PPC-NEXT: ret i32 [[TMP22 ]]
200222//
201223int test_ppc (int a ) {
202224 if (__builtin_cpu_supports ("arch_3_00" )) // HWCAP2
@@ -205,6 +227,10 @@ int test_ppc(int a) {
205227 return a - 5 ;
206228 else if (__builtin_cpu_is ("power7" )) // CPUID
207229 return a + a ;
230+ else if (__builtin_cpu_is ("pwr7" )) // CPUID
231+ return a * 3 ;
232+ else if (__builtin_cpu_is ("ppc970" )) // CPUID
233+ return a * 4 ;
208234 else if (__builtin_cpu_is ("power8" ))
209235 return a + 3 ;
210236 else if (__builtin_cpu_is ("power9" ))
0 commit comments