@@ -12,103 +12,83 @@ long double ld = -1.0L;
12
12
// CHECK-BE32-LABEL: define dso_local void @_Z12test_signbitv(
13
13
// CHECK-BE32-SAME: ) #[[ATTR0:[0-9]+]] {
14
14
// 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
19
22
// 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
25
28
// CHECK-BE32-NEXT: [[FROMBOOL1:%.*]] = zext i1 [[TMP7]] to i8
26
29
// CHECK-BE32-NEXT: store i8 [[FROMBOOL1]], ptr @b, align 1
27
30
// 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
33
37
// 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
46
38
// CHECK-BE32-NEXT: ret void
47
39
//
48
40
// CHECK-BE64-LABEL: define dso_local void @_Z12test_signbitv(
49
41
// CHECK-BE64-SAME: ) #[[ATTR0:[0-9]+]] {
50
42
// 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
55
50
// 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
61
56
// CHECK-BE64-NEXT: [[FROMBOOL1:%.*]] = zext i1 [[TMP7]] to i8
62
57
// CHECK-BE64-NEXT: store i8 [[FROMBOOL1]], ptr @b, align 1
63
58
// 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
69
65
// 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
82
66
// CHECK-BE64-NEXT: ret void
83
67
//
84
68
// CHECK-LE-LABEL: define dso_local void @_Z12test_signbitv(
85
69
// CHECK-LE-SAME: ) #[[ATTR0:[0-9]+]] {
86
70
// 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
89
77
// 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
95
84
// CHECK-LE-NEXT: store i8 [[FROMBOOL1]], ptr @b, align 1
96
85
// 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
102
91
// 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
112
92
// CHECK-LE-NEXT: ret void
113
93
//
114
94
void test_signbit ()
0 commit comments