brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · 38e06d1 Raw
226 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 -mattr=+d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA644 5define i32 @m_offset_neg_2049(ptr %p) nounwind {6; LA32-LABEL: m_offset_neg_2049:7; LA32:       # %bb.0:8; LA32-NEXT:    addi.w $a0, $a0, -20489; LA32-NEXT:    addi.w $a0, $a0, -110; LA32-NEXT:    #APP11; LA32-NEXT:    ld.w $a0, $a0, 012; LA32-NEXT:    #NO_APP13; LA32-NEXT:    ret14;15; LA64-LABEL: m_offset_neg_2049:16; LA64:       # %bb.0:17; LA64-NEXT:    addi.d $a0, $a0, -204818; LA64-NEXT:    addi.d $a0, $a0, -119; LA64-NEXT:    #APP20; LA64-NEXT:    ld.w $a0, $a0, 021; LA64-NEXT:    #NO_APP22; LA64-NEXT:    ret23  %1 = getelementptr inbounds i8, ptr %p, i32 -204924  %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)25  ret i32 %226}27 28define i32 @m_offset_neg_2048(ptr %p) nounwind {29; LA32-LABEL: m_offset_neg_2048:30; LA32:       # %bb.0:31; LA32-NEXT:    #APP32; LA32-NEXT:    ld.w $a0, $a0, -204833; LA32-NEXT:    #NO_APP34; LA32-NEXT:    ret35;36; LA64-LABEL: m_offset_neg_2048:37; LA64:       # %bb.0:38; LA64-NEXT:    #APP39; LA64-NEXT:    ld.w $a0, $a0, -204840; LA64-NEXT:    #NO_APP41; LA64-NEXT:    ret42  %1 = getelementptr inbounds i8, ptr %p, i32 -204843  %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)44  ret i32 %245}46 47define i32 @m_offset_neg_1(ptr %p) nounwind {48; LA32-LABEL: m_offset_neg_1:49; LA32:       # %bb.0:50; LA32-NEXT:    #APP51; LA32-NEXT:    ld.w $a0, $a0, -152; LA32-NEXT:    #NO_APP53; LA32-NEXT:    ret54;55; LA64-LABEL: m_offset_neg_1:56; LA64:       # %bb.0:57; LA64-NEXT:    #APP58; LA64-NEXT:    ld.w $a0, $a0, -159; LA64-NEXT:    #NO_APP60; LA64-NEXT:    ret61  %1 = getelementptr inbounds i8, ptr %p, i32 -162  %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)63  ret i32 %264}65 66define i32 @m_offset_0(ptr %p) nounwind {67; LA32-LABEL: m_offset_0:68; LA32:       # %bb.0:69; LA32-NEXT:    #APP70; LA32-NEXT:    ld.w $a0, $a0, 071; LA32-NEXT:    #NO_APP72; LA32-NEXT:    ret73;74; LA64-LABEL: m_offset_0:75; LA64:       # %bb.0:76; LA64-NEXT:    #APP77; LA64-NEXT:    ld.w $a0, $a0, 078; LA64-NEXT:    #NO_APP79; LA64-NEXT:    ret80  %1 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %p)81  ret i32 %182}83 84define i32 @m_offset_1(ptr %p) nounwind {85; LA32-LABEL: m_offset_1:86; LA32:       # %bb.0:87; LA32-NEXT:    #APP88; LA32-NEXT:    ld.w $a0, $a0, 189; LA32-NEXT:    #NO_APP90; LA32-NEXT:    ret91;92; LA64-LABEL: m_offset_1:93; LA64:       # %bb.0:94; LA64-NEXT:    #APP95; LA64-NEXT:    ld.w $a0, $a0, 196; LA64-NEXT:    #NO_APP97; LA64-NEXT:    ret98  %1 = getelementptr inbounds i8, ptr %p, i32 199  %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)100  ret i32 %2101}102 103define i32 @m_offset_2047(ptr %p) nounwind {104; LA32-LABEL: m_offset_2047:105; LA32:       # %bb.0:106; LA32-NEXT:    #APP107; LA32-NEXT:    ld.w $a0, $a0, 2047108; LA32-NEXT:    #NO_APP109; LA32-NEXT:    ret110;111; LA64-LABEL: m_offset_2047:112; LA64:       # %bb.0:113; LA64-NEXT:    #APP114; LA64-NEXT:    ld.w $a0, $a0, 2047115; LA64-NEXT:    #NO_APP116; LA64-NEXT:    ret117  %1 = getelementptr inbounds i8, ptr %p, i32 2047118  %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)119  ret i32 %2120}121 122define i32 @m_offset_2048(ptr %p) nounwind {123; LA32-LABEL: m_offset_2048:124; LA32:       # %bb.0:125; LA32-NEXT:    addi.w $a0, $a0, 2047126; LA32-NEXT:    addi.w $a0, $a0, 1127; LA32-NEXT:    #APP128; LA32-NEXT:    ld.w $a0, $a0, 0129; LA32-NEXT:    #NO_APP130; LA32-NEXT:    ret131;132; LA64-LABEL: m_offset_2048:133; LA64:       # %bb.0:134; LA64-NEXT:    addi.d $a0, $a0, 2047135; LA64-NEXT:    addi.d $a0, $a0, 1136; LA64-NEXT:    #APP137; LA64-NEXT:    ld.w $a0, $a0, 0138; LA64-NEXT:    #NO_APP139; LA64-NEXT:    ret140  %1 = getelementptr inbounds i8, ptr %p, i32 2048141  %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)142  ret i32 %2143}144 145define i32 @m_constant_0() nounwind {146; LA32-LABEL: m_constant_0:147; LA32:       # %bb.0:148; LA32-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI7_0)149; LA32-NEXT:    #APP150; LA32-NEXT:    #NO_APP151; LA32-NEXT:    ret152;153; LA64-LABEL: m_constant_0:154; LA64:       # %bb.0:155; LA64-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI7_0)156; LA64-NEXT:    #APP157; LA64-NEXT:    #NO_APP158; LA64-NEXT:    ret159  %1 = call i32 asm sideeffect "", "=r,m"(i64 0)160  ret i32 %1161}162 163define i32 @m_constant_1() nounwind {164; LA32-LABEL: m_constant_1:165; LA32:       # %bb.0:166; LA32-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI8_0)167; LA32-NEXT:    #APP168; LA32-NEXT:    ld.w $a0, $a0, %pc_lo12(.LCPI8_0)169; LA32-NEXT:    #NO_APP170; LA32-NEXT:    ret171;172; LA64-LABEL: m_constant_1:173; LA64:       # %bb.0:174; LA64-NEXT:    pcalau12i $a0, %pc_hi20(.LCPI8_0)175; LA64-NEXT:    #APP176; LA64-NEXT:    ld.w $a0, $a0, %pc_lo12(.LCPI8_0)177; LA64-NEXT:    #NO_APP178; LA64-NEXT:    ret179  %1 = call i32 asm sideeffect "ld.w $0, $1", "=r,m"(i64 1)180  ret i32 %1181}182 183@g_i32 = dso_local global i32 0184 185define i32 @m_addr_pcrel() nounwind {186; LA32-LABEL: m_addr_pcrel:187; LA32:       # %bb.0:188; LA32-NEXT:    pcalau12i $a1, %pc_hi20(g_i32)189; LA32-NEXT:    #APP190; LA32-NEXT:    ld.w $a0, $a1, %pc_lo12(g_i32)191; LA32-NEXT:    #NO_APP192; LA32-NEXT:    ret193;194; LA64-LABEL: m_addr_pcrel:195; LA64:       # %bb.0:196; LA64-NEXT:    pcalau12i $a1, %pc_hi20(g_i32)197; LA64-NEXT:    #APP198; LA64-NEXT:    ld.w $a0, $a1, %pc_lo12(g_i32)199; LA64-NEXT:    #NO_APP200; LA64-NEXT:    ret201  %1 = tail call i32 asm sideeffect "ld.w $0, $1", "=&r,*m"(ptr nonnull elementtype(i32) @g_i32)202  ret i32 %1203}204 205define i32 @m_addr_should_not_fold() nounwind {206; LA32-LABEL: m_addr_should_not_fold:207; LA32:       # %bb.0:208; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)209; LA32-NEXT:    addi.w $a1, $a0, %pc_lo12(g_i32)210; LA32-NEXT:    #APP211; LA32-NEXT:    ld.w $a0, $a1, 0212; LA32-NEXT:    #NO_APP213; LA32-NEXT:    ret214;215; LA64-LABEL: m_addr_should_not_fold:216; LA64:       # %bb.0:217; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)218; LA64-NEXT:    addi.d $a1, $a0, %pc_lo12(g_i32)219; LA64-NEXT:    #APP220; LA64-NEXT:    ld.w $a0, $a1, 0221; LA64-NEXT:    #NO_APP222; LA64-NEXT:    ret223  %1 = tail call i32 asm sideeffect "ld.w $0, $1, 0", "=&r,r,~{memory}"(ptr nonnull @g_i32)224  ret i32 %1225}226