1ed078c48SWANG Xuerui; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 29d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s 3407b613dSwanglei 470f2befaSWeining Ludefine i64 @imm0() { 570f2befaSWeining Lu; CHECK-LABEL: imm0: 670f2befaSWeining Lu; CHECK: # %bb.0: 770f2befaSWeining Lu; CHECK-NEXT: move $a0, $zero 8ed078c48SWANG Xuerui; CHECK-NEXT: ret 970f2befaSWeining Lu ret i64 0 1070f2befaSWeining Lu} 1170f2befaSWeining Lu 12407b613dSwangleidefine i64 @imm7ff0000000000000() { 13407b613dSwanglei; CHECK-LABEL: imm7ff0000000000000: 14407b613dSwanglei; CHECK: # %bb.0: 15407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $zero, 2047 16ed078c48SWANG Xuerui; CHECK-NEXT: ret 17407b613dSwanglei ret i64 9218868437227405312 18407b613dSwanglei} 19407b613dSwanglei 20407b613dSwangleidefine i64 @imm0000000000000fff() { 21407b613dSwanglei; CHECK-LABEL: imm0000000000000fff: 22407b613dSwanglei; CHECK: # %bb.0: 23407b613dSwanglei; CHECK-NEXT: ori $a0, $zero, 4095 24ed078c48SWANG Xuerui; CHECK-NEXT: ret 25407b613dSwanglei ret i64 4095 26407b613dSwanglei} 27407b613dSwanglei 28407b613dSwangleidefine i64 @imm0007ffff00000800() { 29407b613dSwanglei; CHECK-LABEL: imm0007ffff00000800: 30407b613dSwanglei; CHECK: # %bb.0: 31407b613dSwanglei; CHECK-NEXT: ori $a0, $zero, 2048 32407b613dSwanglei; CHECK-NEXT: lu32i.d $a0, 524287 33ed078c48SWANG Xuerui; CHECK-NEXT: ret 34407b613dSwanglei ret i64 2251795518720000 35407b613dSwanglei} 36407b613dSwanglei 37407b613dSwangleidefine i64 @immfff0000000000fff() { 38407b613dSwanglei; CHECK-LABEL: immfff0000000000fff: 39407b613dSwanglei; CHECK: # %bb.0: 40407b613dSwanglei; CHECK-NEXT: ori $a0, $zero, 4095 41407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $a0, -1 42ed078c48SWANG Xuerui; CHECK-NEXT: ret 43407b613dSwanglei ret i64 -4503599627366401 44407b613dSwanglei} 45407b613dSwanglei 46407b613dSwangleidefine i64 @imm0008000000000fff() { 47407b613dSwanglei; CHECK-LABEL: imm0008000000000fff: 48407b613dSwanglei; CHECK: # %bb.0: 49407b613dSwanglei; CHECK-NEXT: ori $a0, $zero, 4095 50*eaf87d32Swanglei; CHECK-NEXT: bstrins.d $a0, $a0, 51, 51 51ed078c48SWANG Xuerui; CHECK-NEXT: ret 52407b613dSwanglei ret i64 2251799813689343 53407b613dSwanglei} 54407b613dSwanglei 55407b613dSwangleidefine i64 @immfffffffffffff800() { 56407b613dSwanglei; CHECK-LABEL: immfffffffffffff800: 57407b613dSwanglei; CHECK: # %bb.0: 58407b613dSwanglei; CHECK-NEXT: addi.w $a0, $zero, -2048 59ed078c48SWANG Xuerui; CHECK-NEXT: ret 60407b613dSwanglei ret i64 -2048 61407b613dSwanglei} 62407b613dSwanglei 63407b613dSwangleidefine i64 @imm00000000fffff800() { 64407b613dSwanglei; CHECK-LABEL: imm00000000fffff800: 65407b613dSwanglei; CHECK: # %bb.0: 66407b613dSwanglei; CHECK-NEXT: addi.w $a0, $zero, -2048 67407b613dSwanglei; CHECK-NEXT: lu32i.d $a0, 0 68ed078c48SWANG Xuerui; CHECK-NEXT: ret 69407b613dSwanglei ret i64 4294965248 70407b613dSwanglei} 71407b613dSwanglei 72407b613dSwangleidefine i64 @imm000ffffffffff800() { 73407b613dSwanglei; CHECK-LABEL: imm000ffffffffff800: 74407b613dSwanglei; CHECK: # %bb.0: 75407b613dSwanglei; CHECK-NEXT: addi.w $a0, $zero, -2048 76407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $a0, 0 77ed078c48SWANG Xuerui; CHECK-NEXT: ret 78407b613dSwanglei ret i64 4503599627368448 79407b613dSwanglei} 80407b613dSwanglei 81407b613dSwangleidefine i64 @imm00080000fffff800() { 82407b613dSwanglei; CHECK-LABEL: imm00080000fffff800: 83407b613dSwanglei; CHECK: # %bb.0: 84407b613dSwanglei; CHECK-NEXT: addi.w $a0, $zero, -2048 85407b613dSwanglei; CHECK-NEXT: lu32i.d $a0, -524288 86407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $a0, 0 87ed078c48SWANG Xuerui; CHECK-NEXT: ret 88407b613dSwanglei ret i64 2251804108650496 89407b613dSwanglei} 90407b613dSwanglei 91407b613dSwangleidefine i64 @imm000000007ffff000() { 92407b613dSwanglei; CHECK-LABEL: imm000000007ffff000: 93407b613dSwanglei; CHECK: # %bb.0: 94407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, 524287 95ed078c48SWANG Xuerui; CHECK-NEXT: ret 96407b613dSwanglei ret i64 2147479552 97407b613dSwanglei} 98407b613dSwanglei 99407b613dSwangleidefine i64 @imm0000000080000000() { 100407b613dSwanglei; CHECK-LABEL: imm0000000080000000: 101407b613dSwanglei; CHECK: # %bb.0: 102407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, -524288 103407b613dSwanglei; CHECK-NEXT: lu32i.d $a0, 0 104ed078c48SWANG Xuerui; CHECK-NEXT: ret 105407b613dSwanglei ret i64 2147483648 106407b613dSwanglei} 107407b613dSwanglei 108407b613dSwangleidefine i64 @imm000ffffffffff000() { 109407b613dSwanglei; CHECK-LABEL: imm000ffffffffff000: 110407b613dSwanglei; CHECK: # %bb.0: 111407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, -1 112407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $a0, 0 113ed078c48SWANG Xuerui; CHECK-NEXT: ret 114407b613dSwanglei ret i64 4503599627366400 115407b613dSwanglei} 116407b613dSwanglei 117407b613dSwangleidefine i64 @imm7ff0000080000000() { 118407b613dSwanglei; CHECK-LABEL: imm7ff0000080000000: 119407b613dSwanglei; CHECK: # %bb.0: 120407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, -524288 121407b613dSwanglei; CHECK-NEXT: lu32i.d $a0, 0 122407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $a0, 2047 123ed078c48SWANG Xuerui; CHECK-NEXT: ret 124407b613dSwanglei ret i64 9218868439374888960 125407b613dSwanglei} 126407b613dSwanglei 127407b613dSwangleidefine i64 @immffffffff80000800() { 128407b613dSwanglei; CHECK-LABEL: immffffffff80000800: 129407b613dSwanglei; CHECK: # %bb.0: 130407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, -524288 131407b613dSwanglei; CHECK-NEXT: ori $a0, $a0, 2048 132ed078c48SWANG Xuerui; CHECK-NEXT: ret 133407b613dSwanglei ret i64 -2147481600 134407b613dSwanglei} 135407b613dSwanglei 136407b613dSwangleidefine i64 @immffffffff7ffff800() { 137407b613dSwanglei; CHECK-LABEL: immffffffff7ffff800: 138407b613dSwanglei; CHECK: # %bb.0: 139407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, 524287 140407b613dSwanglei; CHECK-NEXT: ori $a0, $a0, 2048 141407b613dSwanglei; CHECK-NEXT: lu32i.d $a0, -1 142ed078c48SWANG Xuerui; CHECK-NEXT: ret 143407b613dSwanglei ret i64 -2147485696 144407b613dSwanglei} 145407b613dSwanglei 146407b613dSwangleidefine i64 @imm7fffffff800007ff() { 147407b613dSwanglei; CHECK-LABEL: imm7fffffff800007ff: 148407b613dSwanglei; CHECK: # %bb.0: 149407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, -524288 150407b613dSwanglei; CHECK-NEXT: ori $a0, $a0, 2047 151407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $a0, 2047 152ed078c48SWANG Xuerui; CHECK-NEXT: ret 153407b613dSwanglei ret i64 9223372034707294207 154407b613dSwanglei} 155407b613dSwanglei 156407b613dSwangleidefine i64 @imm0008000080000800() { 157407b613dSwanglei; CHECK-LABEL: imm0008000080000800: 158407b613dSwanglei; CHECK: # %bb.0: 159407b613dSwanglei; CHECK-NEXT: lu12i.w $a0, -524288 160407b613dSwanglei; CHECK-NEXT: ori $a0, $a0, 2048 161407b613dSwanglei; CHECK-NEXT: lu32i.d $a0, -524288 162407b613dSwanglei; CHECK-NEXT: lu52i.d $a0, $a0, 0 163ed078c48SWANG Xuerui; CHECK-NEXT: ret 164407b613dSwanglei ret i64 2251801961170944 165407b613dSwanglei} 1665b77e254Swanglei 1675b77e254Swangleidefine i64 @imm14000000a() { 1685b77e254Swanglei; CHECK-LABEL: imm14000000a: 1695b77e254Swanglei; CHECK: # %bb.0: 170*eaf87d32Swanglei; CHECK-NEXT: ori $a0, $zero, 10 171*eaf87d32Swanglei; CHECK-NEXT: bstrins.d $a0, $a0, 32, 29 1725b77e254Swanglei; CHECK-NEXT: ret 1735b77e254Swanglei ret i64 5368709130 1745b77e254Swanglei} 1755b77e254Swanglei 1765b77e254Swangleidefine i64 @imm0fff000000000fff() { 1775b77e254Swanglei; CHECK-LABEL: imm0fff000000000fff: 1785b77e254Swanglei; CHECK: # %bb.0: 1795b77e254Swanglei; CHECK-NEXT: ori $a0, $zero, 4095 180*eaf87d32Swanglei; CHECK-NEXT: bstrins.d $a0, $a0, 59, 48 1815b77e254Swanglei; CHECK-NEXT: ret 1825b77e254Swanglei ret i64 1152640029630140415 1835b77e254Swanglei} 1845b77e254Swanglei 1855b77e254Swangleidefine i64 @immffecffffffffffec() { 1865b77e254Swanglei; CHECK-LABEL: immffecffffffffffec: 1875b77e254Swanglei; CHECK: # %bb.0: 1885b77e254Swanglei; CHECK-NEXT: addi.w $a0, $zero, -20 189*eaf87d32Swanglei; CHECK-NEXT: bstrins.d $a0, $a0, 52, 48 1905b77e254Swanglei; CHECK-NEXT: ret 1915b77e254Swanglei ret i64 -5348024557502484 1925b77e254Swanglei} 1935b77e254Swanglei 1945b77e254Swangleidefine i64 @imm1c000000700000() { 1955b77e254Swanglei; CHECK-LABEL: imm1c000000700000: 1965b77e254Swanglei; CHECK: # %bb.0: 1975b77e254Swanglei; CHECK-NEXT: lu12i.w $a0, 1792 198*eaf87d32Swanglei; CHECK-NEXT: bstrins.d $a0, $a0, 52, 30 1995b77e254Swanglei; CHECK-NEXT: ret 2005b77e254Swanglei ret i64 7881299355238400 2015b77e254Swanglei} 2025b77e254Swanglei 2035b77e254Swangleidefine i64 @immf0f0f0f0f0f0f0f0() { 2045b77e254Swanglei; CHECK-LABEL: immf0f0f0f0f0f0f0f0: 2055b77e254Swanglei; CHECK: # %bb.0: 2065b77e254Swanglei; CHECK-NEXT: lu12i.w $a0, -61681 2075b77e254Swanglei; CHECK-NEXT: ori $a0, $a0, 240 208*eaf87d32Swanglei; CHECK-NEXT: bstrins.d $a0, $a0, 59, 32 2095b77e254Swanglei; CHECK-NEXT: ret 2105b77e254Swanglei ret i64 -1085102592571150096 2115b77e254Swanglei} 2125b77e254Swanglei 2135b77e254Swangleidefine i64 @imm110000014000000a() { 2145b77e254Swanglei; CHECK-LABEL: imm110000014000000a: 2155b77e254Swanglei; CHECK: # %bb.0: 216*eaf87d32Swanglei; CHECK-NEXT: ori $a0, $zero, 10 2175b77e254Swanglei; CHECK-NEXT: lu52i.d $a0, $a0, 272 218*eaf87d32Swanglei; CHECK-NEXT: bstrins.d $a0, $a0, 32, 29 2195b77e254Swanglei; CHECK-NEXT: ret 2205b77e254Swanglei ret i64 1224979104013484042 2215b77e254Swanglei} 222