brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · f635d40 Raw
140 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=hexagon < %s | FileCheck %s3 4; Check that a store with a proper addressing mode is selected for various5; cases of storing an immediate value.6 7@var_i8 = global [10 x i8] zeroinitializer, align 88 9define void @store_imm_i8(ptr %p) nounwind {10; CHECK-LABEL: store_imm_i8:11; CHECK:       // %bb.0:12; CHECK-NEXT:    {13; CHECK-NEXT:     jumpr r3114; CHECK-NEXT:     memb(r0+#0) = #-115; CHECK-NEXT:    }16  store i8 255, ptr %p, align 417  ret void18}19 20define void @store_rr_i8(ptr %p, i32 %x) nounwind {21; CHECK-LABEL: store_rr_i8:22; CHECK:       // %bb.0:23; CHECK-NEXT:    {24; CHECK-NEXT:     r2 = #25525; CHECK-NEXT:     jumpr r3126; CHECK-NEXT:     memb(r0+r1<<#0) = r2.new27; CHECK-NEXT:    }28  %t0 = getelementptr i8, ptr %p, i32 %x29  store i8 255, ptr %t0, align 430  ret void31}32 33define void @store_io_i8(i32 %x) nounwind {34; CHECK-LABEL: store_io_i8:35; CHECK:       // %bb.0:36; CHECK-NEXT:    {37; CHECK-NEXT:     r1 = #25538; CHECK-NEXT:     jumpr r3139; CHECK-NEXT:     memb(r0+##var_i8) = r1.new40; CHECK-NEXT:    }41  %t0 = getelementptr [10 x i8], ptr @var_i8, i32 0, i32 %x42  store i8 255, ptr %t0, align 443  ret void44}45 46define void @store_ur_i8(i32 %x) nounwind {47; CHECK-LABEL: store_ur_i8:48; CHECK:       // %bb.0:49; CHECK-NEXT:    {50; CHECK-NEXT:     r1 = #25551; CHECK-NEXT:     jumpr r3152; CHECK-NEXT:     memb(r0<<#2+##var_i8) = r1.new53; CHECK-NEXT:    }54  %t0 = shl i32 %x, 255  %t1 = getelementptr [10 x i8], ptr @var_i8, i32 0, i32 %t056  store i8 255, ptr %t1, align 457  ret void58}59 60@var_i16 = global [10 x i16] zeroinitializer, align 861 62define void @store_imm_i16(ptr %p) nounwind {63; CHECK-LABEL: store_imm_i16:64; CHECK:       // %bb.0:65; CHECK-NEXT:    {66; CHECK-NEXT:     jumpr r3167; CHECK-NEXT:     memh(r0+#0) = #-168; CHECK-NEXT:    }69  store i16 65535, ptr %p, align 470  ret void71}72 73define void @store_rr_i16(ptr %p, i32 %x) nounwind {74; CHECK-LABEL: store_rr_i16:75; CHECK:       // %bb.0:76; CHECK-NEXT:    {77; CHECK-NEXT:     r2 = ##6553578; CHECK-NEXT:     jumpr r3179; CHECK-NEXT:     memh(r0+r1<<#1) = r2.new80; CHECK-NEXT:    }81  %t0 = getelementptr i16, ptr %p, i32 %x82  store i16 65535, ptr %t0, align 483  ret void84}85 86define void @store_ur_i16(i32 %x) nounwind {87; CHECK-LABEL: store_ur_i16:88; CHECK:       // %bb.0:89; CHECK-NEXT:    {90; CHECK-NEXT:     r1 = ##6553591; CHECK-NEXT:     memh(r0<<#1+##var_i16) = r1.new92; CHECK-NEXT:    }93; CHECK-NEXT:    {94; CHECK-NEXT:     jumpr r3195; CHECK-NEXT:    }96  %t0 = getelementptr [10 x i16], ptr @var_i16, i32 0, i32 %x97  store i16 65535, ptr %t0, align 498  ret void99}100 101@var_i32 = global [10 x i32] zeroinitializer, align 8102 103define void @store_imm_i32(ptr %p) nounwind {104; CHECK-LABEL: store_imm_i32:105; CHECK:       // %bb.0:106; CHECK-NEXT:    {107; CHECK-NEXT:     jumpr r31108; CHECK-NEXT:     memw(r0+#0) = #-1109; CHECK-NEXT:    }110  store i32 4294967295, ptr %p, align 4111  ret void112}113 114define void @store_rr_i32(ptr %p, i32 %x) nounwind {115; CHECK-LABEL: store_rr_i32:116; CHECK:       // %bb.0:117; CHECK-NEXT:    {118; CHECK-NEXT:     r2 = #-1119; CHECK-NEXT:     jumpr r31120; CHECK-NEXT:     memw(r0+r1<<#2) = r2.new121; CHECK-NEXT:    }122  %t0 = getelementptr i32, ptr %p, i32 %x123  store i32 4294967295, ptr %t0, align 4124  ret void125}126 127define void @store_ur_i32(i32 %x) nounwind {128; CHECK-LABEL: store_ur_i32:129; CHECK:       // %bb.0:130; CHECK-NEXT:    {131; CHECK-NEXT:     r1 = #-1132; CHECK-NEXT:     jumpr r31133; CHECK-NEXT:     memw(r0<<#2+##var_i32) = r1.new134; CHECK-NEXT:    }135  %t0 = getelementptr [10 x i32], ptr @var_i32, i32 0, i32 %x136  store i32 4294967295, ptr %t0, align 4137  ret void138}139 140