xref: /aosp_15_r20/external/llvm/test/Transforms/ConstProp/bswap.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; bswap should be constant folded when it is passed a constant argument
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -constprop -S | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.bswap.i16(i16)
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.bswap.i32(i32)
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.bswap.i64(i64)
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdeclare i80 @llvm.bswap.i80(i80)
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define i16 @W(
14*9880d681SAndroid Build Coastguard Workerdefine i16 @W() {
15*9880d681SAndroid Build Coastguard Worker        ; CHECK: ret i16 256
16*9880d681SAndroid Build Coastguard Worker        %Z = call i16 @llvm.bswap.i16( i16 1 )          ; <i16> [#uses=1]
17*9880d681SAndroid Build Coastguard Worker        ret i16 %Z
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define i32 @X(
21*9880d681SAndroid Build Coastguard Workerdefine i32 @X() {
22*9880d681SAndroid Build Coastguard Worker        ; CHECK: ret i32 16777216
23*9880d681SAndroid Build Coastguard Worker        %Z = call i32 @llvm.bswap.i32( i32 1 )          ; <i32> [#uses=1]
24*9880d681SAndroid Build Coastguard Worker        ret i32 %Z
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define i64 @Y(
28*9880d681SAndroid Build Coastguard Workerdefine i64 @Y() {
29*9880d681SAndroid Build Coastguard Worker        ; CHECK: ret i64 72057594037927936
30*9880d681SAndroid Build Coastguard Worker        %Z = call i64 @llvm.bswap.i64( i64 1 )          ; <i64> [#uses=1]
31*9880d681SAndroid Build Coastguard Worker        ret i64 %Z
32*9880d681SAndroid Build Coastguard Worker}
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: define i80 @Z(
35*9880d681SAndroid Build Coastguard Workerdefine i80 @Z() {
36*9880d681SAndroid Build Coastguard Worker        ; CHECK: ret i80 -450681596205739728166896
37*9880d681SAndroid Build Coastguard Worker        ;                0xA0908070605040302010
38*9880d681SAndroid Build Coastguard Worker        %Z = call i80 @llvm.bswap.i80( i80 76151636403560493650080 )
39*9880d681SAndroid Build Coastguard Worker        ;                                  0x102030405060708090A0
40*9880d681SAndroid Build Coastguard Worker        ret i80 %Z
41*9880d681SAndroid Build Coastguard Worker}
42