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