@@ -12,103 +12,83 @@ long double ld = -1.0L;
1212// CHECK-BE32-LABEL: define dso_local void @_Z12test_signbitv(
1313// CHECK-BE32-SAME: ) #[[ATTR0:[0-9]+]] {
1414// CHECK-BE32-NEXT: entry:
15- // CHECK-BE32-NEXT: [[TMP0:%.*]] = lshr i128 bitcast (ppc_fp128 0xM3FF00000000000000000000000000000 to i128), 64
16- // CHECK-BE32-NEXT: [[TMP1:%.*]] = trunc i128 [[TMP0]] to i64
17- // CHECK-BE32-NEXT: [[TMP2:%.*]] = icmp slt i64 [[TMP1]], 0
18- // CHECK-BE32-NEXT: [[FROMBOOL:%.*]] = zext i1 [[TMP2]] to i8
15+ // CHECK-BE32-NEXT: store i8 0, ptr @b, align 1
16+ // CHECK-BE32-NEXT: [[TMP0:%.*]] = load ppc_fp128, ptr @ld, align 16
17+ // CHECK-BE32-NEXT: [[TMP1:%.*]] = bitcast ppc_fp128 [[TMP0]] to i128
18+ // CHECK-BE32-NEXT: [[TMP2:%.*]] = lshr i128 [[TMP1]], 64
19+ // CHECK-BE32-NEXT: [[TMP3:%.*]] = trunc i128 [[TMP2]] to i64
20+ // CHECK-BE32-NEXT: [[TMP4:%.*]] = icmp slt i64 [[TMP3]], 0
21+ // CHECK-BE32-NEXT: [[FROMBOOL:%.*]] = zext i1 [[TMP4]] to i8
1922// CHECK-BE32-NEXT: store i8 [[FROMBOOL]], ptr @b, align 1
20- // CHECK-BE32-NEXT: [[TMP3:%.*]] = load ppc_fp128 , ptr @ld , align 16
21- // CHECK-BE32-NEXT: [[TMP4 :%.*]] = bitcast ppc_fp128 [[TMP3]] to i128
22- // CHECK-BE32-NEXT: [[TMP5 :%.*]] = lshr i128 [[TMP4]], 64
23- // CHECK-BE32-NEXT: [[TMP6:%.*]] = trunc i128 [[TMP5 ]] to i64
24- // CHECK-BE32-NEXT: [[TMP7:%.*]] = icmp slt i64 [[TMP6]], 0
23+ // CHECK-BE32-NEXT: store i8 0 , ptr @b , align 1
24+ // CHECK-BE32-NEXT: [[TMP5 :%.*]] = load double, ptr @d, align 8
25+ // CHECK-BE32-NEXT: [[CONV :%.*]] = fptrunc double [[TMP5]] to float
26+ // CHECK-BE32-NEXT: [[TMP6:%.*]] = bitcast float [[CONV ]] to i32
27+ // CHECK-BE32-NEXT: [[TMP7:%.*]] = icmp slt i32 [[TMP6]], 0
2528// CHECK-BE32-NEXT: [[FROMBOOL1:%.*]] = zext i1 [[TMP7]] to i8
2629// CHECK-BE32-NEXT: store i8 [[FROMBOOL1]], ptr @b, align 1
2730// CHECK-BE32-NEXT: store i8 0, ptr @b, align 1
28- // CHECK-BE32-NEXT: [[TMP8:%.*]] = load double, ptr @d, align 8
29- // CHECK-BE32-NEXT: [[CONV:%.*]] = fptrunc double [[TMP8]] to float
30- // CHECK-BE32-NEXT: [[TMP9:%.*]] = bitcast float [[CONV]] to i32
31- // CHECK-BE32-NEXT: [[TMP10:%.*]] = icmp slt i32 [[TMP9]], 0
32- // CHECK-BE32-NEXT: [[FROMBOOL2:%.*]] = zext i1 [[TMP10]] to i8
31+ // CHECK-BE32-NEXT: [[TMP8:%.*]] = load ppc_fp128, ptr @ld, align 16
32+ // CHECK-BE32-NEXT: [[TMP9:%.*]] = bitcast ppc_fp128 [[TMP8]] to i128
33+ // CHECK-BE32-NEXT: [[TMP10:%.*]] = lshr i128 [[TMP9]], 64
34+ // CHECK-BE32-NEXT: [[TMP11:%.*]] = trunc i128 [[TMP10]] to i64
35+ // CHECK-BE32-NEXT: [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 0
36+ // CHECK-BE32-NEXT: [[FROMBOOL2:%.*]] = zext i1 [[TMP12]] to i8
3337// CHECK-BE32-NEXT: store i8 [[FROMBOOL2]], ptr @b, align 1
34- // CHECK-BE32-NEXT: [[TMP11:%.*]] = lshr i128 bitcast (ppc_fp128 0xM3FF00000000000000000000000000000 to i128), 64
35- // CHECK-BE32-NEXT: [[TMP12:%.*]] = trunc i128 [[TMP11]] to i64
36- // CHECK-BE32-NEXT: [[TMP13:%.*]] = icmp slt i64 [[TMP12]], 0
37- // CHECK-BE32-NEXT: [[FROMBOOL3:%.*]] = zext i1 [[TMP13]] to i8
38- // CHECK-BE32-NEXT: store i8 [[FROMBOOL3]], ptr @b, align 1
39- // CHECK-BE32-NEXT: [[TMP14:%.*]] = load ppc_fp128, ptr @ld, align 16
40- // CHECK-BE32-NEXT: [[TMP15:%.*]] = bitcast ppc_fp128 [[TMP14]] to i128
41- // CHECK-BE32-NEXT: [[TMP16:%.*]] = lshr i128 [[TMP15]], 64
42- // CHECK-BE32-NEXT: [[TMP17:%.*]] = trunc i128 [[TMP16]] to i64
43- // CHECK-BE32-NEXT: [[TMP18:%.*]] = icmp slt i64 [[TMP17]], 0
44- // CHECK-BE32-NEXT: [[FROMBOOL4:%.*]] = zext i1 [[TMP18]] to i8
45- // CHECK-BE32-NEXT: store i8 [[FROMBOOL4]], ptr @b, align 1
4638// CHECK-BE32-NEXT: ret void
4739//
4840// CHECK-BE64-LABEL: define dso_local void @_Z12test_signbitv(
4941// CHECK-BE64-SAME: ) #[[ATTR0:[0-9]+]] {
5042// CHECK-BE64-NEXT: entry:
51- // CHECK-BE64-NEXT: [[TMP0:%.*]] = lshr i128 bitcast (ppc_fp128 0xM3FF00000000000000000000000000000 to i128), 64
52- // CHECK-BE64-NEXT: [[TMP1:%.*]] = trunc i128 [[TMP0]] to i64
53- // CHECK-BE64-NEXT: [[TMP2:%.*]] = icmp slt i64 [[TMP1]], 0
54- // CHECK-BE64-NEXT: [[FROMBOOL:%.*]] = zext i1 [[TMP2]] to i8
43+ // CHECK-BE64-NEXT: store i8 0, ptr @b, align 1
44+ // CHECK-BE64-NEXT: [[TMP0:%.*]] = load ppc_fp128, ptr @ld, align 16
45+ // CHECK-BE64-NEXT: [[TMP1:%.*]] = bitcast ppc_fp128 [[TMP0]] to i128
46+ // CHECK-BE64-NEXT: [[TMP2:%.*]] = lshr i128 [[TMP1]], 64
47+ // CHECK-BE64-NEXT: [[TMP3:%.*]] = trunc i128 [[TMP2]] to i64
48+ // CHECK-BE64-NEXT: [[TMP4:%.*]] = icmp slt i64 [[TMP3]], 0
49+ // CHECK-BE64-NEXT: [[FROMBOOL:%.*]] = zext i1 [[TMP4]] to i8
5550// CHECK-BE64-NEXT: store i8 [[FROMBOOL]], ptr @b, align 1
56- // CHECK-BE64-NEXT: [[TMP3:%.*]] = load ppc_fp128 , ptr @ld , align 16
57- // CHECK-BE64-NEXT: [[TMP4 :%.*]] = bitcast ppc_fp128 [[TMP3]] to i128
58- // CHECK-BE64-NEXT: [[TMP5 :%.*]] = lshr i128 [[TMP4]], 64
59- // CHECK-BE64-NEXT: [[TMP6:%.*]] = trunc i128 [[TMP5 ]] to i64
60- // CHECK-BE64-NEXT: [[TMP7:%.*]] = icmp slt i64 [[TMP6]], 0
51+ // CHECK-BE64-NEXT: store i8 0 , ptr @b , align 1
52+ // CHECK-BE64-NEXT: [[TMP5 :%.*]] = load double, ptr @d, align 8
53+ // CHECK-BE64-NEXT: [[CONV :%.*]] = fptrunc double [[TMP5]] to float
54+ // CHECK-BE64-NEXT: [[TMP6:%.*]] = bitcast float [[CONV ]] to i32
55+ // CHECK-BE64-NEXT: [[TMP7:%.*]] = icmp slt i32 [[TMP6]], 0
6156// CHECK-BE64-NEXT: [[FROMBOOL1:%.*]] = zext i1 [[TMP7]] to i8
6257// CHECK-BE64-NEXT: store i8 [[FROMBOOL1]], ptr @b, align 1
6358// CHECK-BE64-NEXT: store i8 0, ptr @b, align 1
64- // CHECK-BE64-NEXT: [[TMP8:%.*]] = load double, ptr @d, align 8
65- // CHECK-BE64-NEXT: [[CONV:%.*]] = fptrunc double [[TMP8]] to float
66- // CHECK-BE64-NEXT: [[TMP9:%.*]] = bitcast float [[CONV]] to i32
67- // CHECK-BE64-NEXT: [[TMP10:%.*]] = icmp slt i32 [[TMP9]], 0
68- // CHECK-BE64-NEXT: [[FROMBOOL2:%.*]] = zext i1 [[TMP10]] to i8
59+ // CHECK-BE64-NEXT: [[TMP8:%.*]] = load ppc_fp128, ptr @ld, align 16
60+ // CHECK-BE64-NEXT: [[TMP9:%.*]] = bitcast ppc_fp128 [[TMP8]] to i128
61+ // CHECK-BE64-NEXT: [[TMP10:%.*]] = lshr i128 [[TMP9]], 64
62+ // CHECK-BE64-NEXT: [[TMP11:%.*]] = trunc i128 [[TMP10]] to i64
63+ // CHECK-BE64-NEXT: [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 0
64+ // CHECK-BE64-NEXT: [[FROMBOOL2:%.*]] = zext i1 [[TMP12]] to i8
6965// CHECK-BE64-NEXT: store i8 [[FROMBOOL2]], ptr @b, align 1
70- // CHECK-BE64-NEXT: [[TMP11:%.*]] = lshr i128 bitcast (ppc_fp128 0xM3FF00000000000000000000000000000 to i128), 64
71- // CHECK-BE64-NEXT: [[TMP12:%.*]] = trunc i128 [[TMP11]] to i64
72- // CHECK-BE64-NEXT: [[TMP13:%.*]] = icmp slt i64 [[TMP12]], 0
73- // CHECK-BE64-NEXT: [[FROMBOOL3:%.*]] = zext i1 [[TMP13]] to i8
74- // CHECK-BE64-NEXT: store i8 [[FROMBOOL3]], ptr @b, align 1
75- // CHECK-BE64-NEXT: [[TMP14:%.*]] = load ppc_fp128, ptr @ld, align 16
76- // CHECK-BE64-NEXT: [[TMP15:%.*]] = bitcast ppc_fp128 [[TMP14]] to i128
77- // CHECK-BE64-NEXT: [[TMP16:%.*]] = lshr i128 [[TMP15]], 64
78- // CHECK-BE64-NEXT: [[TMP17:%.*]] = trunc i128 [[TMP16]] to i64
79- // CHECK-BE64-NEXT: [[TMP18:%.*]] = icmp slt i64 [[TMP17]], 0
80- // CHECK-BE64-NEXT: [[FROMBOOL4:%.*]] = zext i1 [[TMP18]] to i8
81- // CHECK-BE64-NEXT: store i8 [[FROMBOOL4]], ptr @b, align 1
8266// CHECK-BE64-NEXT: ret void
8367//
8468// CHECK-LE-LABEL: define dso_local void @_Z12test_signbitv(
8569// CHECK-LE-SAME: ) #[[ATTR0:[0-9]+]] {
8670// CHECK-LE-NEXT: entry:
87- // CHECK-LE-NEXT: [[TMP0:%.*]] = icmp slt i64 trunc (i128 bitcast (ppc_fp128 0xM3FF00000000000000000000000000000 to i128) to i64), 0
88- // CHECK-LE-NEXT: [[FROMBOOL:%.*]] = zext i1 [[TMP0]] to i8
71+ // CHECK-LE-NEXT: store i8 0, ptr @b, align 1
72+ // CHECK-LE-NEXT: [[TMP0:%.*]] = load ppc_fp128, ptr @ld, align 16
73+ // CHECK-LE-NEXT: [[TMP1:%.*]] = bitcast ppc_fp128 [[TMP0]] to i128
74+ // CHECK-LE-NEXT: [[TMP2:%.*]] = trunc i128 [[TMP1]] to i64
75+ // CHECK-LE-NEXT: [[TMP3:%.*]] = icmp slt i64 [[TMP2]], 0
76+ // CHECK-LE-NEXT: [[FROMBOOL:%.*]] = zext i1 [[TMP3]] to i8
8977// CHECK-LE-NEXT: store i8 [[FROMBOOL]], ptr @b, align 1
90- // CHECK-LE-NEXT: [[TMP1:%.*]] = load ppc_fp128, ptr @ld, align 16
91- // CHECK-LE-NEXT: [[TMP2:%.*]] = bitcast ppc_fp128 [[TMP1]] to i128
92- // CHECK-LE-NEXT: [[TMP3:%.*]] = trunc i128 [[TMP2]] to i64
93- // CHECK-LE-NEXT: [[TMP4:%.*]] = icmp slt i64 [[TMP3]], 0
94- // CHECK-LE-NEXT: [[FROMBOOL1:%.*]] = zext i1 [[TMP4]] to i8
78+ // CHECK-LE-NEXT: store i8 0, ptr @b, align 1
79+ // CHECK-LE-NEXT: [[TMP4:%.*]] = load double, ptr @d, align 8
80+ // CHECK-LE-NEXT: [[CONV:%.*]] = fptrunc double [[TMP4]] to float
81+ // CHECK-LE-NEXT: [[TMP5:%.*]] = bitcast float [[CONV]] to i32
82+ // CHECK-LE-NEXT: [[TMP6:%.*]] = icmp slt i32 [[TMP5]], 0
83+ // CHECK-LE-NEXT: [[FROMBOOL1:%.*]] = zext i1 [[TMP6]] to i8
9584// CHECK-LE-NEXT: store i8 [[FROMBOOL1]], ptr @b, align 1
9685// CHECK-LE-NEXT: store i8 0, ptr @b, align 1
97- // CHECK-LE-NEXT: [[TMP5 :%.*]] = load double , ptr @d , align 8
98- // CHECK-LE-NEXT: [[CONV :%.*]] = fptrunc double [[TMP5 ]] to float
99- // CHECK-LE-NEXT: [[TMP6 :%.*]] = bitcast float [[CONV ]] to i32
100- // CHECK-LE-NEXT: [[TMP7 :%.*]] = icmp slt i32 [[TMP6 ]], 0
101- // CHECK-LE-NEXT: [[FROMBOOL2:%.*]] = zext i1 [[TMP7 ]] to i8
86+ // CHECK-LE-NEXT: [[TMP7 :%.*]] = load ppc_fp128 , ptr @ld , align 16
87+ // CHECK-LE-NEXT: [[TMP8 :%.*]] = bitcast ppc_fp128 [[TMP7 ]] to i128
88+ // CHECK-LE-NEXT: [[TMP9 :%.*]] = trunc i128 [[TMP8 ]] to i64
89+ // CHECK-LE-NEXT: [[TMP10 :%.*]] = icmp slt i64 [[TMP9 ]], 0
90+ // CHECK-LE-NEXT: [[FROMBOOL2:%.*]] = zext i1 [[TMP10 ]] to i8
10291// CHECK-LE-NEXT: store i8 [[FROMBOOL2]], ptr @b, align 1
103- // CHECK-LE-NEXT: [[TMP8:%.*]] = icmp slt i64 trunc (i128 bitcast (ppc_fp128 0xM3FF00000000000000000000000000000 to i128) to i64), 0
104- // CHECK-LE-NEXT: [[FROMBOOL3:%.*]] = zext i1 [[TMP8]] to i8
105- // CHECK-LE-NEXT: store i8 [[FROMBOOL3]], ptr @b, align 1
106- // CHECK-LE-NEXT: [[TMP9:%.*]] = load ppc_fp128, ptr @ld, align 16
107- // CHECK-LE-NEXT: [[TMP10:%.*]] = bitcast ppc_fp128 [[TMP9]] to i128
108- // CHECK-LE-NEXT: [[TMP11:%.*]] = trunc i128 [[TMP10]] to i64
109- // CHECK-LE-NEXT: [[TMP12:%.*]] = icmp slt i64 [[TMP11]], 0
110- // CHECK-LE-NEXT: [[FROMBOOL4:%.*]] = zext i1 [[TMP12]] to i8
111- // CHECK-LE-NEXT: store i8 [[FROMBOOL4]], ptr @b, align 1
11292// CHECK-LE-NEXT: ret void
11393//
11494void test_signbit ()
0 commit comments